什么是回归?
达尔文的某个亲戚Galton于1877年在生物学领域完成了第一次回归预测。根据西瓜书中的描述:预测的结果是连续值,则称之为回归。
此外,不妨提一下分类:与回归问题一样,分类问题同属于监督学习,与之不同的是,分类问题预测的结果输出是离散的值,比如判断一个人得的肿瘤是良性的还是恶性的,这就是0/1离散输出问题。
单变量线性回归
单变量的线性回归是回归问题的一种,它的模型表达式为:hθ(x)=θ0+θ1x 。由于它只有一个特征/输入变量x,同时它拟合的曲线是一条直线,所以该问题叫做单变量线性回归问题。 如果不好理解就暂时往下看。
一个回归问题的流程:
首先我们通过适当的学习算法对数据集进行处理,得到h。h代表拟合的曲线,也称为学习算法的解决方案或函数或假设。假设这是一天内温度关于电量的单变量线性回归问题,这时通过面积大小就能预测出价格。如果不好理解可以看看下图:
怎么处理一个回归问题?
对回归问题来说,假设的选择是一个关键问题。在只有数据的情况下,如何确定h的形式?假设用电量的问题是线性回归的。那么θ0和θ1在这个例子中便是直线的斜率和在y轴上的截距。那好吧,问题又来了:怎么选择θ0和θ1,从而使得到的线性拟合更加准确呢?这时就需要引入另一个概念:均方误差代价函数(也叫作平方误差代价函数)。
代价函数(cost function)
上面说了,代价函数是为了让模型更加准确。代价函数是解决回归问题最常用的手段,该函数的表达形式如下:
我们的目标就是使得J(θ0,θ1)最小(不要忘记θ0和θ1分别表示直线的斜率和在y轴上的截距)。
因为斜率好像并不影响一条直线的最小值,所以我们可以把公式化简一下,把θ0去掉:
假设有三组数据,数据分别为(1,1),(2,2),(3,3)
当θ1=0.5时,hθ(x)=0.5x,这三个点分别预测为:
(1,0.5),(2,1),(3,1.5)
则此时的损失函数的值为((1-0.5)^2+(1-2)^2+(3-1.5)^2)/(2*3)=0.583
当θ1=1时,hθ(x)=x这三个点分别预测为:
(1,1),(2,2),(3,3)
则此时的损失函数的值为((1-1)^2+(2-2)^2+(3-3)^2)/(2*3)=0
以此类推,推出多个θ1θ1值下的损失函数的值,然后绘制θ1和J(θ1)的曲线,找到使得J(θ1)取得最小值时的θ1的值。绘制的曲线为:
从中可以看出当θ1=1θ1=1时损失函数最小,所以h的表达形式为: hθ(x)=x。此时对于一个待测试的样本,最终的预测值就可以通过确定的h表达式来获得。这就是完整的回归问题。
上述的问题已经将其进行了简化,若不是简化形式,求解形式相同,只不过原来θ1和J(θ1)的曲线,转化为θ0,θ1和J(θ1,θ0)曲面,代价函数的图形模样变成了下图所示:
数据少的时候我们也许可以在复杂的形式中人工计算,但是如果数据量过于庞大叫我算那应该是不可能的。这个时候又想找到最有参数怎么办?可以通过梯度下降法来达到目的。
梯度下降法
梯度下降法的思想是:开始随机选择一个参数的组合(θ0,θ1,...,θn)(θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数下降最多的参数组合。我们持续这样做,直到到达一个局部最小值。由于我们没有尝试所有的参数组合,所以不能确定得到的结果是局部最小值还是全局最小值。
梯度下降法的数学定义如下:
其中,α代表学习率(learning rate),它决定了沿着能让代价函数下降程度最大方向的步长。 值得注意的是,θ0,θ1是同时更新,也就是说:
梯度下降的过程:
正如上图代表两座山,你现在所处的位置为最上面的那一点,你想以最快的速度达到山下,你环顾360度寻找能快速下山的方向,这个过程对应于求偏导的过程,你每次移动一步,移动的步长对应于α,当你走完这一步,然后接着环顾360度,寻求最快下山的方法,然后在走出一步,重复这个过程,直到走到山下,走到山下对应于找到了局部最小值(因为并不能确定是不是全局的最小值)。
步长α和偏导对梯度下降法的影响:
注意:下图中讨论,都是在θ0=0的简单形式下讨论的。
步长对梯度下降法的影响:
1. 当步长太小时,每次走的步子很小,导致到达最小值的速度会很慢,也就是收敛速度慢,但是能保证收敛到最小值点。
2. 当步长太大时,梯度下降法可能会越过最小值点,甚至可能无法收敛。
两种情况的示意图如下:
梯度对梯度下降法的影响:
个人对梯度的理解:有一些地方比较陡峭(只讨论下坡的情况下,上坡太累,就先忽略吧),那么我们就会说这里的梯度比较大,因此在这里下降得最快。
粉红色的点为初始点,在此点求出导数,然后乘以学习率,更新参数θ1,到达第二个点,然后再在第二个点求导数,从斜率上明显可以看出,第二个点的斜率明显比第一个点的斜率低,也就是说虽然学习率固定,但是这一次更新的步长比上一次要小,以此类推,我们能够得出一个结论,当接近局部最低时,导数值会自动变得越来越小,所以梯度下降法会自动采用较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小α。
单变量线性回归模型中的的梯度下降
我们想用梯度下降算法来最小化损失函数,关键问题在于求导(推导过程就省略了)。就是把梯度下降法的算法化成如下:
多变量线性回归
理解了单变量后,相信多变量也很好解释:以某地区的房价为例,影响价格的除了面积大小、所在地理位置、物业管理水平、房屋年龄、楼层数、户型等等相关,这些因素都能成为影响房价的变量。
举个栗子🌰
由训练数据所示,房子的价格是由房子大小、卧室数量、楼层数量和房龄确定的。这里,我们设:x1 : 房子大小, x2 : 卧室数量, x3 : 楼层数量, x4 : 房龄, y : 房子的价格,则有:
对于多变量的预测函数:
多变量和单变量的梯度下降:
多变量梯度下降,是单变量的拓展。现在,我们就将两者的数学原理进行对比。
由上表同样可以看出,多变量是单变量的拓展。令x0=1同时n=1,则多变量就会退化为单变量。
写累了,有时间继续更····