2025年简单易学的机器学习算法——岭回归(Ridge Regression)

简单易学的机器学习算法——岭回归(Ridge Regression)一 一般线性回归遇到的问题 在处理复杂的数据的回归问题时 普通的线性回归会遇到一些问题 主要表现在 预测精度 这里要处理好这样一对为题 即样本的数量和特征的数量 时 最小二乘回归会有较小的方差 时 容易产生过拟合 时 最小二乘回归得不到有意义的结果

大家好,我是讯享网,很高兴认识大家。

一、一般线性回归遇到的问题

    在处理复杂的数据的回归问题时,普通的线性回归会遇到一些问题,主要表现在:

  • 预测精度:这里要处理好这样一对为题,即样本的数量
    讯享网和特征的数量
    • 时,最小二乘回归会有较小的方差
    • 时,容易产生过拟合
    • 时,最小二乘回归得不到有意义的结果
  • 模型的解释能力:如果模型中的特征之间有相互关系,这样会增加模型的复杂程度,并且对整个模型的解释能力并没有提高,这时,我们就要进行特征选择。

以上的这些问题,主要就是表现在模型的方差和偏差问题上,这样的关系可以通过下图说明:


(摘自:机器学习实战)

方差指的是模型之间的差异,而偏差指的是模型预测值和数据之间的差异。我们需要找到方差和偏差的折中。

二、岭回归的概念

    在进行特征选择时,一般有三种方式:

  • 子集选择
  • 收缩方式(Shrinkage method),又称为正则化(Regularization)。主要包括岭回归个lasso回归。
  • 维数缩减
    岭回归(Ridge Regression)是在平方误差的基础上增加正则项

,

通过确定的值可以使得在方差和偏差之间达到平衡:随着的增大,模型方差减小而偏差增大。

    对求导,结果为


令其为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 

小讯
上一篇 2025-01-29 07:34
下一篇 2025-03-08 13:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33573.html