码迷,mamicode.com
首页 > 其他好文 > 详细

小议线性回归

时间:2015-11-21 22:28:12      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

统计学习好玩,但不好学。无论是课本、讲义还是论文,都充斥着连篇累牍的公式,当然这是科学文献严密性的需要,只是对初学者来说,学习门槛太高。最近在看《统计学习要素》(The Elements of Statistical Learning),随手心得,仅供参考。

 

第三章-线性回归

 

如果我们已知了X和Y之间满足线性关系,在得到X和Y的数据之后,怎样估计它们之间的线性系数w呢?

这其实是在解一个线性方程组,xw = y。这个等式的意义是,用w作为x列向量的加权,得到y。但理论上,如果y并不在x的列空间中,这个方程是无解的,这种情况之所以经常发生,是因为我们生活在一个有误差的世界里。一方面,y可能是我们测量得到的,但凡是测量,就会有误差,另一方面,x和y之间的关系,并非是线性的,你硬塞给人家一个线性模型,能有解才怪。虽然不能得到一个完美的解,仍然可以向这个方向逼近,于是我们的目标变成了,寻找w,使得xw与y之间的偏差平方和最小,这就是最小二乘的来历。

最小二乘解可以从两个角度得到,一是代数的角度,对目标函数求偏导并令导数为零,二是几何的角度(我喜欢直观的东西),把y投影到x的列空间中,然后把这个投影当作y,解方程。

在得到了w之后,要对它做一番考验。原因是,我们在选择x的时候,可能不小心选择了几个相关的特征,这一组特征里面可能只需要一个就够了。因此在得到w之后,我们总想着能不能把去掉x中的一些分量,减小模型的复杂度,对应到w的值,就是将其中的某几个分量置为零。这就是线性回归模型的子集选择法。

 怎样选择这个子集?最直观的方法就是暴力搜索,把这些特征所有的组合都尝试一遍,在其中选择最满意的特征组。这种做法的复杂度是指数的。一种改进的方向是贪心算法,分为正向和反向。正向贪心,就是从0开始,每次往特征池里加入一个最应该加入的特征,这里的“应该”指的是,与其它未加入特征相比,加入这个特征使得误差的减小最显著。反向贪心,就是从全集开始,每次从特征池里取出一个最应该取出的特征,什么是“应该”?参考上述。

除了子集选择法之外,接下来就是大名鼎鼎的ridge和lasso了。ridge的理解有四个方面,第一,最小二乘法可能没有解,原因是x‘x不一定可逆,因此就改为x‘x+λI;第二,是贝叶斯观点,对w取高斯先验,则ridge的目标函数就是后验概率;第三,是从正则化的观点去理解,相当于给目标函数添加了一个正则项;第四,也是最直观的,通过SVD分解,可以得到X的一组正交向量组,最小二乘解,其实就是先把y投影到这个正交向量空间,然后再解方程,这里,每个正交向量都对应了一个系数(矩阵X的奇异值),系数表示正交向量的权重,ridge其实就是把所有的正交向量的系数都压缩了,只不过,若正交向量原始的系数比较大,压缩的就轻一点,若原始的系数比较小,压缩的就重一点。

对于输入特征相互相关的问题,还有一个解决方案就是,首先对输入特征做分组线性变化,得到一个中间向量,然后以这个中间向量为基础进行线性回归。这个中间向量的选择方法,最主要的就是主要成分法。其核心与ridge方法类似,区别在于ridge是对各主要成分做压缩,最不重要的成分,压缩的力度越大,而主要成分法是直接把最不重要的特征抛弃。

说到底,最常用的还是最小二乘和ridge。原文中的图表画的非常棒,推荐阅读。

小议线性回归

标签:

原文地址:http://www.cnblogs.com/jicanghai/p/4984704.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!