机器学习中对过拟合的策略及方法

Hello,大家好,我是Tony:

欢迎访问我的个人主页:Tony’s blog,让我们一起站在巨人的肩膀上。

机器学习中对过拟合的策略及方法
上一张男神的照片,该笔记配合Andrew Ng课程Maching Learning 课时7-1至7-4

对于过拟合的建议

1、减少特征的数量

这里要说明一点对于一类数据,它的拟合数据为:
y=θ0+θ1x1+θ2x12+θ3x13+...+θnx1n y=\theta_0+\theta_1*x_1+\theta_2*x_1^2+\theta_3*x_1^3+...+\theta_n*x_1^n
这里描述的拟合曲线只是一个特征x1!
y=θ0+θ1x1+θ2x12+θ3x13+...+θnx1n+θ0+θ1x2+θ2x22+θ3x23+...+θnx2n+θ0+θ1x3+θ2x32+θ3x33+...+θnx3n y=\theta_0+\theta_1*x_1+\theta_2*x_1^2+\theta_3*x_1^3+...+\theta_n*x_1^n\\+\theta_0'+\theta_1'*x_2+\theta_2'*x_2^2+\theta_3'*x_2^3+...+\theta_n'*x_2^n\\+\theta_0''+\theta_1''*x_3+\theta_2''*x_3^2+\theta_3''*x_3^3+...+\theta_n''*x_3^n
这里描述的拟合曲线是个3特征x1、x2、x3!

  • 手动选择数量合适的特征

  • 模型选择算法

2.正则化

  • 保留所有特征并减少参数theta的大小

  • 当我们有很多特征时效果很好,每个特征都对y的预测有所帮助;

对于过拟合的具体做法

λj=1nθj2 \lambda \sum_{j=1}^{n} \theta_{j}^{2}

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2] J(\theta)=\frac{1}{2 m}\left[\sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+\lambda \sum_{j=1}^{n} \theta_{j}^{2}\right]

lambda 是正则化参数

1、线性回归正则化的具体做法:

i.梯度下降算法

Repeat:

{

Before:
θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i) \theta_{0}:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{0}^{(i)}
Later:

机器学习中对过拟合的策略及方法
θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))xj(i) \theta_{j}:=\theta_{j}\left(1-\alpha \frac{\lambda}{m}\right)-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}
}

ii.正则化方程算法

机器学习中对过拟合的策略及方法

2、逻辑回归正则化的具体做法

Before
J(θ)=[1mi=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))] J(\theta)=-\left[\frac{1}{m} \sum_{i=1}^{m} y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]
====>>

机器学习中对过拟合的策略及方法

i.梯度下降算法

Repeat

{

Before:
θj:=θjα1mi=1m(hθ(x(i))y(i))x0(i) \theta_{j}:=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{0}^{(i)}
Later:
机器学习中对过拟合的策略及方法
}

ii.高级优化

function [jVal,gradient]=costFunction(theta)

机器学习中对过拟合的策略及方法