之前介绍的是部分空间约束的最小二乘法,基本最小二乘法中,所求参数θ 是在全体参数空间求取,而部分空间约束的最小二乘法,则是通过把参数空间约束在一定范围内,来防止过拟合现象。其目标函数的表达式如下:
今天要介绍 L2约束的最小二乘法,又叫正则化最小二乘法,岭回归。具体形式就是在最小二乘的误差函数后面加了一个正则项(或惩罚项),表达式如下:
矩阵形式如下:
后面这个正则项是为了防止过拟合(尽可能经过每个样本,导致拟合的函数呈有很多小波浪),因为我们是要最小化J函数,theta值的增大会增加J的值,相当于一种惩罚,也是一种防止模型过于复杂的方法。
还是之前的套路,求偏导,为0,然后我们就可以得到:
代码如下:
clear; closeall; clc;
n = 50;% 训练样本个数
N = 1000;% 测试样本个数
x = linspace(-3,3,n)';% n个样本服从-3到3的均匀分布
X = linspace(-3,3,N)';
pix = pi*x;
y = sin(pix)./pix - 0.01*x + 0.05*randn(n,1);% 拟合的函数
x2 = x.^2;
X2 = X.^2;
hh = 2*0.3^2;
lambda = 0.1;
H = exp(-(repmat(x2,1,n) + repmat(x2',n,1) - 2*x*x')/hh);
P = exp(-(repmat(X2,1,n) + repmat(x2',N,1) - 2*X*x')/hh);
t1 = H\y;% 这里的t就是文中的x,H\y = inv(H'*H)*H'*y
F1 = P*t1;
t2 = (H^2 + lambda*eye(n))\(H*y);
F2 = P*t2;
plot(X,F1,'g-','linewidth',2);
hold on
plot(X,F2,'r--','linewidth',2);
plot(x,y,'bo','linewidth',2);
axis([-2.8,2.8,-0.4,1.2]);
legend('Least Square','L_2 Consttrained LS','Training Samples');
代码运行结果如下:
分析结果可知,基础的LS明显出现了过拟合现象,而L2约束的LS就拟合的非常好。
以上就是今天推送的内容,欢迎讨论。
领取专属 10元无门槛券
私享最新 技术干货