matlab岭回归

岭回归是改进的最小二乘估计,通过引入正则化项提高模型稳定性。文中提供了两种梯度下降法实现,一种是固定学习率,另一种是自适应学习率,用于求解最优权重向量。代码示例展示了如何应用在波士顿房价数据集上。
摘要由CSDN通过智能技术生成

岭回归(英文名:ridge regression, Tikhonov regularization)是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法

岭回归相对于用最小二乘法做的线性回归,就是把经验风险转化为结构风险,也就是正则化(吴雄华说的,不懂)

function w=ridge(data,k)

data=zscore(data);
x=data(:,1:13);%自变量
y=data(:,end);
x=[ones(size(x,1),1),x];
w0=0.1*[1 1 1 1 1 1 1 1 1 1 1 1 1 1]';
f=@(w) (y-x*w)'*(y-x*w)+k*w'*w;%损失函数 相对于最小二乘法多了个k*w'*w
deta=@(w) 2*x'*(x*w-y)+2*w*k;%梯度     相对于最小二乘法多了个2*w*k
ep=0.00001;

%下面使用梯度下降
lr=0.005;
f0=f(w0);
g0=deta(w0);
w1=w0-lr*g0;
f1=f(w1);
t=1;
while(abs(f1-f0)>ep)
    f0=f1;
    w0=w1;
    g=deta(w0);
    w1=w0-lr*g;
    f1=f(w1);
    t=t+1;
end
w=w1;
clear all
clc
data=xlsread("C:\Users\19680\Desktop\波士顿房价数据集.xlsx");
k=0:1:10000;
for n=1:length(k)
w=ridge(data,n);
j(n,:)=w;

end
plot(k,j)
title("此图为cxs所有")
a=[0.00632 18 2.31 0 0.538 6.575 65.2 4.09 1 296 15.3 396.9 4.98];
a=zscore(a);
c=w.*a;
sum(c(:,end))
%reglm

用自适应梯度下降法


function w=ridge(data,k)
data=zscore(data);
x=data(:,1:13);%自变量
y=data(:,end);
x=[ones(size(x,1),1),x];
w0=0.1*[1 1 1 1 1 1 1 1 1 1 1 1 1 1]';
f=@(w) (y-x*w)'*(y-x*w)+k*w'*w;%损失函数
deta=@(w) 2*x'*(x*w-y)+2*w*k;%梯度
ep=0.001;
tiny=1e-10;
%下面使用梯度下降

lr=1;
f0=f(w0);
g0=deta(w0);
s=g0'*g0;%s储存梯度的平方的累加和
w1=w0-lr/sqrt(s+tiny)*g0;
f1=f(w1);
t=1;
while(abs(f1-f0)>ep)
    s=s+g0'*g0;
    g1=deta(w0);
    w1=w0-lr*g1/sqrt(s+tiny);
    f1=f(w1);
    t=t+1;
    f0=f1;
    w0=w1;
    g0=g1;
end
w=w1;
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值