所谓回归,简单来讲就是根据现有数据拟合出函数,然后根据该函数进行一些预测工作。分类的输出是标称型,而回归的输出为数值型。接下来介绍几种常见的全局型回归方法
一. 线性回归(Linear Regression)
对于二维数据而言,线性回归就是找出一个一次函数去拟合数据,使得平方误差最小。是的,这里的损失函数是平方损失。平方误差可以写做:
矩阵写法为:
对
w
求导并令其等于0,于是解出
w′ 即为最优解,这就是“普通最小二乘法”,当然在应用此算法之前需要的判断 XTX 的可逆性。如果不可逆,那么此办法就不可用,应该用岭回归算法,具体在第三部分讨论。
二. 局部加权线性回归(Locally Weighted Linear Regression)
我们知道并不是所有数据都能用线性回归来拟合,有的时候数据有转折或是其他规律。于是有了局部加权线性回归,该方法更加关注将要预测的数据周围的点,也就是通过高斯核给预测点周围的数据赋予权值,选择合适的高斯系数能使结果更好,当然这种算法的缺点是:对于每一个要预测的点,都要重新依据整个数据集计算一个线性回归模型出来,使得算法代价极高。
该算法的详细介绍有一篇blog写得很好————【机器学习】局部加权线性回归
三. 岭回归(Ridge Regression)
岭回归是一种常见的shrinkage coefficient(缩减系数)方法,还有其他缩减方法,如lasso(效果很好但计算复杂)、LAR、PCA。所谓shrinkage,就是通过一些手段来减少不重要的参数。
岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于普通最小二乘法。
岭回归具有什么作用呢,我们知道在普通最小二乘法里有一个基本要求是 XTX 可逆,岭回归就是对 XTX 加上了一个 λI 使其可逆,此时回归系数的计算公式为:
当
λ
趋于0时,回归系数
w
的值和普通线性回归得到的一致,当
注意,在加入 λ 有一个约束条件如下:
限制 w <script type="math/tex" id="MathJax-Element-18">w</script>的范围,达到稳定的效果,关于稳定性的解释这里有一个例子。在lasso算法里,约束条件变成了绝对值,计算程度比较复杂。
四. 前向逐步回归(Foward Stagewise Regression)
前向逐步回归算法可以得到和lasso差不多的效果,但更简单,是一种贪心算法。一开始,所有的权重都设置为1,然后每一步所做的决策是对某个权重增加或减少一个很小的值,算法伪代码如下:
数据标准化,使其分布满足0均值和单位方差
在每轮迭代过程中:
设置当前最小误差lowestError为正无穷
对每个特征:
增大或缩小:
改变一个系数得到一个新的w
计算新W下的误差
如果误差Error小于当前最小误差lowestError:
设置Wbest等于当前的W
将1^设置为新的Wbest