赞
踩
在处理复杂的数据的回归问题时,普通的线性回归会遇到一些问题,主要表现在:
以上的这些问题,主要就是表现在模型的方差和偏差问题上,这样的关系可以通过下图说明:
(摘自:机器学习实战)
方差指的是模型之间的差异,而偏差指的是模型预测值和数据之间的差异。我们需要找到方差和偏差的折中。
在进行特征选择时,一般有三种方式:
,
通过确定的值可以使得在方差和偏差之间达到平衡:随着的增大,模型方差减小而偏差增大。
对求导,结果为
令其为0,可求得的值:
我们去探讨一下取不同的对整个模型的影响。
那么这个图什么意思呢?
(横轴是循环次数就是相关岭系数 纵轴是回归系数) 从图像中可以看出,在这八个系数中有两个距离0比较远,所以数据的主要预测就可以依靠这两个系数
MATLAB代码
主函数
岭回归求回归系数的函数
function [ w ] = ridgeRegression( x, y, lam )
xTx = x'*x;
[m,n] = size(xTx);
temp = xTx + eye(m,n)*lam;
if det(temp) == 0
disp('This matrix is singular, cannot do inverse');
end
w = temp^(-1)*x'*y;
end
补充一些总结:
4. 正则化
对较复杂的数据建模的时候,普通线性回归会有一些问题:
(1) 稳定性与可靠性 : 当X列满秩的时候,使用线性回归有解析解,
如果n和m比较接近,则容易产生过拟合;如果n 是奇异的,最小二乘回归得不到有意义的结果。因此线性回归缺少稳定性与可靠性。
(2)模型解释能力的问题 包括在一个多元线性回归模型里的很多变量可能是和响应变量无关的;也有可能产生多重共线性的现象:即多个预测变量之间明显相关。这些情况都会增加模型的复杂程度,削弱模型的解释能力。这时候需要进行变量选择(特征选择)。
4.1 Ridge Regression (岭回归或脊回归)
代价函数
即在线性回归的代价函数后面加上一个惩罚项,对拟合函数进行平滑,防止过拟合。同样求导可得
岭回归通过引入2范数的惩罚项,损失了拟合的无偏性,但是此时在任何条件下都有解析解,换取了稳定性。
概率解释
上面对线性回归进行概率解释的时候,通过求解最大似然估计,得到普通线性回归的代价函数,如果不采用最大似然估计方式,如通过最大后验概率估计,引入合适的先验函数就可以得到岭回归的概率解释。
记训练集合,则后验概率
通过最大后验概率求参数,即
假设,则类似线性回归的推到可得到岭回归的代价函数。
4.2 Lasso
代价函数
与岭回归不同的是,Lasso采用的惩罚项是1范数,因为1范数不可导,因此没有解析解,采用迭代求解,其求解方法有很多,如最小角回归,其形式和sparse coding中的编码过程一致,因此sparse coding常用的方法如feature-sign search算法。
Lasso得到的结果是稀疏的,因此相比于岭回归,Lasso还有特征选择的作用,从下图可以看出
概率解释
与岭回归相同,采用极大后验概率估计的方法,只是此时的先验概率为:
即参数是独立的,且先验为拉普拉斯概率。
4.3 Elastic net
代价函数
Elastic net 将岭回归和Lasso的代价函数组合到一起。
5 三种正则化方式对比
Ridge Regression:
Elastic net:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。