MATLAB实现岭回归数学建模算法

岭回归(Ridge Regression)是一种线性回归的扩展,用于处理多重共线性(multicollinearity)的问题。多重共线性是指自变量之间存在高度相关性的情况,这可能导致线性回归模型的不稳定性和过拟合。

岭回归通过在损失函数中添加一个正则化项,即岭项(Ridge term),来解决多重共线性问题。正则化项的引入有助于限制模型参数的大小,防止它们过度膨胀。岭回归的优化目标是最小化损失函数和正则化项的和。

MATLAB实现岭回归数学建模算法_第1张图片

岭回归在统计建模和机器学习中被广泛应用,特别是当数据集中存在共线性问题时。

%b=ridge(y,x,k,s);
%b是岭回归模型中的系数向量β=[β0,β1,β2,...,βn],β0是常数项,β1到βn是自变量x1到xn对应的系数
%y是因变量向量
%x是自变量矩阵,x=[x1,...,xn],每个xi都是列向量
%k是岭参数,岭参数不同,岭回归模型不同,要选取合适的岭参数
%s这个位置的参数只能填0或1,或者不填默认为0。0表示输出的系数β该是多少就是多少,1表示输出系数β是标准化后的
x1=disaster(:,1)
x2=disaster(:,2)
x3=disaster(:,3)
x4=disaster(:,4)
x5=disaster(:,5)
x6=disaster(:,6)
x7=disaster(:,7)
x8=disaster(:,8)
x9=disaster(:,9)
y=disaster(:,10)

x=[x1,x2,x3,x4,x5,x6,x7,x8,x9];
%先画出岭迹图,以便选取合适的岭参数
k=0:1e-3:10;%岭参数
b=ridge(y,x,k);%回归系数
figure(1);
%岭迹图,一般选取开始平稳的“拐点”处的k值
plot(k,b)
xlabel('k')
ylabel('β')
title('ridge trace')
legend('x1','x2','x3','x4','x5','x6','x7','x8','x9')



%每个k对应的残差平方和的图,要选取会使残差平方和小的k值
knum=size(b,2);
sse=zeros(knum);
y_gu=zeros(18,knum);
for j=1:knum
    t=0;
for i=1:10
    y_gu(i,j)=b(1,j)*x1(i)+b(2,j)*x2(i)+b(3,j)*x3(i)+b(4,j)*x4(i)+b(5,j)*x5(i)+b(6,j)*x6(i)+b(7,j)*x7(i)+b(8,j)*x8(i)+b(9,j)*x9(i);
    t=(y_gu(i,j)-y(i))^2+t;
end
    sse(j)=t;
end
figure(2);
plot(k,sse)
xlabel('k')
ylabel('SSE')
title('残差平方和与k的关系图')

%下面均是岭参数k=2情况
b1=ridge(y,x,0.143,0);%2是岭参数。最后一个位置的参数,是否输出标准化系数,0否1是
%y_gu=[[ones(18,1),x(:,:)].*b1];%用岭回归模型求出来的函数估计值(向量)

你可能感兴趣的:(数学建模\MATLAB,算法,matlab,回归,数学建模,数据挖掘)