线性回归

python机器学习-线性回归(LinearRegression)算法 用python进行线性回归分析非常方便,如果看代码长度你会发现真的太简单。但是要灵活运用就需要很清楚的知道线性回归原理及应用场景。现在我来总结一下用python来做线性回归的思路及原理。 线性回归应用场景 线性回归介绍 机器学习中的线性回归 简单的线性回顾实例 线性回归应用场景 线性回归介绍 ——线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系... 阅读详情

(本文内容来自Andrew NG公开课,首先介绍线性回归模型及求解方法,最后展示实际例子说明问题)

线性回归是监督学习中的一种,数学表述为:数据集中有若干训练数据,对于每个输入特征 x(i) ,有对应输出变量 y(i) 。我们期望学习一种映射表达 y=h(x) ,使得对于训练集之外的特征也能够较好地预测其输出值。

如果预测值为连续值,这种问题被称为回归问题;而预测值为离散值,则这种问题被称为分类问题。

我们来列举一个简单的回归案例,假设数据特征有两个维度, x= {living area,bedrooms},对应房价为输出数据,如下图所示。我们希望建立模型 h(x) ,当给定其他(Living area, bedrooms)数据时,可以预测出对应房型应该支付的房价数额。

这里写图片描述

1.1 线性回归
线性回归是指使用线性模型对数据进行预测。如果特征 x 有n个特征维度, xi 表示特征 x 的第i 个特征分量。则线性回归模型 hθ(x) 为

hθ(x)=∑i=0nθixi=θ0x0=θ1x1+⋯+θnxn=θTx

其中, x0=1 。考虑,如果我们知道了预测方程 hθ(x) , 那么对于任意一个特征,我们就可以根据已知的线性模型推测输出值了。那么这样,问题就转变为如何求线性模型 h(x) ,也就是如何求解 h(x) 的参数 θ 。

考虑采用最小二乘方法,即使得预测值和真实值之间的误差和最小,即,

J(θ)=12∑i=1m(hθ(x(i))−y(i))2

其中,训练集个数为 m 个,x(i)表示第 i 个训练数据。

我们期望求解的参数θ 能够使cost function J(θ) 最小。这里介绍两种方法求解该问题:Gradient Descent和Normal Equation。

1.2 Gradient Descent
梯度下降法求解回归方程的参数使得cost function最小的基本思路是:赋予初始 θ 值,并根据下面公式逐步更新 θ 使得 J(θ) 不断减少,最终至收敛,对应的参数 θ 即为解。 θ 的每个分量更新公式为,

θj←θj−α∂∂θjJ(θ)

在更新参数 θ 的过程中,我们其实是每次沿着梯度下降的方向按照 α 速度下降,直至达到整个函数的局部(全局)最优点,下图就很好的展示了这个过程。

这里写图片描述

接下来介绍参数更新公式的推导,为了推导方便,首先研究只有一个训练样本时,如何计算推导公式。

这里写图片描述

所以,对于单一训练数据而言,模型参数梯度下降的更新公式为,

θj←θj+α(y−hθ(x))xj,j=0,⋯,n

推广至 m 个训练数据,参数更新公式为,
Repeat until convergence{ θj←θj+α1m∑mi=1(y(i)−hθ(x(i)))x(i)j for every j}

1.2 Normal Equation
Normal Equation是直接使用矩阵 X 表示特征数据,y⃗  表示输出数据, θ 表示线性方程参数矩阵。将cost function转换为矩阵表达,通过对参数 θ 求导为零,得到的 θ 即为使得cost function 最小的线性方程参数。

矩阵表达及参数推导公式如下,

X=⎡⎣⎢⎢⎢⎢⎢⋯⋯⋯(x(1))T(x(2))T⋯(x(m))T⋯⋯⋯⎤⎦⎥⎥⎥⎥⎥y⃗ =⎡⎣⎢⎢⎢⎢y(1)y(2)⋯y(m)⎤⎦⎥⎥⎥⎥θ=⎡⎣⎢⎢⎢⎢θ(1)θ(2)⋯θ(m)⎤⎦⎥⎥⎥⎥

特征数据每一条数据占一行,每一列表示一个特征维度。cost function 表达为,
J(θ)=12∑i=1m(hθ(x(i))−y(i))2=12∑i=1m((x(i))Tθ−y(i))2=12(Xθ−y⃗ )T(Xθ−y⃗ )

cost function相对于参数 θ 求导公式为(推导公式中引用部分矩阵公式,具体参见Andrew NG课件,此处省略)

这里写图片描述

导数为0,可以得到normal equation公式为,

XTXθ=XTy⃗ 

因此,参数 θ 的矩阵表达为,
θ=(XTX)−1XTy⃗ 

1.3 Gradient Descent和Normal Equation的比较

1.当特征向量不同维度的范围差异较大时,会导致椭圆变得很窄很长,而出现梯度下降困难的问题。而使用Normal Equation是可以不管特征的scale的。(参考1.4部分)

2.相比于Gradient Descent, Normal Equation需要大量的矩阵运算,尤其是矩阵的逆运算,在矩阵很大的情况下,会大大增加计算复杂性。Andrew Ng建议特征维度小于10,000时用Normal Equation,大于10,000时改用Gradient Descent方法。

3.Normal Equation存在不可逆的情况,如:特征向量维度大于特征数量时( n≥m )或者当特征向量不同维度之间存在冗余信息。

1.4 特征缩放(feature scaling)
当特征不同维度之间数值取值范围差异性较大时,梯度下降过程会变得非常缓慢。例如x有两个特征维度,分别表示房屋的面积,取值范围为0-2000,以及房间个数,取值范围为1-5。这两个维度特征的取值规模不在同一个范围内,使用梯度下降时,收敛不快,且容易发生波动。所以在使用梯度下降前,需要将不同维度的特征约束至大致范围内。如,

load('ex3x.dat');
load('ex3y.dat');

m = size(ex3x, 1);
n = size(ex3x, 2) + 1;

x = [ones(m, 1) ex3x];
y = ex3y;

% scaling
mu = mean(x, 1);//均值
sigma = std(x, 1);//方差
for j = 2:n
   x(:,j) = (x(:,j) - mu(j))./sigma(j); 
end

1.5线性回归案例
案例:特征数据 X 表示小男孩的年龄,范围在2-8岁之间,输出变量y⃗  为每个小男孩的高度,共50个样本。求线性回归模型 h(x) 。
Matlab源代码为

%载入数据
x = load('ex2x.dat');
y = load('ex2y.dat');

%绘制数据
figure;
plot(x, y, 'o');
ylabel('Height in meters')
xlabel('Age in years');

%add x0=1
m = size(x, 1);
n = size(x, 2) + 1;
x = [ones(m, 1) x];

alpha = 0.07;
max_iter = 1500;

%iteratively train linear model parameters theta_0 and theta_1
theta = zeros(n, 1);

%first iteration
h = x*theta;
cost_function_pre = sum((h - y).*(h - y),1)/(2);

for j = 1:n
    dif = y - h;
    theta(j, 1) = theta(j, 1) + alpha * sum(dif.* x(:, j), 1)/m;
end

% second iteration
h = x*theta;
cost_function = sum((h - y).*(h - y),1)/(2);

thred = 0.00001;
iters = 2;
while(abs(cost_function - cost_function_pre) >= thred && iters < max_iter)
    iters = iters + 1;
    fprintf([num2str(iters) '; cost function:' num2str(iters) '\n']);

    % compute theta according to Gradient Descent
    for j = 1:n
        dif = y - h;
        theta(j, 1) = theta(j, 1) + alpha * sum(dif.* x(:, j), 1)/m;
    end

    cost_function_pre = cost_function;

    % compute cost function
    h = x*theta;
    cost_function = sum((h - y).*(h - y),1)/(2);
end

hold on;
plot(x(:,2), x*theta,'-');
legend('Training Data','Linear regression');

结果展示
这里写图片描述

最终求得的参数 θ=[0.73900.0659]T 。接下来,对新数据age = 3.5进行预测,带入已求得的线性模型,可知高度y = 0.9697,在图中的位置为红色圈表示。

使用Normal Equation计算较为简单,这里不再赘述。

请参考链接:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex2/ex2.html

用人话讲明白线性回归LinearRegression 目录 什么是回归 一元线性回归 损失函数 最小二乘估计 小结 1. 什么是回归 当我们学习一门新课程、接触一个新专业时,总会对该领域的专有名词感到困惑,甚至看完解释仍难以理解其含义。在我们一起学习machine learning的过程中,我会尽量对相关名词用“人话”做一遍解释,以减少学习的“痛苦感”。 譬如今天要学的线性“回归”,这个回归(regression)和我们平时说的“回归祖国”的回... 阅读详情

相关推荐

python-使用LinearRegression进行简单线性拟合(线性回归)

一元线性拟合 现有两组数据,求y=a*x+c的系数 X =[12.46, 0.25, 5.22, 11.3, 6.81, 4.59, 0.66, 14.53, 15.49, 14.43, 2.19, 1.35, 10.02, 12.93, 5.93, 2.92, 12.81, 4.88, 13.11, 5.8] Y =[29.01, 4.7, 22.33, 24.99, 18.85, 14.89, 10.58, 36.84, 42.36, 39.73, 11.92, 7.45, 22.

lanhezhong的博客 3万+

线性回归模型讲解(Linear Regression)

这些实例展示了线性回归在不同领域中的应用,通过收集和分析数据,可以建立线性回归模型来预测和解释变量之间的关系,为决策提供支持。因此我们可以推断这个函数是y = kx+b,(x,y)是样本点,也就是已知的,w是权重值,y的预测值。𝐿 是受 𝑘,𝑏 值影响的, 𝑘,𝑏 取不同的值, 𝐿 就会变化, 𝐿 也叫损失函数,loss。有了初始值后的 𝑦=0.5𝑥+0.5 ,如何 衡量 𝑘=0.5,𝑏=0.5 是最佳的值呢?取上面 (𝑥,𝑦) 的一对值,比如 𝑥=−10.0,𝑦=−19.3。

m0_73731663的博客 2592

【机器学习小论文】sklearn线性回归LinearRegression代码及调参

一、前言 最近在写小论文,就是硕士毕业论文的部分成果,需要用到线性回归,所以就把相关代码贴上,便于日后写论文时总结,也顺便给后来者提供思路。小论文的思路主要是,先用线性回归,再用随机森林,最后再用xgboost,来预测房价,最后得出结论。所以,这个会陆续的贴出相关代码。至于数据清洗那一块,暂时不贴上了,主要原因就是数据清洗不容易,并且每个人的清洗方法也不一样,所以主要还是看思路。 二、算法简介 2.1 什么是回归分析 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关

xiaohutong1991的专栏 7107

python离散点的线性回归方程_讨论8种在Python环境下进行简单线性回归计算的算法...

对于大多数数据科学家而言,线性回归方法是他们进行统计学建模和预测分析任务的起点。但我们不可夸大线性模型(快速且准确地)拟合大型数据集的重要性。如本文所示,在线性回归模型中,「线性」一词指的是回归系数,而不是特征的degree。特征(或称独立变量)可以是任何的degree,甚至是超越函数(transcendentalfunction),比如指数函数、对数函数、正弦函数。因此,很多自然现象可以通过这...

weixin_39976153的博客 898

线性回归笔记spss和LinearRegression

H0,H1假设概念理解: ·常规理解: 在假设H0实际上为真时,我们可能犯拒绝H0的错误,称这类“弃真”的错误为第一类错误;当H0实际上不真时,我们也有可能接受H0,称这类错误为第二类错误。 一般来说,我们总是控制第一类错误,使犯第一类错误的概率尽可能小。称为“显著性检验” 这里的显著性是指只有当H0成立时,显著不合理的状态才能拒绝H0,否则只能“接受”H0,这里的接受是指不拒绝H0,原因是由于没有获得充分的理由拒绝H0而“勉强”接受。因此,使用显著性检验时,当检验结果为拒绝H0时,结论比较可靠,更具有说服

weixin_45181646的博客 2010

线性回归LinearRegression

对视频中线性回归算法的相关内容进行总结与记录 文章目录一、理论基础二、实例2.1 一元线性回归2.1.1 推导过程2.1.2 代码实现(基于numpy)2.1.3 代码实现(基于sklearn)2.2 多元线性回归2.2.1 代码实现(基于numpy)2.2.2 代码实现(基于sklearn) 一、理论基础 回归 通常是指利用某个函数,尽可能把数据样本点“串”在一起,用于描述输入变量和输出变量间的变化关系 线性回归 特点:用来把数据“串”起来的那个函数是线性的 (一元线性回归(一个自变量) &a.

邱邱邱的博客 1066

机器学习-初级入门(回归算法-多种线性回归算法详解)

一、简单线性回归 基本公式 根据假设条件推出损失函数 所有样本独立同分布(iid),且误差项服从以下分布: 用最小二乘法与以上假设的关系推导如下: 使用MLE(极大似然法)估计参数如下: ...

小小龙的博客 1023

线性回归 sklearn.linear_model.LinearRegression

线性回归 sklearn.linear_model.LinearRegression sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None) Parameters(参数):      fit_intercept ...

weixin_41798592的博客 1232

机器学习:线性回归、局部加权线性回归、岭回归、前向逐步回归

所谓回归,简单来讲就是根据现有数据拟合出函数,然后根据该函数进行一些预测工作。分类的输出是标称型,而回归的输出为数值型。接下来介绍几种常见的全局型回归方法一. 线性回归(Linear Regression)对于二维数据而言,线性回归就是找出一个一次函数去拟合数据,使得平方误差最小。是的,这里的损失函数是平方损失。平方误差可以写做:∑im=(yi−xTiw)2\sum^m_i=(y_i-x_i^Tw)

EastCarFxx Blog 5157

sklearn机器学习:线性回归LinearRegression

LinearRegression类格式 sklearn.linear_model.LinearRegression (fit_intercept=True, normalize=False, copy_X=True, n_jobs=None) 参数 fit_intercept 布尔值,可不填,默认为True 是否计算此模型的截距。如果设置为False,则不会计算截距 normalize 布尔值,...

The Zen of Data Analysis 1095

【PyTorch版本兼容性指南】如何在不同版本中正确使用torch.nn.attention

本文详细解析了PyTorch版本兼容性问题,特别是torch.nn.attention模块在不同版本中的使用差异。针对常见的ModuleNotFoundError错误,提供了三种实用解决方案:升级PyTorch版本、使用自定义实现和源码移植方案,并分享了最佳实践建议,帮助开发者有效避免兼容性问题。

weixin_29084231的博客 471

【机器学习经典算法梳理】一.线性回归

【机器学习经典算法梳理】是一个专门梳理几大经典机器学习算法的博客。我在这个系列博客中,争取用最简练的语言、较简洁的数学公式,和清晰成体系的提纲,来尽我所能,对于算法进行详尽的梳理。【机器学习经典算法梳理】系列博客对于机器学习算法的梳理,将从“基本思想”、“基本形式”、“过程推导”、“损失函数”、“sklearn库的参数含义”和“总结”几个方面去进行。下面,就让我开始第一个算法,线性回归吧! ...

谁谓荼苦,其甘如荠 1437

Matlab Copula函数实战:从金融风控到数据建模的5个应用场景

本文深入探讨了Matlab Copula函数在金融风控与数据建模中的五大实战应用场景,包括投资组合风险价值计算、信用违约相关性建模、跨市场套利策略优化等。通过具体代码示例和数据分析,展示了Copula模型在捕捉复杂依赖关系方面的优势,为金融风险管理和量化分析提供实用工具。

weixin_29090677的博客 425

4.机器学习-十大算法之一线性回归算法(LinearRegression)案例讲解

线性回归是一种用于预测数值型数据的统计学分析方法,它通过建立一个或多个自变量与因变量之间的线性关系来进行预测。线性回归的基本思想是通过拟合最佳直线(也就是线性方程),来描述自变量和因变量之间的关系。这条直线被称为回归线,其目的是使得所有数据点到这条直线的垂直距离(即残差)的平方和最小。这个最小化过程通常称为最小二乘法。以山河作礼。🎖️🎖️:Python领域新星创作者,优快云实力新星认证,优快云内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。💕💕悲索之人烈焰加身,堕落者不可饶恕。

weixin_50804299的博客 1万+

Zemax操作16--激光谐振腔(含晶体)

谐振腔(含晶体)

lzy750750的博客 8312

第8章 Stata主成分分析与因子分析

在进行数据统计分析时,还往往会遇见变量特别多的情况,而且很多时候这些变量之间还存在着很强的相关关系或者说变量之间存在着很强的信息重叠,如果我们直接对数据进行分析,一方面会带来工作量的无畏的加大,另一方面还会出现一些模型应用的错误,于是主成分分析与因子分析应运而生。这两种分析方法的基本思想都是在不损失大量信息的前提下,利用较少的独立变量来替代原来的变量进行进一步的分析。 8.1主成分分析 基本思想是将众多的初始变量整合成少数几个互相无关的主成分变量,而这些新变量尽可能地包含...

qq_45112156的博客 5万+

线性回归:LinearRegression模型

LinearRegression` 是一种简单而有效的方法,适用于线性关系的建模。`scikit-learn` 提供了易于使用的 API,非常适合于快速构建和评估线性回归模型。无论是初学者还是专业人士,都可以依赖这个工具来处理回归问题。

Wei_sx的博客 1261

嵌入式开发面试题全解析:指针、内存、数据类型关键问题总结

本文对嵌入式开发典型面试题进行深度解析,涵盖多方面关键知识。题目 19 揭示字符指针修改字符串常量的错误操作;题目 20 展现strcpy引发的缓冲区溢出风险;题目 21 体现未初始化数组与strlen结合的不可预测性;题目 22 通过位域与对齐规则计算结构体大小;题目 23 因unsigned char溢出导致循环异常。这些题目全面覆盖指针操作、内存管理、数据类型特性等核心内容,精准指出开发中易疏忽的陷阱,有助于理解编程规范,规避风险,提升代码质量与稳定性,是深入掌握嵌入式开发要点的实用指南。

嵌入式中手 1364

线性回归(LinearRegression)实现房价预测

线性回归主要运用于来连续型特征样本的预测,本次预测数据主要以波士顿房价数据为列训练并评估模型。本次使用基本的最小二乘法和sklearn模块分别用于预测房价。 1、首先使用线性回归算法最小二乘法实现预测 导入需要的python库 import numpy as np import pandas as pd import pylab 建立computer_error函数,构造误差函数 ∑_(...

飛鹰 1万+

《哥谭神话-工程篇》02.Palantir的Ontology层(语义层) -企业操作系统的大脑

Ontology(语义层) 是Foundry 的核心层。Ontology 位于集成到 Foundry 中的数字资产(数据集和模型)之上,并将其连接到现实世界的对应物,从工厂、设备和产品等物理资产到客户订单或金融交易等概念。本篇将详细拆解Ontology(语义层)。

879

基于STM32的智能婴儿床控制系统设计(手机APP+蓝牙无线控制)(210)

项目充分运用先进的嵌入式技术和物联网理念,打造出一款集安全性、便利性、舒适性于一体的智能婴儿床控制系统,旨在减轻育儿负担,提高育儿效率,保障婴幼儿健康成长,满足现代家庭对高品质育儿生活的追求。

3476

python LinearRegression线性回归

两个变量之间存在一次方函数关系,就称它们之间存在线性关系。更通俗一点讲,如果把这两个变量分别作为点的横坐标与纵坐标,其图象是平面上的一条直线,则这两个变量之间的关系就是线性关系。

zj88189748的专栏 2155

【技能】OpenClaw Skills学习及手搓一个极简skill

本文介绍了OpenClaw Skills的基础概念与使用方法。Skills是OpenClaw代理使用工具的核心载体,通过SKILL.md文件定义技能属性和执行方式。技能加载遵循"工作区>本地>内置>自定义目录"的优先级规则。用户可通过ClawHub一键安装现成技能,也可自定义开发技能:创建技能目录,编写包含YAML元数据和执行指令的SKILL.md文件,放置于工作区skills目录进行测试。文章还介绍了多代理场景下的技能共享、插件集成以及安全注意事项,包括沙箱使用和敏感

海兰 3974

线性回归之——LinearRegression、Ridge、Lasso基本用法

文章目录线性回归(LinearRegression)——参数及方法岭回归(Ridge)——参数及方法 线性回归(LinearRegression)——参数及方法 sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None) 参数: fit_intercept...

门前大橋下丶 8620

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

05- 线性回归算法 (LinearRegression) (算法)

线性回归算法(LinearRegression)存在一定的误差符合正太分布求这个正太分布的最小均值和方差求误差的极小值。

March_A的博客 7153

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【sklearn学习】线性回归LinearRegression

多元线性回归指一个样本中有多个特征的线性回归问题 sklearn.linear_model.LinearRegression class sklearn.linear_model.LinearRegression(*, fit_intercept=True, normalize='deprecated', copy_X=True, n_jobs=None, positive=False) fit_intercept:默认为True,计算模型的截距 normalize 默认使False copy_X

qq_41807261的博客 5977

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: SIFT特征(五)
下一篇: 逻辑回归(Logistic Regression)
Fishmemory
博客等级 码龄10年 93粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值