图解机器学习-Huber损失最小化学习-matlab源码及结果

鲁棒这个词第一次听是在学习c语言的时候,那时候还学了一个健壮性,两个词不知道为什么觉得很粗鲁,跟程序没啥关系,感觉是凑上来的性质,下面就看看在机器学习里面的鲁棒是个啥东西?

最小二乘法学习的过程中如果有异常数据(不可避免地)出现的时候,会使曲线的拟合程度大打折扣,这时候提出鲁棒的观点就是:在统计学领域和机器学习领域,对异常数据也能保持稳定,可靠的性质,称为鲁棒性。

L1损失最小化学习:(L1损失对残差增幅加以抑制的学习算法)-LA=Least Absolute-最小绝对值偏差学习-----好多名字

Huber(有效性L2与鲁棒性L1结合的学习方法)

如果残差的绝对值小于阀值,上式变为L2损失;如果残差的绝对值大于阀值。上式就变为L1损失。为了与L2损失平滑的连接,在L1损失中减去常数\eta ^{2}/2

 

第三步:计算终结计数。按Tukey理论,采取改进措施前后产品合格率若发生显著变化,则A,B两系列的数据就不会完全重叠,未重叠的数据个数即为终结计数。分别从顶端和底端计数未重叠的数据个数,称之为顶端终结计数和底端终结计数,两端终结计数之和即为总终结计数。若某一系列的数据区间被另一比对系列的数据区间全部包含,则总终结计数计为零(如本例所示);若两系列的数据区间不存在一个系列完全包含另一个系列的状况,则计数方法为:从已合并排序的整个数据列的顶端第一个数据开始数起,一直数到序列标记变更为止,连续的同系列数据的个数为顶端终结计数;若在数据系列变更时,对应的两个数据相等,则变更时的那个数据按1/2计数。同理,从底端第一个数据开始数起,一直到序列标记变更为止,可得底端终结计数值。示例如下:

第四步:将所得的终结计数值与Tukey检验的某置信水平下终结计数的临界值比较,如果所得的终结计数值大于该临界值,则表明采取改进措施后,在该置信水平下可以认为产品合格率发生了变化。(下图中的显著水平针对的双边计数(Two-Sided),若单边计数(One-Sided)则对应的显著水平为图示的一半,即双边计数时显著水平5%对应的终结计数临界值与单边计数时显著水平为2.5%对应的终结计数临界值是一样的)

第五步:结论。终结计数EC=0,而根据上表可以看出,在95%的置信水平(也就是5%的显著水平)下,终结计数的临界值为7。所以在95%的置信水平下,不能认为采取措施后,产品合格率发生了显著变化。如果终结计数EC=8,则表明在95%的置信水平下,可以认为采取措施后,产品合格率发生了显著变化(改进有效果)。

好了上面的部分是贴过来的tukey相关的一种看看有没有显著变化的方法,感觉这种统计学的方法很难,但是本公式里面权值部分的tukey在接下来的章节中会讲到,所以这部分不理解也关系了。

专门讲解HSD方法的:https://wiki.mbalib.com/wiki/HSD%E6%A3%80%E9%AA%8C%E6%B3%95

matlab源码以及实验的运行结果:

>> rand('state',0);randn('state',0);
n=10;N=1000;x=linspace(-3,3,n)';X=linspace(-4,4,N)';
y=x+0.2*randn(n,1);y(4)=-4;
p(:,1)=ones(n,1);p(:,2)=x;t0=p\y;e=1;
>> for o=1:1000
r=abs(p*t0-y); w(:,1)=ones(n,1);w(r>e)=e./r(r>e);
t=(p'*(repmat(w,1,2).*p))\(p'*(w.*y));
if norm(t-t0)<0.001,break,end
t0=t;
end
>> P(:,1)=ones(N,1); P(:,2)=X; F=P*t;
>> figure(1);clf;hold on;axis([-4 4 -4.5 3.5]);
>> plot(x,y,'bo');
>> plot(X,F,'g-');

 

 

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值