「05」回归的诱惑:一文读懂线性回归

前言

从这一篇文章开始,就正式进入「美团」算法工程师带你入门机器学习系列的正文了,以前的几篇算是导读和预热,想必你们看的并不过瘾。从这里开始,咱们将会以线性回归为起点,贯通回归方法在机器学习算法中所扮演的角色、具备的功能和使用的方法。算法

提及回归,它是咱们在高中时就接触过的内容。具体的,回归(Regression)是指研究一组随机变量(Y1 ,Y2 ,…,Yi)和另外一组随机变量(X1,X2,…,Xk)之间关系的统计分析方法,又称多重回归分析。一般Y1,Y2,…,Yi是因变量,X一、X2,…,Xk是自变量。因变量,就是指被影响、决定的变量,自己不参与运算,而自变量则是指自身发生变化、改变并参与运算,最终影响因变量的变量。这些内容都是高中学习过的基础,这里仅仅作个回顾,不深刻复习。机器学习

如今,让咱们先抛开机器学习、算法、模型这类名词,从最简单的线性回归来看看,到底什么是回归(的诱惑)ide

 

 

线性回归是什么?

咱们前面提到过,回归是计算因变量和自变量之间统计关系的一种方法。而线性回归能够理解为学习变量之间线性关系的方法。做为一切回归的基础,它已经存在很长时间了,是无数教科书的主题。函数

虽然看起来,线性回归与一些更现代的统计学习方法,好比支持向量机相比,有些过于简单。但在咱们后续章节介绍的方法中,线性回归还是一种很是有用的统计学习方法,它能够被用来简单的测试数据和分析数据。 基于这个出发点,许多有趣的机器学习方法能够被看做是概线性回归的扩展。在谈及具体的回归方法以前,让咱们先来看看线性回归为何叫回归。学习

 

在19世纪的英国,有一位著名的生物学家高尔顿,在研究父母和孩子身高的遗传关系时,发现了一个直线方程,经过这个方程,他几乎准确地拟合了被调查父母的平均身高 x 和 子女平均身高 y 以前的关系:测试

这在当时但是一件不得了的事情,那这个方程是什么意思呢?它表明父母身高每增长1个单位, 其成年子女的平均身高只增长0.516个单位,反映了一种“衰退”效应(“回归”到正常人平均身高)。虽然以后的x与 y变量之间并不老是具备“衰退”(回归)关系,可是为了记念高尔顿这位伟大的统计学家,“线性回归”这一名称就保留了下来。优化

 

一元线性回归

回归最简单的情形是一元线性回归,也即由彼此间存在线性关系的一个自变量和一个因变量组成,方程写做Y=a+bX+ε(X是自变量,Y是因变量,ε是随机偏差)。咱们先来看一个例子:idea

假设有以下数据点,横轴表明一个产品的广告费X,纵轴表明产品的销售额Y。回归能够看作是用Y=a+bX+ε这条直线去拟合这些数据点,也就是尽可能使这些数据点与直线的距离之和(也叫做平方偏差和)最小。.net

经过最小二乘法或梯度降低(后面会讲这两个方法),咱们获得以下方程(忽略偏差项):code

那么,当一个新的广告计划出现,咱们经过已知的X(广告投入)代入方程,就能够尽量准确的算出预期的产品销售额了~固然,反过来,使用一个预期的产品销售额,也能够反推出咱们须要投入的广告费用。

 

多元线性回归

当自变量大于1的时候,好比X=(x1, x2),咱们称它为多元线性回归,写做

其中,y(x)也就是咱们说的因变量,x为自变量,可是0次项和1次项的系数(a, b)被一个向量w所代替。这里的w是一个简单的矩阵线性乘法问题,对应了如下的向量

若是对于线性代数问题还有不理解的小伙伴,能够自行查阅《线性代数同济版》

来看一个例子:给定⼀个有关房屋的数据集,其中每栋房屋的相关数据包括⾯积(平⽅⽶)、房龄(年)和价格(元)。假设咱们想使⽤任意⼀栋房屋的⾯积(设x1)和房龄(设x2)来估算它的真实价格(设y)。那么x1 和x2 即每栋房屋的特征(feature),y 为标签(label)或真实值(ground truth)。在线性回归模型中,房屋估计价格(设)的表达式为

其中w1,w2 是权重(weight),一般用向量

来表示,b 是误差(bias),也就是前面一元回归里咱们用到的b。这⾥的权重和误差都叫作线性回归模型的参数(parameter)

 

 

线性回归的假设

线性回归做为被严谨证实过的数学方法,有7个必备的假设前提。理论上,必须知足这7个严格的假设,咱们才能确保线性回归学习到的公式/方程是统计意义成立的。但在实际使用时,咱们只须要知足前3个最重要的假设便可(其余的通常都默认成立)。之后在学习其余算法前,咱们也须要了解相似的假设。

关于线性回归,最主要的3条假设以下

  • 随机偏差的均值为0
  • 随机偏差的方差为σ^2
  • σ^2与X的值无关

这里规定的σ^2并非一个具体数值,只须要大于0便可。主要是为了说明随机偏差的方差是存在的,方差(二阶中心矩)不存在,好比无限大,则这个模型就是病态的,这里涉及到高等代数,感兴趣的同窗能够自行深刻。

 

若进一步假定随机偏差听从正态分布,就叫作正态线性模型。如有k个自变量和1个因变量,则因变量的值分为两部分:一部分由自变量影响,即表示为它的函数,函数形式已知且含有未知参数;另外一部分由其余的未考虑因素和随机性影响,即随机偏差。

通常来讲,随机偏差在参数学习中起到的做用有限,但咱们在真正使用模型时仍是须要先看看数据是否知足线性回归的前提,不然容易对模型参数产生拟合问题。

 

线性回归的本质

通常来讲,回归分析是经过规定因变量和自变量来肯定变量之间的因果关系,创建回归模型,并根据实测数据来求解模型的各个参数,而后评价回归模型是否可以很好的拟合实测数据,若是可以很好的拟合,则能够根据自变量做进一步预测,好比咱们提到的广告费用与产品销售额的关系。

当函数为参数未知的线性函数时,称为线性回归分析模型;当函数为参数未知的非线性函数时,称为非线性回归分析模型。当自变量个数大于1时称为多元回归,当因变量个数大于1时称为多元回归

当X和Y只有一个维度(一元回归),且因变量和自变量的关系是线性关系,线性图表示就是一条直线,而多维度(多元回归)学习到的参数方程,体现到空间中就是一个超平面。

 

要注意的是,咱们平时可能会把拟合与回归弄混淆,但其实两者有本质区别。你能够把现实世界的数据看作“表象”,把你拟合出来的那个模型看作“本质”。由表象到本质的过程就是“回归”。而拟合是一种获得函数的手段,常和数值领域的“插值”放在一块儿,也就是获得回归函数的手段。

当回归函数未知时,咱们能够经过拟合这种手段算出回归函数,求这个回归函数的问题叫作回归问题。一个是问题的类别,一个是解决方法的类别,回归和拟合的差异就在这里。

数学理论的世界是精确的,譬如在广告-销量方程中,你代入x=0就能获得惟一的 y=7.1884,但这个y并非咱们真实观测到的,而是估计值。现实世界中的数据就像散点图,咱们只能尽量地在杂乱中寻找规律,很难100%的完美拟合一条直线出来。用数学的模型去拟合现实的数据,这就是统计。统计不像数学那么精确,统计的世界不是非黑即白的,它有“灰色地带”,可是统计会将理论与实际间的差异表示出来,也就是“偏差”。

咱们在前面学习到的公式,就是线性回归做为一种学习算法的本质,即模型

经过求解参数w,咱们知道了自变量和因变量之间的线性关系,即咱们拟合的直线

这个直线就是咱们学习到的模型,尽量地学习到一个完美的W,这就是线性回归的本质和做用,也是一切机器学习学习算法的本质——函数(参数)学习。

 

 

线性回归的参数学习

如今咱们来看一看如何学习到这个完美的W。线性回归的目标能够理解为减小残差平方和,回到整体均值。在探究线性回归的学习方法以前,咱们先定义以下表示,方便后续解释:

 表示输入变量(自变量),第一部分例子中的X。

 表示输出变量(因变量),第一部分例子中的Y。

一对表示一组训练样本。

m个训练样本称为训练集。

 

回到上面一元回归的例子来,既然是用直线拟合散点,为何最终获得的直线是y = 0.0512x + 7.1884,而不是下图中的橙色的y = 0.0624x + 5呢?毕竟这两条线看起来均可以拟合这些数据。

咱们很容发现,数据不是真的落在一条直线上,而是分布在直线周围,因此咱们要找到一个评判标准,用于评价哪条直线才是最“合适”的。这就是咱们之后时常会见到的东西——损失函数

 

在这里,咱们使用的损失函数叫作残差,也就是真实值和预测值间的差值(也能够理解为距离),用公式表示是:

对于某个广告投入 ,咱们有对应的实际销售量和预测出来的销售量(经过将代入直线公式计算获得),计算  的值,再将其平方(为了消除负号),将全部的 相加,就能量化出拟合的直线和实际之间的偏差。

这里使用的均方偏差有很是好的几何意义,它对应了经常使用的欧几里得距离或简称"欧氏距离" (Euclidean distance),也就是图里的数据点和直线之间的距离。基于均方偏差最小化来进行模型求解的方法,称为“最小二乘法” (least square method)。在线性回归中,最小二乘法就是试图找到一条直线,使全部样本到直线上的欧氏距离之和最小。

 

最小二乘法

求解方程参数,使

最小化的过程,称为线性回归模型的最小二乘"参数估计" (parameter estimation)。咱们可将E(w,b)分别对W 和b求导,获得

咱们令上面两个式子的导数为零可获得W和b最优解的闭式(closed-form) 解(也就是能够直接经过公式代入算出来的解)

其中,为X的均值

 

当X和Y为多元回归时,咱们也有多元状况下的最小二乘法,写做

一样地,令这个偏导数为0,咱们能够获得

这个东西也叫做正规方程,由于它很正规 (。≖ˇェˇ≖。)。具体的推导和运算涉及到矩阵的逆/伪逆,比单变量情形要复杂,这里不深刻展开,感兴趣的同窗能够自行翻阅《矩阵论》。这里咱们只须要知道两点:

1. 现实任务中XTX 每每不是满秩矩阵.例如在许多任务中咱们会遇到大量的变量,其数目甚至超过样例数,致使X的列数多于行数,XTX 显然不满秩。此时可获得出无限个解, 它们都能使均方偏差最小化

2. 咱们的输入数据X(自变量),能够写做矩阵形式,矩阵的横轴表明每一个数据的维度(好比房屋的价格,位置,年龄),纵轴表明每一个房屋

学过线性代数的同窗应该知道,当行、列不少时, 这个矩阵的任何运算都须要很大的计算量。尤为是输入变量的维度较大时(横轴的n比较大),该算法的计算复杂度成指数级增长。

所以,正规方程的解法在真实场景中不多见,咱们有另外一种叫作梯度降低的方法,经过损失必定精度,来近似逼近这个最优解。对于梯度方法,这里只作一个简单介绍,以后会有专门的一期文章来聊聊机器学习中的优化方法。

 

梯度降低

这里引用优化教材中的一张图,咱们把参数W写做,二者实际上是一种东西。如今咱们来思考:既然代价函数是关于的函数,有没有办法把求解过程加速或者拆解呢?

答案是有。

上图中的蓝色区域能够理解为偏差函数最小的点,也就是咱们要找的参数值,所以,找到该点对应的,即完成了任务。如何找到最低点位置对应的参数呢?答案是对代价函数(也就是咱们的偏差)求偏导数

 

咱们用大学学过的微积分方法作一个拆解,能够获得:

这就是关于变量的偏导数。要注意的是,这里的h其实就是咱们的y

假设咱们的函数只有两个维度(二元回归),给定

就是咱们要求的参数,偏差函数对第一个元求偏导的结果:

偏差函数对第二个元求偏导的结果:

求得的结果怎么使用?咱们对  求偏导数的意义是获得这一点上的切线的斜率,它将给咱们一个向最小值移动的方向。所以,减去偏导数,就等于向最小值的方向移动了一步。这一步的大小由一个参数决定,也称做学习率。用公式表达以下:

这就是机器学习中大名鼎鼎的的梯度降低。这个公式为何这么写,有什么意义,以后在优化方法的文章中会写。对底层原理感兴趣的话,你们能够之前去看看MIT的微积分公开课(可汗学院、网易都有),以及Boyd所写的《凸优化》,到时候再回头看博客就会很是通透。

这里举一个我在知乎上看到的例子,很是具体的解释了线性回归求解的过程

  1. 初始化一个模型,例如 h = 2 + 3x,也就是说,咱们的初始参数是 
  2. 给定一个样本对,例如(2,4),代入模型中求得预测值,即 h = 2 + 3*2 = 8
  3. 代入代价函数公式中,求代价值,即 J = 1/2 * (8-4) ^ 2 = 8
  4. 代入偏导数公式中求两个变量的偏导数,即 

假设咱们的学习率是0.1,那么代入梯度降低公式获得 

咱们获得了新的参数,即 

 ,

因此新的模型是:h = 1.6 + 2.2x,新的预测值是h = 1.6 + 2.2*2 = 6,再次计算代价函数的值:J = 1/2 * (6-4) ^ 2 = 2

比较新的模型获得的代价值2,比老模型获得的代价值8减小了6,代价越小说明咱们的模型与训练集匹配的越好,因此经过不断的梯度降低,咱们能够获得最适合训练数据的模型h,也就是前面提到的那条直线方程。

 

线性回归的局限

线性回归简单、直观、迅速,但也有很多局限,这也是以后更多高级算法的出现缘由,它们必定程度上解决了线性回归没法解决的问题。线性回归的局限能够概括如下几点:

  • 须要严格的假设。
  • 只能用于变量间存在简单线性关系的数据。
  • 当数据量、数据维度大时,计算量会指数级增长。
  • 需处理异常值,对异常值很敏感,对输入数据差别也很敏感。
  • 线性回归存在共线性,自相关,异方差等问题。

 

结语

到这里,线性回归的文章就告一段落了。在这一篇文章中,咱们经过线性回归,简单了解了机器学习的方式、概念和方法,可是对于更加具体的定义,好比模型、损失函数和监督学习等都还没讲到,这将是我以后文章的主题。下一期文章,咱们将基于线性回归,来深刻探讨回归的更多使用方法。

线性回归的Python代码和案例实战在这一篇:「06」回归的诱惑:一文读懂线性回归(Python实战篇) ,代码很少,建议你们能够本身敲一敲。

PS. 若是你们阅读其中的数学部分有些吃力的话,能够到个人这篇文章中找对应的知识点复习:「04」机器学习、深度学习须要哪些数学知识?

 

 

课后习题

给定每个月电话咨询次数(X)和每个月实际销量,线性回归是否能够把图中的数据点分为不一样的两个部分?若是能够,应该怎么分?若是不能够,又是为何?

参考文献

  1. 《机器学习》周志华
  2. 《动手学深度学习》MXNet Community
  3.  An Introduction toStatistical Learning with Applications in R
  4.  知乎:机器学习之线性回归
  5.  知乎:线性回归详解