1.监督学习
回归算法通常用在监督学习中的学习算法,所以在讲回归之前,先来说说监督学习。
我们已经学习了很多的分类器设计方方法,如感知器、SVM等,他们的共同特点都是,根据给定的带有类别标签的样本,训练学习机器,然后使得机器能够对新来的无标签样本进行正确分类,像这种就属于监督模式识别,对学习机器来说就是监督学习。
举个栗子,就拿吴恩达老师讲课最喜欢用的预测房价的例子,图形表示监督学习的过程如下:
在房价栗子中,由于我们要回归或预测的变量(房价)是连续的,所以我们把这种学习问题称为回归问题,反之如果我们预测的目标变量的取值为几个离散值,就是分类问题。
2.什么是线性回归
有时候我们考察一个对象属性时,会发现某两个或某几个属性变量之间存在着一种线性关系或近似线性关系,如汽车的速度与轮子的个数,人的体重与身高等等,如图,它描述的是人的年龄与血压之间的关系:
可以近似成是一种线性关系,图中可以看到有许多组样本数据点,然后我们根据这些有用的数据点去求出血压与年龄之间的关系(途中用一条直线标书,近似为一次函数),所以像这种利用已知数据点求解出各属性变量之间的线性关系的方法,就叫做线性回归。
上图中只是考察了年龄对血压的影响关系,这种单一变量的线性回归叫做一元线性回归,属于比较简单的情况;而在专业医学常识中,与血压存在某种关系的除了年龄,还有其他很多因素,如胖瘦等,这种我们关心的变量与多个自变量之间存在一定关系的线性回归,叫做多元线性回归,形式化表示就是:
其中,y是要回归的变量,...是与存在关系的自变量特征属性,...是对应的回归系数,是回归的残差(就是用x的线性函数来估计y所产生的误差),是常数项;
当然,上述自变量特征既可以是连续的,也可以是离散的。
3.线性回归的求解
接下来,为了阐述线性回归的具体知识,仍然拿房价预测的例子来说明。
现在,我们有房价与房子大小和房价数量之间的关系数据,如下表:
因此,我们的特征自变量有两个,分别是:房子大小和房间数;一般来说,监督学习问题取决于选取的特征的好坏,关于特征选择的具体知识,后续会学习到。
监督学习中,我们需要建立一个假设函数h,怎么做呢?根据上面提到的,假设房价与房子大小和房间数之间存在一定的某种近似关系,然后我们就可以利用下面关于x的线性函数h(x)来近似得到房价的估计:
(1)
其中,,和是回归系数,用来对特征x到回归变量y的映射空间进行参数化;
对上式变形,可以写成向量乘积的形式:
(2)
其中,n是特征数;
有了假设函数模型,有了已知训练数据集,接下来要做什么呢?很明显,要利用这些训练数据集来估计学习出假设函数中的回归系数,欲学习出,有一个合理做法就是使得假设h(x)接近于y,这种接近应该如何来度量呢,可以通过定义一种损失函数来度量:
(3)
这个式子应该大家会比较眼熟,在线性回归的求解中,最基本的方法就是用的最小二乘法,即求出使得各样本残差的平方和(即)达到最小的值,为了使最小化,同样我们可以使用梯度下降(当然还有其他方法)来进行求解:
1)首先给出的初始值;
2)利用如下公式进行更新:
其中是修正步长,在机器学习叫做学习率;
注意:每一次迭代修正要对所有进行更新,更新完后才开始下一次迭代,如图:
左边是一元,右边是多元;
4.学习率的合理选取
如果学习率太大,步子迈得太大,损失函数变化剧烈不会每一次迭代都下降,最后导致无法收敛;如果学习率太小,步子迈的太小,导致过程缓慢,最终收敛速度也极慢。
根据斯坦福ML课程中吴恩达老师讲的,最好这样来选取学习率:
含义就是,如果用0.001,收敛太慢,那就增加10倍使用0.01,如果0.01不行,那就3倍,即0.003;
5.特征标准化
这个问题之前有提过,因为这是初学者极其容易忽视的地方,所以一定注意自变量特征的取值范围,自变量过大或过小都会导致函数饱和,不能区分自变量中的变化,而且如果把一个太大的特征作为输入,会容易出现这个特征在分类中根本起不到任何作用的现象,尽管我们可以用很小的权值来实现纠正,但是这样又会导致权值之间差异拉开明显,同样不利于学习过程的收敛,所以为了避免这种情况,必须要进行特征标准化,最常见的做法是利用均值和方差对特征进行归一化:
其中,为均值,为方差;
对预测房价的例子来说是这样的:
本文参考与斯坦福ML课程吴恩达老师的视频;