吴恩达机器学习(七)——正则化解决过拟合

吴恩达机器学习(七)正则化解决过拟合

过拟合

无论线性回归还是逻辑回归均可能出现过拟合问题。举一个线性回归过拟合的例子。
代码如下:

%% 过拟合举例
% 作者:sddfsAv
% 日期:20190429
% 编程环境:Octave5.1.0
clear
clc

%% 生成数据集
x1=[1:4 5:0.5:8 9:0.2:10];
y1=0.01*x1.^3-0.1*x1-5;
x=[x1 11:15];
y=[y1 y1(end)*ones(1,5)];

%% 拟合
x_1=x;
x_2=x.^2;
x_3=x.^3;
x_4=x.^4;
x_5=x.^5;
X=[ones(length(x),1) x_1' x_2' x_3' x_4' x_5'];
theta=inv(X'*X)*X'*y';

%% 实际曲线与拟合曲线对比
x2=1:0.1:16.5;
x_1=x2;
x_2=x2.^2;
x_3=x2.^3;
x_4=x2.^4;
x_5=x2.^5;
X_test=[ones(length(x2),1) x_1' x_2' x_3' x_4' x_5'];
y_overfitting=theta'*X_test';
plot(x,y,'*',x2,y_overfitting)
title('Overfitting Example')  % Octave坑爹不能用中文
xlabel('x');ylabel('y');
legend('Real Curve','Overfitting Curve','location','northwest'); % 还是不能用中文,中式英文凑合看吧
print -dpng figure1

拟合结果:
在这里插入图片描述
从图中可以看到拟合的曲线呈现上升的趋势,而实际上在 x > 10 x>10 x>10 y y y的值基本不再发生变化。所以这样的预测函数 h θ ( x ) h_\theta(x) hθ(x)是不可接受的。

正则化

正则化可以在一定程度上削弱过拟合。正则化的核心在于改变目标函数,相比于线性回归的目标函数,应用于正则化的目标函数为:
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ i = 1 m θ j 2 ] J(\theta)=\frac{1}{2m}[\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum^{m}_{i=1}\theta^2_j] J(θ)=2m1[i=1m(hθ(x(i))y(i))2+λi=1mθj2]
通过对 θ \theta θ求导可以得到解析解(也可以使用梯度下降法)
θ = ( X X T + λ [ 0 0 ⋯ 0 0 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 . . . 1 ] ) − 1 X T y \boldsymbol\theta =(XX^T+\lambda \left[ \begin{matrix} 0 & 0 & \cdots & 0 \\ 0 & 1 & \cdots& 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & ... & 1 \end{matrix} \right])^{-1}X^Ty θ=(XXT+λ000010...001)1XTy
λ > 0 \lambda>0 λ>0时,上式中矩阵必定可逆。
λ = 5 \lambda=5 λ=5,对上面的代码稍作修改即可得到拟合结果。
在这里插入图片描述
可以看出正则化后的预测函数在一定程度上削弱了拟合的精度,但同时也削弱了过拟合效应,至少预测结果不会成为“错误”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值