小议线性回归

统计学习好玩,但不好学。无论是课本、讲义还是论文,都充斥着连篇累牍的公式,当然这是科学文献严密性的需要,只是对初学者来说,学习门槛太高。最近在看《统计学习要素》(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。原文中的图表画的非常棒,推荐阅读。

时间: 2024-10-21 17:34:00

小议线性回归的相关文章

用scikit-learn和pandas学习线性回归

对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了. 1. 获取数据,定义问题 没有数据,当然没法研究机器学习啦.:) 这里我们用UCI大学公开的机器学习数据来跑线性回归. 数据的介绍在这: http://archive.ics.uci.edu/ml/datasets/Combined+Cycle+Power+Plant 数据的下载地址在这: http://archive.ics.uci.edu/ml/ma

线性回归

线性回归简介 线性回归是指利用线性回归方程中的最小平方函数对一个或多个自变量和因变量之间的关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性组合. 案例简介 本案例中的数据是一组男孩年龄与身高的数据,我们将年龄作为自变量,身高作为因变量,二组数据分别从.dat文件中读取,最后拟合出一个线性关系式. 具体分析见http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=MachineLearni

Spark MLlib Linear Regression线性回归算法

1.Spark MLlib Linear Regression线性回归算法 1.1 线性回归算法 1.1.1 基础理论 在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性组合. 回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析.如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间

正规方程(Normal Equation)——对于线性回归问题的一种快速解法

对于某些线性回归问题,正规方程方法可能更加简单高效. 正规方程推导过程如下: 梯度下降法和正规方程的比较: 总结: 只要特征数量并不是特别大,对于线性回归问题正规方程是一个比梯度下降算法更快的替代算法.但是当特征数量非常多的时候或者模型更复杂的时候(比如logistic regression等),正规方程就不再适用了.而梯度下降方法都可以使用.另外,当XTX是奇异矩阵(也称退化矩阵,不可逆)时,正规方程也不能使用,但是这种情况很少会发生(m≤n或者存在有依赖关系的特征).

线性回归的应用——容量预测

一个发展中的电信市场,网络容量往往是线性增加的,我们可以通过拟合历史网络容量指标,来判断未来网络规模,从而提前进行网络扩容,防患于未然. 线性回归实际上是找到一条直线,使得所有观测点y值到直线的离差平方和最小. 一.多元线性回归 多元线性回归使用矩阵方程可以很好的描述: 1. 拟合的p元线性方式格式 2. 回归拟合直线满足观测值与理论值离差平方和最小 3. 分别对p+1个因变量系数Beta求导,得到如下方程组 4. 进一步化简 5. 采用矩阵形式表示方程 6. 则方程系数如下 二.一元线性回归

一元线性回归

1.概念 一元线性回归是最简单的一种模型,但应用广泛,比如简单地预测商品价格.成本评估等,都可以用一元线性模型,本节主要讲解scikit-learn一元线性回归的使用以及作图说明. y=f(x)叫做一元函数,回归的意思就是根据已知数据复原某些值,线性回归(regression)就是用线性的模型做回归复原. 那么一元线性回归就是:已知一批(x,y)值来复原另外未知的值. 比如:告诉你(1,1),(2,2),(3,3),那么问你(4,?)是多少,很容易复原出来(4,4),这就是一元线性回归问题的求解

对线性回归,logistic回归和一般回归的认识

假设有一个房屋销售的数据如下:这个表类似于北京5环左右的房屋价钱,我们可以做出一个图,x轴是房屋的面积.y轴是房屋的售价,如下: 如果来了一个新的面积,假设在销售价钱的记录中没有的,我们怎么办呢? 我们可以用一条曲线去尽量准的拟合这些数据,然后如果有新的输入过来,我们可以在将曲线上这个点对应的值返回.如果用一条直线去拟合,可能是下面 的样子:绿色的点就是我们想要预测的点. 首先给出一些概念和常用的符号. 房屋销售记录表:训练集(training set)或者训练数据(training data)

简单线性回归

协方差:两个变量总体误差的期望. 简单的说就是度量Y和X之间关系的方向和强度. X :预测变量Y :响应变量 Y和X的协方差:[来度量各个维度偏离其均值的程度] 备注:[之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的协方差,即统计上所谓的"无偏估计".而方差则仅仅是标准差的平方] 如果结果为正值,则说明两者是正相关的(从协方差可以引出"相关系数"的定义), 如果结果为负值就说明负相关的 如果为0,也是就是统计上说的"相互独立

SPSS数据分析—多重线性回归

只有一个自变量和因变量的线性回归称为简单线性回归,但是实际上,这样单纯的关系在现实世界中几乎不存在,万事万物都是互相联系的,一个问题的产生必定多种因素共同作用的结果. 对于有多个自变量和一个因变量的线性回归称为多重线性回归,有的资料上称为多元线性回归,但我认为多元的意思应该是真的因变量而非自变量的,而且多重共线性这个说法,也是针对多个自变量产生的,因此我还是赞同叫做多重线性回归. 多重线性回归是适用条件和简单线性回归类似,也是自变量与因变量之间存在线性关系.残差相互独立.残差方差齐性,残差呈正态