线性回归(Linear Regression)算法

  • 一、对于回归的理解
    • 1、回归的定义
    • 2、多元线性回归
    • 3、广义线性回归
  • 二、线性回归方程的求解
    • 1、一般情况下为什么要用最小二乘法作为性能度量而不是最小绝对值法(最小一乘法)?
    • 2、线性回归的优化方法
      • 梯度下降法(Gradient Descent)
      • 最小二乘法矩阵求解、正规方程法(Normal Equation)
      • 牛顿法
      • 拟牛顿法
  • 三、回归模型性能度量指标
    • 1、线性回归损失函数、代价函数、目标函数
    • 2、经验风险、期望风险、结构风险
  • 四、python实现线性回归算法
    • 0、生成数据
    • 1、先尝试调用sklearn的线性回归模型训练数据
    • 2、最小二乘法的矩阵求解
    • 3、梯度下降法

一、对于回归的理解

回归是统计学中最有力的工具之一。机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型、连续性而定义的。顾名思义,分类算法用于离散型分布预测,如KNN、决策树、朴素贝叶斯、adaboost、SVM、Logistic回归都是分类算法;回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。
回归的目的就是建立一个回归方程用来预测目标值,回归的求解就是求这个回归方程的回归系数。预测的方法当然十分简单,回归系数乘以输入值再全部相加就得到了预测值。

1、回归的定义

回归最简单的定义是,给出一个点集D,用一个函数去拟合这个点集,并且使得点集与拟合函数间的误差最小,如果这个函数曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归。

2、多元线性回归

假定预测值与样本特征间的函数关系是线性的,回归分析的任务,就在于根据样本X和Y的观察值,去估计函数h,寻求变量之间近似的函数关系。定义:

其中,n = 特征数目;
xj = 每个训练样本第j个特征的值,可以认为是特征向量中的第j个值。
为了方便,记x0= 1,则多变量线性回归可以记为:
,(θ、x都表示(n+1,1)维列向量)

Note:注意多元和多次是两个不同的概念,“多元”指方程有多个参数,“多次”指的是方程中参数的最高次幂。多元线性方程是假设预测值y与样本所有特征值符合一个多元一次线性方程。

3、广义线性回归

广义的线性函数:

wj是系数,w就是这个系数组成的向量,它影响着不同维度的Φj(x)在回归函数中的影响度,Φ(x)是可以换成不同的函数,这样的模型我们认为是广义线性模型,Φ(x)=x时就是多元线性回归模型。逻辑回归就是一个广义的线性回归。

二、线性回归方程的求解

假设有连续型值标签(标签值分布为Y)的样本,有X={x1,x2,…,xn}个特征,回归就是求解回归系数θ=θ0, θ1,…,θn。那么,手里有一些X和对应的Y,怎样才能找到θ呢?在回归方程里,求得特征对应的最佳回归系数的方法是最小化误差的平方和,这里的误差是指预测y值和真实y值之间的差值,采用平方误差(最小二乘法)。平方误差可以写做:

1、一般情况下为什么要用最小二乘法作为性能度量而不是最小绝对值法(最小一乘法)?

首先最小二乘法不永远是最优的方法。对于一般情况下我们认为最小二乘法为较优的度量方式

两者的定义公式

从极大似然估计分析(概率角度的诠释)

多方面分析:

相比于最小绝对值法,最小二乘法有以下的优点:

  • 1、最优解唯一。 对于最小二乘法而言,只要自变量不是多重共线性的,解就是唯一的。但是对于最小绝对值法却不是固定的。举例而言,如果我们没有任何自变量(x),而只用截距去回归。最小二乘法会用平均值作为预测值,而最小绝对值法会得出中位数,而中位数往往是不唯一的。例如当数据是两个点:0和2时,最小二乘法会用1作为预测值,但是最小绝对值法会用0~2的任意值作为预测值。
  • 2、求解方便。 对于最小二乘法而言,由于误差项是处处可导而且导数连续的,所以我们可以写出求解的等式。但是对于最小绝对值法而言,由于在原点不可导,所以求解会比较复杂。而且由于导数相对恒定(正误差始终为1,负误差始终为-1),所以最小绝对值法求解也会有导数过大的问题。
  • 3、有好的解析性质。 最小二乘法在正态分布假设下可以用极大似然估计(MLE)解释,也可以证明解是最优线性无偏估计。

但之所以最小绝对值法也会被使用的原因,主要是最小二乘法的一个大缺点:受异常值扰动影响大。 正因为最小二乘法会将误差开平方,所以当某个预测值和真实值差别过大的时候,最小二乘法会愿意“牺牲”其他本来预测不错的数据点,调节模型使得过差的数据点变得更好一些。在工业界中,常常会因为数据品质的问题,数据集中被混入极端值被影响。而最小绝对值法认为单个大误差无所谓,它只在乎误差绝对值的和。因此,在数据存在异常值的时候,最小二乘法不是一个较好的解法。

结合两种方法——Huber Loss
在我们比较完两者的优劣,你可能意识到:最小二乘法的缺点主要是对于大误差会极度放大它的影响。那我们能不能结合最小二乘法和最小绝对值法,得到一个综合两个优点的方法呢?因此,Huber Loss (SMAE, Smoothed MAE)被提出来,它划定了一个范围delta,当误差小于delta的时候,用最小二乘的方法去算误差,当误差大于delta的时候,用最小绝对值法。用数学方式可表达如下:

但是这种方法的一大问题就是我们引入了另一个另一个未知参数delta。为了确定最优的delta,我们还需要尝试不同的参数来确定delta的选取。在此就不做展开了。

总结:

  • 最小二乘法不永远是最优的方法。对于不同数据形式和建模需求,需要能自行选择合适的建模方式。
  • 相比于最小绝对值法,最小二乘法的优点在于最优解唯一、求解方便和有好的解析性质,但缺点在于受异常值扰动影响大。
  • Huber Loss (SMAE, Smoothed MAE)结合最小二乘法和最小绝对值法的优点,但引入了另一个另一个未知参数delta。
  • 线性回归还有许多问题不能被最小二乘法或最小绝对值法解决。线性回归里没有一个永远最优的方法。

2、线性回归的优化方法

梯度下降法(Gradient Descent)

设定初始参数θ,不断进行迭代,使得J(θ)最小化:


即:


注:下标j表示的是第j个参数,上标i表示的是第i个数据点。
把所有的参数用向量形式表示,可以得到:

由于在这个方法中,参数在每一个数据点上同时进行了移动,所有被称为批梯度下降法,相应地,我们也可以每一次让参数只针对一个数据点进行移动,即:

这个算法被称为随机梯度下降法,随机梯度下降法的好处是:当数据点很多的时候,运行效率更高;缺点是:因为每次只针对一个样本更新参数,所以未必能找到最快路径达到最优值,甚至有的时候会出现参数在最小值附近徘徊而不是立即收敛。但是,当数据量很大的时候,随机梯度下降法经常会优于批梯度下降法。

当J为凸函数的时候,梯度下降法相当于让参数θ不断向J的最小值位置移动。

梯度下降法的缺陷是:如果函数为非凸函数的时候,有可能找到的不是全局最优值,而是局部最优值。

最小二乘法矩阵求解、正规方程法(Normal Equation)

令:


其中,


由于,

hθ(x)可以写成:

对于向量来说,有:

所以,可以把损失函数写作:

为最小化J(θ),对θ求导可以得到:

中间两项互为转置,由于求得的值是个标量,矩阵和转置相同,所以可以写成:

令偏导数等于零,由于最后一项和θ无关,偏导数为0。
所以:
利用矩阵求导性质:

令导数等于零,得:

牛顿法


通过上图可知:


重复迭代,可以让逼近取到f(θ)的最小值。

当我们对损失函数l(θ)进行优化的时候,实际上是想要取到 L’(θ) 的最小值,因此迭代公式为:


当θ时向量值的时候,

其中, Δ

机器学习经典算法---线性回归(Linear Regression)算法相关推荐

  1. 多元线性回归算法: 线性回归Linear Regression、岭回归Ridge regression、Lasso回归、主成分回归PCR、偏最小二乘PLS

    0. 问题描述 输入数据:X=(x1,x2,....,xm)\mathbf{X} = (x_1, x_2,...., x_m)X=(x1​,x2​,....,xm​), 相应标签 Y=(y1,y2,. ...

  2. 机器学习-多元线性回归(Multiple Regression)算法

    学习彭亮<深度学习基础介绍:机器学习>课程 与简单线性回归区别 简单线性回归:一个自变量(x) 多元线性回归:多个自变量(x) 多元回归模型 y=β0+β1x1+β2x2+ - +βpxp ...

  3. Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”

    Coursera公开课笔记: 斯坦福大学机器学习第四课"多变量线性回归(Linear Regression with Multiple Variables)" 斯坦福大学机器学习第 ...

  4. Coursera公开课笔记: 斯坦福大学机器学习第二课“单变量线性回归(Linear regression with one variable)”

    Coursera公开课笔记: 斯坦福大学机器学习第二课"单变量线性回归(Linear regression with one variable)" 发表于 2012年05月6号 由 ...

  5. Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

    本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学 ...

  6. Ng第二课:单变量线性回归(Linear Regression with One Variable)

    二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 2.4  梯度下降 2.5  梯度下 ...

  7. 机器学习方法:回归(一):线性回归Linear regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...

  8. 复盘:手推LR(逻辑回归logistics regression),它和线性回归linear regression的区别是啥

    复盘:手推LR(逻辑回归logistics regression),它和线性回归linear regression的区别是啥? 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学 ...

  9. 线性回归 Linear Regression 与逻辑回归 Logistic Regression

    1 线性回归 Linear Regression 理论 线性回归模型研究多个变量x与y之间的关系,通过回归模型预测位置样本的数据. 假设函数 损失函数 损失函数寻优,最小二乘法 即: 注:最小二乘法需 ...

  10. 线性模型|| 线性回归(Linear Regression)

    目录: 一.线性模型概念 二.LR算法直观原理 三.Python代码实现算法 (notice: 1)公式中,字母粗体以示向量 2)本文中LR指代Linear Regression,而非Logistic ...

最新文章

  1. 前后端分离 集群负载均衡 分布式 微服务
  2. (1 24) 3 java代码_算24点 java代码
  3. 如何成为一名数据中心运营工程师?
  4. Git本地仓库文件的创建、修改和删除
  5. 宁波Uber优步司机奖励政策(12月14日到12月20日)
  6. Android onLoadFinished与onLoaderReset
  7. Qt creator5.7 OpenCV249之resize函数(含源码下载)
  8. 白话设计模式--行为型模式--Template Method模式(模板方法模式)
  9. python中的条件判断稀硫酸_大学mooc2020用Python玩转数据期末考试查题公众号答案...
  10. 四年级计算机上册课程标准,新课程标准人教版四年级上册数学全册教案设计
  11. 计算机辅助翻译实践总结,trados计算机辅助翻译实践报告材料
  12. 关于vscode打感叹号无法输出html模板的解决方法
  13. Linux系统中三处profile的作用
  14. windows 7 数据执行保护 开启关闭方法
  15. linux挂载光盘的命令,linux下挂载(mount)光盘镜像文件、移动硬盘
  16. 如何完整保存离线网页
  17. MT【299】对数型数列不等式
  18. 【HDU3292】数学_佩尔方程
  19. 计算机组装与维修选择题大全,计算机组装与维修试题精选答案.跪求.
  20. node之request模块

热门文章

  1. 记一次任意用户密码重置漏洞(session覆盖)
  2. 小程序流量主怎么赚钱?小程序流量主怎么变现?
  3. Token登录验证(附图)
  4. RTC实时时钟原理+BKP寄存器
  5. [附源码]SSM计算机毕业设计领导干部听课评课管理系统JAVA
  6. 矩阵旋转(逆时针九十度
  7. ubuntu1404 安装 ppsspp
  8. 分享111个HTML艺术时尚模板,总有一款适合您
  9. 树莓派Zero (w)上手记录
  10. Elasticsearch 使用java分页查询条数超过1w的解决办法 -search_after方式