(整理自AndrewNG的课件,转载请注明。整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/)
前面几篇博客主要介绍了线性回归的学习算法,那么它有什么不足的地方么?怎么改进呢?这就是本篇的主题。
为了引出问题,先看一个关于线性的例子,选取不同的特征会得到不同结果。考虑给定一组数据,我们要进行线性回归,得到和之间的关系。提出了三种不同的特征的选择方式,结果如下:
左图,选取一个特征,假设为,我们可以看到数据不能很好的和数据相吻合。
中图,我们选取了两个特征和,假设为,我们可以看到拟合效果变好了。那是不是特征越多越好呢?非也。
右图,一共6个数据点,所以用5阶多项式就可以做到所有的数据点都在曲线上了,假设为。虽然将数据点拟合的很perfect,但是我们不认为这是一个很好的假设,因为它不能做到很好的预测。
我们称左图的拟合效果为underfitting(欠拟合),数据中的明显的结构关系没有被模型所捕获。称右图的拟合效果为overfitting(过拟合),这种假设只是用于特定的数据,预测效果不好。中图的效果最好,那我们应该如何选择特征,使得假设的效果最好?有人说了,那就挨个试呗,先选择1个特征,看效果,2个特征,看效果。。。。我们可不愿意做这种事情。
就像上面讨论的那样,特征的选择对学习算法的性能至关重要,那有没有自动选择特征集的算法,或者是让特征的选择对结果影响不那么大?这就是我们要介绍的Locally weight-
ed linear regression (LWR),这个算法对特征集要求不是非常的严格。
在最初的线性回归算法中,对于输入变量,我们要预测,我们通常要做的:
相对而言,对于局部加权线性回归,我们要做:
,这里多了一个权值项。直观上,的值越大,它所对应的对结果的影响越大,反之越小。
我们选择的形式如下:
,显然,当足够小时,近似为1;当足够大时,近似为0;也就是说离很近的样本会得到接近为1的权值,很远的样本权值近乎为0。所以我们无们可以这样理解:在局部构成了线性回归算法,对于的学习,主要依赖于附近的点。如下图:
,图中红色直线使用线性回归做的结果,黑色直线使用LWR做的结果,可以看到局部加权回归的效果较好。
在让我们来看一下形式的的形式,和高斯函数形式很像,但和那一点关系都没有哦!是波长参数,控制了权值随距离的下降速率。
总结一下:LWR算法是我们遇到的第一个non-parametric(非参数)学习算法,而线性回归则是我们遇到的以一个parametric(参数)学习算法。所谓参数学习算法它有固定的明确的参数,参数一旦确定,就不会改变了,我们不需要在保留训练集中的训练样本。而非参数学习算法,每进行一次预测,就需要重新学习一组,是变化的,所以需要一直保留训练样本。也就是说,当训练集的容量较大时,非参数学习算法需要占用更多的存储空间,计算速度也较慢。有得必有失,效果好当然要牺牲一些其他的东西。人不一定什么都擅长,只要有自己的特点就可以了!!