图解机器学习-L1约束的Huber损失最小化学习-matlab

本文通过Matlab代码展示了不同类型的最小二乘学习方法,包括标准最小二乘、带有l1约束的最小二乘及Huber损失下的最小二乘,并对结果进行了可视化比较。

 

>> rand('state',0);randn('state',0);
n=50;N=1000;x=linspace(-3,3,n)';X=linspace(-3,3,N)';
pix=pi*x;y=sin(pix)./(pix)+0.1*x+0.2*randn(n,1);
y(n/2)=-0.5;
 hh=2*0.3^2;l=0.1;e=0.1;
x2=x.^2; X2=X.^2;
t0=randn(n,1);
%l2最小二乘学习
k=exp(-(repmat(x2,1,n)+repmat(x2',n,1)-2*x*x')/hh);
K=exp(-(repmat(X2,1,n)+repmat(x2',N,1)-2*X*x')/hh);
t1=k\y;F1=K*t1;t2=(k^2+l*eye(n))\(k*y);F2=K*t2;
figure(1);clf;hold on;axis([-3 3 -1 1.5]);
plot(x,y,'bo');
plot(X,F1,'g-');
plot(X,F2,'K-');
%l1约束的l2最小二乘学习
for o=1:1000
t=(k^2+l*pinv(diag(abs(t0))))\(k*y);
if norm(t-t0)<0.001,break,end
t0=t;
end
F3=K*t;
plot(X,F3,'r-');
%huber
for o=1:1000
r=abs(k*t0-y);w=ones(n,1);w(r>e)=e./r(r>e);
Z=k*(repmat(w,1,n).*k)+l*pinv(diag(abs(t0)));
t=(Z+0.000001*eye(n))\(k*(w.*y));
if norm(t-t0)<0.001,break,end
t0=t;
end
F4=K*t;
plot(X,F4,'m-');
>> 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值