一、一般线性回归遇到的问题
在处理复杂的数据的回归问题时,普通的线性回归会遇到一些问题,主要表现在:
- 预测精度:这里要处理好这样一对为题,即样本的数量

讯享网和特征的数量
时,最小二乘回归会有较小的方差
时,容易产生过拟合
时,最小二乘回归得不到有意义的结果
- 模型的解释能力:如果模型中的特征之间有相互关系,这样会增加模型的复杂程度,并且对整个模型的解释能力并没有提高,这时,我们就要进行特征选择。
以上的这些问题,主要就是表现在模型的方差和偏差问题上,这样的关系可以通过下图说明:

(摘自:机器学习实战)
方差指的是模型之间的差异,而偏差指的是模型预测值和数据之间的差异。我们需要找到方差和偏差的折中。
二、岭回归的概念
在进行特征选择时,一般有三种方式:
- 子集选择
- 收缩方式(Shrinkage method),又称为正则化(Regularization)。主要包括岭回归个lasso回归。
- 维数缩减
,
通过确定
的值可以使得在方差和偏差之间达到平衡:随着
的增大,模型方差减小而偏差增大。

对
求导,结果为

令其为0,可求得
的值:

三、实验的过程
我们去探讨一下取不同的
对整个模型的影响。

MATLAB代码
主函数
%% 岭回归(Ridge Regression) %导入数据 data = load('abalone.txt'); [m,n] = size(data); dataX = data(:,1:8);%特征 dataY = data(:,9);%标签 %标准化 yMeans = mean(dataY); for i = 1:m yMat(i,:) = dataY(i,:)-yMeans; end xMeans = mean(dataX); xVars = var(dataX); for i = 1:m xMat(i,:) = (dataX(i,:) - xMeans)./xVars; end % 运算30次 testNum = 30; weights = zeros(testNum, n-1); for i = 1:testNum w = ridgeRegression(xMat, yMat, exp(i-10)); weights(i,:) = w'; end % 画出随着参数lam hold on axis([-9 20 -1.0 2.5]); xlabel log(lam); ylabel weights; for i = 1:n-1 x = -9:20; y(1,:) = weights(:,i)'; plot(x,y); end
讯享网
岭回归求回归系数的函数
讯享网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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33573.html