1.2 什么是惩罚回归方法
惩罚线性回归方法是由普通最小二乘法(ordinary least squares,OLS)衍生出来的。而普通最小二乘法是在大约200年前由高斯(Gauss)和法国数学家阿德里安-马里•勒让德(Legendre)提出的。惩罚线性回归设计之初的想法就是克服最小二乘法的根本缺陷。最小二乘法的一个根本问题就是有时它会过拟合。如图1-1所示,考虑用最小二乘法通过一组点来拟合一条直线。这是一个简单的预测问题:给定一个特征x,预测目标值y。例如,可以是根据男人的身高来预测其收入。根据身高是可以稍微预测男人的收入的(但是女人不行)。
图1-1中的点代表(男人的身高、男人的收入),直线代表使用最小二乘法的预测结果。在某种意义上说,这条直线就代表了在已知男人身高的情况下,对男人收入的最佳预测模型。现在这个数据集有6个点。假设这个数据集只有2个点。想象有一组点,就像图1-1中的点,但是你不能获得全部的点。可能的原因是要获得所有这些点的代价太昂贵了,就像前面提到的基因组数据。只要有足够多的人手,就可以分离出犯罪分子的基因组,但主要问题是代价的原因,你不可能获得他们的全部基因序列。
以简单的例子来模拟这个问题,想象只给你提供当初6个点中的任意2个点。那么拟合出来的直线会发生哪些变化?这将依赖于你得到的是哪2个点。实际看看这些拟合的效果,可以从图1-1中任意选出2个点,然后想象穿过这2个点的直线。图1-2展示了穿过图1-1中2个点的可能的直线。可以注意到拟合出来的直线依赖于这2个点是如何选择的。
使用2个点来拟合一条直线的主要问题是针对直线的自由度(degrees of freedom)[3]没有提供足够的数据。一条直线有2个自由度。有2个自由度意味着需要2个独立的参数才能唯一确定一条直线。可以想象在一个平面抓住一条直线,然后在这个平面上下滑动这条直线,或者旋转它以改变其斜率。与x轴的交点和斜率是相互独立的,它们可以各自改变,两者结合在一起确定了一条直线。一条直线的自由度可以表示成几种等价的方式(可以表示成与y轴的交点和斜率、直线上的2个点,等等)。所有这些确定一条直线的表示方法都需要2个参数。
当自由度与点数相同时,预测效果并不是很好。连接这些点构成了直线,但是在不同点对之间可以形成大量不同的直线。对在自由度与点数相同的情况下所做的预测并不能报太大的信心。图1-1是6个点拟合一条直线(2个自由度)。也就是说6个点对应2个自由度。从大量的人类基因中找到可导致遗传基因的问题可以阐明相似的道理。例如要从大约20000个人类基因中找到可导致遗传的基因,可选择的基因越多,需要的数据也越多。20000个不同基因就代表20000个自由度,甚至从20000个人获取的数据都不足以得到可靠的结果,在很多情况下,一个相对预算合理的研究项目只能负担得起大约500个人的样本数据。在这种情况下,惩罚线性回归就是最佳的选择了。
惩罚线性回归可以减少自由度使之与数据规模、问题的复杂度相匹配。对于具有大量自由度的问题,惩罚线性回归方法获得了广泛的应用。在下列问题中更是得到了偏爱:基因问题,通常其自由度(也就是基因的数目)是数以万计的;文本分类问题,其自由度可以超过百万。第4章将提供更多的细节:这些方法如何工作、通过示例代码说明算法的机制、用Python工具包实现一个机器学习系统的过程示例。