在上一章我们说到,机器学习中主要的两个任务就是回归和分类。如果读者有高中数学基础,我们很容易回忆到我们高中学习过的一种回归方法――线性回归。我们将这种方法泛化,就可以得到机器学习中的一种常见模型――线性模型,线性模型是监督学习的一种
我们已经说过,我们要从数据集中训练出模型,每个数据可以视为(属性,标签)
f(x)=wTx+bf(x)=wTx+b
我们将这样的模型称为线性模型,不得不提的是,线性模型并不是只能进行线性分类,它具有很强的泛化能力,我们后面会提到。
我们注意到,在线性模型中,属性值都是实数
属性离散,但是有序关系(可以比较)
属性离散,但是无序关系(不可比较)
f(x)=wx+bf(x)=wx+b
其中w,x,b都是实数,相信这个模型大家在高中都学习过。在这里我们有两种方法求解这个模型,分别是最小二乘法和梯度下降法
我们的目标是,求得适当的w和b,使得S最小,其中S是预测值和真值的差距平方和,亦称为代价函数
其中的1n1n只是将代价函数值归一化的系数。
最小二乘法
梯度下降法
我们刚刚利用了方程的方法求得了单变量线性回归的模型。但是对于几百万,上亿的数据,这种方法太慢了,这时,我们可以使用凸优化中最常见的方法之一――梯度下降法
梯度下降法的相当于我们下山的过程
给w、b随机赋初值,一般可以都设为0给w、b随机赋初值,一般可以都设为0
w=wnew,b=bneww=wnew,b=bnew
- 如果a过大,那么由于每一步更新过大,可能无法收敛到最低点。由于越偏离最低点函数的导数越大,如果a过大,某一次更新直接跨越了最低点,来到了比更新之前更高
- 我们的算法不一定能达到最优解。如上图爬山模型可知,如果我们初始位置发生变化,那么可能会到达不同的极小值点。但是由于线性回归模型中的函数都是凸函数,所以利用梯度下降法,是可以找到全局最优解的,在这里不详细阐述。
代价函数
其中的1n1n只是将代价函数值归一化的系数。
特征缩放
其中σσ为数据标准差。
正规方程法
- 我们使用了太多的特征(特征的数量超过了样本的数量).,也可以理解为样本的数量太少,对于这种情况我们可以删掉一些特征或者使用正则化(在下一篇文章中会讲到)。
梯度下降法
与正规方程法相比,梯度下降法当有大量特征时, 也能正常工作,仍可以在可接受的时间内完成。
之前我们提到过,线性模型并不是只能进行线性分类,它具有很强的泛化能力,如果仅仅使用在此之前的单元和多元线性回归,我们只能得到多维空间的高维平面,为了进一步增强泛化能力,我们可以引入幂次项
y=w1x1+w2x2y=w1x1+w2x2
y=w1x1+w2x2+w3x3+w4x4+w5x5y=w1x1+w2x2+w3x3+w4x4+w5x5
但是,我们也要防范过拟合问题,过多的人为特征很容易导致过拟合,我们将在下一个章节详细讨论。
线性模型以其简单和可解释性在众多模型中脱颖而出,至今仍是经常使用的回归算法之一,在机器学习中仍然具有重要应用,如趋势线,流行病学预测,金融经济等。