什么是线性回归
假设学习的时间越长,分数往往也越高。每个人情况不同,所以点散落各处。即便如此,只要用一条直线把整体趋势画出来,一个新来的、学了五个小时的人能得多少分,也能从这条线上估出来。在散落的点之间找出最贴合的直线,用它来预测数值,这个办法就是线性回归。
从散落的点开始
到上一课为止,我们看了一个值的中间和离散程度,还有可能性。这一回看成对的两个值,比如学习的时间和得到的分数。把时间放在横轴、分数放在纵轴,一个人就成了一个点。
每个人情况不同,所以点不会整整齐齐落在一条线上,而是像云一样散开。下面一个一个地把点标出来吧。
点空白处,把点撒开。能隐约看出一种趋势:越往右,点越往上。
点虽然散着,退后一步看,就能看出趋势:越往右,大体上越高。意思是,花的时间越多的人,分数往往越高。
不过光凭这些,很难准确说出一个新来的人能得多少分。要是能用一条线把这个趋势画出来,就清楚多了。
在点之间画一条线
表示趋势最简单的办法,是画一条笔直的线。这条线像是从散落的点中间横穿过去。有的点在线上方,有的在线下方,但从整体看,这条线代表了这些点。
因为用直线来表示趋势,所以叫线性回归。有了这条线,没有点的地方的值也能读出来。
在左边和右边各点一个让线经过的位置。选好两处,它们之间就画出一条直线。
画上一条线,散落的点就显得整齐多了。现在在横轴上随便挑一个时间,顺着线往上找,就能读出纵轴上的分数。这就是预测。
可是,线画在哪儿、斜多少,到现在还是由我们随意决定的,选的位置不同,线就不同。需要一条决定这条线的规则。
斜率和截距决定直线
一条直线完全由两个数决定。一个是斜率,表示横向每走一格,纵向升高多少。斜率大,线就陡;斜率小,线就缓。
另一个是 y 截距,也就是直线和纵轴相交的高度。定下这两个数,直线就只有一条,写成式子就是 y=ax+b,其中 a 是斜率,b 是截距。
用加减按钮改变斜率(a)和截距(b)。线会变陡或变缓,还会上下移动。
斜率调大,线就变陡;调小,线就躺下去。截距调高,整条线往上滑;调低,就往下滑。只用两个数,就能随意移动这条线。
那么,和散落的点最贴合的斜率(a)和截距(b),该怎么找?得有一个区分好线和坏线的标准。
偏差最小的线最好
标准很简单:对每个点,看直线预测的值和实际的值在纵向上差多少。这个差叫残差,差得越多,说明线把这个点偏得越远。
把所有点的差加起来,就知道这条线整体偏了多少。这个总和越小,线和点就越贴合,所以最贴合的线,就是偏差总和最小的线。下面的图是把差的大小直接相加,而普通的线性回归是让差的平方之和尽可能小。这叫最小二乘法,偏得远的点会被看得更重。
用按钮一点点移动直线,减小偏差总和。总和越小,就越接近最贴合的那条线。
偏差总和越减越小,线就落到了点云的正中间。再也减不下去的那个位置,就是最贴合的线。
人是一边按按钮一边估着找,机器则把这种减小的过程重复无数次,找得非常准确。用最小二乘法,还可以解方程一步求出答案。不管哪种,做的事都一样:减小偏差,找出最贴合的斜率(a)和截距(b)。
小结
归纳起来是这样:成对的点散开着的时候,在它们之间画出最贴合的一条直线。这条线由斜率(a)和截距(b)两个数决定,要选得让它和点的偏差最小。把新的输入代进这条线,就能预测结果。
只要记住一件事:决定直线的斜率(a)和截距(b),在后面要学的神经元里,会以权重和偏置的名字再次出现。
依次点要点回顾一下。(散落的点 → 画线 → 斜率(a)和截距(b) → 减小偏差找到最贴合的线 → 预告权重和偏置)
现在,你能在散落的点之间画一条线,再用这条线估计接下来的事了。两个数就能做出预测,这个想法是后面要学的几乎所有东西的种子。
回归预测的是分数这样连续的数。可很多时候,要回答的是某样东西属于哪一群,比如是不是垃圾邮件,照片里是猫还是狗。处理这类问题的分类,下一课来看。