首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法篇之线性回归

算法概述

从概念上讲线性回归是利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。光从概念上讲,很难理解具体是个怎么回事,下面通过详细解读,更好的理解线性回归。

关键词解读

线性

线性,准确的讲,应该叫做线性关系,指两个变量之间存在一次方函数关系,最简单的线性关系就是中学时学的一次方程,如:y=ax+b(x称作自变量,a成为系数,b称为常量(或者偏移量),y称为因变量),在这个函数关系中,我们可以说x和y之间存在一种线性关系,对应的表达式称为线性方程。对于多个自变量的情况则表达式称为多元线性方程。如果因变量和自变量之间的关系不是简单的一次方关系,比如y=x^2,则称y与x是一种非线性关系,今天不在我们的讨论范围。

回归

回归一词最早由达尔文的表兄弟Francis Galton发明的,Galton于1877年完成了第一次回归预测,目的是根据上一代豌豆种子(双亲)的尺寸来预测下一代豌豆种子(孩子)的尺寸,他注意到,如果双亲的高度比平均高度高,他们的子女也倾向于比平均高度高,但尚不及双亲。孩子的高度会向着平均高度回退(回归)。Galton在多项研究上都注意到了这个现象,所以尽管这个英文单词(regression)跟数值预测没有任何关系,但这种研究方法仍被称作回归。也就是根据输入值,通过一定的函数关系,对输出值做出预测。当预测值(目标值)为连续的时候我们称之为回归,当预测值为离散的时候我们称之为分类。

高斯分布

高斯分布是一种概率分布,也称正态分布,是具有两个参数μ和σ^2的连续型随机变量的分布,第一参数μ是遵从正态分布的随机变量的均值,第二个参数σ^2是此随机变量的方差,所以正态分布记作N(μ,σ^2 )。σ越小,分布越集中在μ附近,σ越大,分布越分散。在线性回归中我们稍后会用到μ=0,σ=1的标准高斯分布,也是最常用的一种高斯分布。鉴于高斯分布的特点,当数据满足这样一种分布时,数据中大多数值会集中在y轴,也就说当把y轴看做一个标准数据的话,那么数据中的大多数会在标准数附件波动,与标准数差距越大的数,个数越少。这一点在稍后讲解线性回归方程求解中会有更深的体会。

矩阵

由于在机器学习的众多算法中,求解,计算,基本都会涉及到矩阵运算,这里我们也顺带把矩阵的知识再回顾一下。由m*n个数aij(i=1,2,...m;j=1,2,...n)排成的m行n列的数表,我们称之为矩阵。如下图所示。

矩阵在机器学习领域或者数理统计领域,最常用到的就是矩阵的乘法,具体规则如下图所示

此外,矩阵的转置,求逆,也比较常用,由于篇幅原因这里就不在赘述了,在我们后面的算法中遇到时会做逐一补充。

最大似然估计

似然估计的概念,小菜认为比较抽象,这里就不摆概念,从小菜理解的角度说一下似然函数。似然函数,从字面上讲,似然,其实就是近似,相近的意思,在我们数值预测中,经常会写一个目标函数,假设我们现有的数据是服从这个目标函数的,目标函数里的所有参数都是假定的,我们机器学习的目的就是通过我们已有的数据推算出这些参数,并依据这些参数对未知数据做出预测,而似然函数是什么,就是假设我们写的这个目标函数就是最佳函数,也就说未知数据是完全符合这个目标函数的,这个假设的函数就叫做似然函数,求解参数过程叫做最大似然估计。再通俗一点讲,似然估计,就是假设我们所有未知的数据,是和现有的数据都符合我们估计出来的这个参数所决定的目标函数,也就是由已知推导出未知的这种思想,称为最大似然估计。

梯度下降

梯度下降的原理比较简单,就是说当我们去求解一个问题时,可能并不能一步将问题解决,需要分步去做,而分步去做的时候要依照一种什么规则去分步,而这个分步的过程可以使得我们整个求解最优,这个过程叫做梯度下降。举一个简单例子,比如从山顶到山下的一个出口,会有很多路可以选,我们需要选择一条既能准确的到达出口,下山速度又快的路,寻找这条路的过程就叫做梯度下降。正如下图所示,步长太大,可能会跨过出口,步长太小,走的步数又太多,而我们梯度下降就是去解决这个问题,当每走一步,都去分析,接下来的一步该怎么走,让这一步最优,也就是将整个过程拆解,让每一步都是最优解,最后达到整体最优。

算法原理

应用举例

现在我们举一个简单例子,结合前面的关键词解读,更进一步的理解一下线性回归。假设现在我们要去银行贷一笔款,银行要根据我们的年龄x,收入y,去确定我们最终可以贷多少钱出来(也就是z),并且已知,贷款额和我们的年龄以及收入满足某一种线性关系,而我们作为非银行人员并不知道这种关系,现在我们要结合一些银行的历史放贷信息去推算一下我们自己可以贷多少款。现在假设我们的贷款额度和年龄,收入满足如下的一种线性关系:z=ax+by+c,对于式子中的x,y我们称之为特征,对于a,b我们称之为权重值,c我们称之为偏移量。在这里因为我们要推导出一个通用的公式来,在理解了各个变量以及参数的含义后,我们假设现实中你的贷款额度和你的n个特征存在着一种线性关系,同时因为偏移量为一个常数,这里为了计算简洁,我们假设偏移量为0,那么这个线性方程就可以表达为如下图所示(考虑排版的问题,文章中的所有公式将尽可能的采用图片格式):

目标函数求解

如上图所示,这个函数我们就称为目标函数,其中x就是上面提到的特征,而θ就是上面提到的权重值(既每一个特征值对应一个自己的权重值),目标函数列出来后下一步我们的主要任务就是根据已有的数据,去计算出对应的θ值。这里要提一点,我们求解θ值都是用已有的样本值,而假设所有数据是和已有样本值一样,都符合目标函数这一假设,则为最大似然估计。

求解:结合我们前面提到的矩阵乘法法则,把目标函数写作向量形式就是(矩阵的乘法):

其中x可以看成特征向量,θ看成是权重向量。我们的目标就是找出所有的θ值,进而出现新的x值时,可以对函数的输出进行估计。那我们如何求得使函数输出最接近样本的θ值呢?函数输出最接近样本值就意味着二者之差尽可能的小。我们假设输入的特征为

x1,x2……xn,对应的样本值为y1,y2……yn,,我们用模型估计出的值为,估计值与真实值之间的误差表示为

J(θ)称为损失函数,损失函数的自变量为θ,所以我们需要找到J(θ)最小时(也就是误差最小时)θ的取值。这里我们就要采用上面提到过的梯度下降算法求解该方程,将向量表达形式转为矩阵表达形式,则有

,其中X为m行n列的矩阵(m为样本个数,n为特征个数),θ为n行1列的矩阵,Y为m行n列的矩阵,对J(θ)进行如下变换

接下来对J(θ)求偏导,需要用到以下几个矩阵的求导法则

所以有

则有

这是在XTX可逆的前提下得到的,事实上存在XTX不可逆的情况,在此我们默认其是可逆的。可以根据公式直接求得θ的值,但是当X维度很高时矩阵求逆计算量非常大,这里就用到了我们上面提到过的梯度下降算法,整体思路如下

(1)先确定向下一步的步伐大小,我们称为Learning rate(也称为学习率);

(2)任意给定一个初始值:θθ1;

(3)确定一个向下的方向,并向下走预先规定的步伐,并更新θθ1;

(4)当下降的高度小于某个定义的值,则停止下降;

,具体算法如下

其中α既为所谓的学习率。在这部分内容主要着重线性回归的求解推到,梯度下降的算法后面会继续用到,针对不同的实际情况,会采用不同的梯度下降算法,这一点我们在后面具体的实践中会再进一步做详细介绍,这里你只需要知道梯度下降是为了提高我们求解效率而提出的一种最优化处理的方式。

总结

梯度下降分类对比

这里先简单对常用的几种梯度下降方法做一个简单普及,有一个初步的映像,后面我们会详细聊到这一块。

批量梯度下降:容易得到最优解,但由于每次考虑所有样本,速度较慢

随机梯度下降:每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向

小批量梯度下降法:每次更新选择一小部分数据来算,可以理解为上述两种的一个结合体

线性回归总结

线性回归一般适合由一些给定的输入值,去预测一个确定的输出值,也就是目标值。他的优点是易于理解,计算上不复杂,但是对于非线性的数据拟合效果较差,通常适用于数值型和标称型数据的分析。

线性回归的非回归应用

上面我们提到线性回归主要是用来对目标值的预测,还有一种回归,虽然也叫回归,但他的目的不是预测一个具体值,而是利用回归方程对结果进行分类,既逻辑回归(Logistic回归)。下周我们将重点讲解逻辑回归的基本概念。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180110G0WNMG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券