首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习——鲁棒学习

虽然最小二乘学习法师非常实用的机器学习方法,但是当训练样本中包含异常值的时候,学习效果非常易于受到影响。效果如下:

这里我们引入了Huber损失函数,Huber loss是为了增强平方误差损失函数(squared loss function)对噪声(或叫离群点,outliers)的鲁棒性提出的。其定义如下:

该函数的图像如下:

当a的值较小时,该函数为二次函数,当a的值较大时,该函数为线性函数, 当|a| = delta时两函数具有相等的值和不同的斜率。变量a通常是指残差,即观测值和预测值之间的差值a = y - f(x)。所以上面的式子可以被扩展为:

然后我们使用L1约束LS中使用的方法,使用L2控制L1,代码如下:

clear; closeall; clc;

n = 10;% 训练样本个数

N = 1000;% 测试样本个数

x = linspace(-3,3,n)';

X = linspace(-4,4,N)';

y = x + 0.2*randn(n,1);% 拟合的函数

y(n) = -4;% 坏点

H(:,1) = ones(n,1);

H(:,2) = x;

t0 = H\y;

t2 = t0;

e = 1;

foro = 1:1000

r = abs(H*t0 - y);

w = ones(n,1);

w(r>e) = e./r(r>e);

t = (H'*(repmat(w,1,2).*H))\(H'*(w.*y));

ifnorm(t - t0)

break;

end

t0 = t;

end

P(:,1) = ones(N,1);

P(:,2) = X;

F1 = P*t;

F2 = P*t2;% L2约束的最小二乘

plot(X,F1,'r-','linewidth',2);

hold on

plot(X,F2,'g--','linewidth',2);

plot(x,y,'bo','linewidth',2);

axis([-4,4,-4.5,3.5]);

legend('Robust Least Square','L_2 Consttrained LS','Training Samples');

运行结果如下:

以上就是今天推送的内容,欢迎讨论。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180404G1ZAE400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券