公式书写的问题测试 @WRITE站点

七、正则化(Regularization)

7.1 过拟合的问题

参考视频 : 7 - 1 - The Problem of Overfitting (10 min).mkv

我们目前学习了线性回归和逻辑回归算法,它们能有效地解决问题,但将其应用到特定的机器学习应用是,会遇到过拟合(over-fitting)的问题,导致模型的预测效果变差。

用线性回归中的预测房价举例:
公式书写的问题测试 @WRITE站点
第一个模型是一个线性模型,属于欠拟合;第三个是一个四次方的模型,过分地拟合了原始数据,丢失了算法的本质:预测新数据,它预测新数据的表现一定会很差!

分类问题举例:
公式书写的问题测试 @WRITE站点

以多项式理解,x的次数越高,拟合的越好,但相应的预测新数据的能力就变得很差!

发现了过拟合问题,我们应该如何处理?
1. 丢弃一些不能帮助我们正确预测的特征。可以手工选择保留那些特征,或使用一些模型选择的算法(PCA等)来帮助清洗数据
2. 正则化。保留所有的特征,但是减小参数的大小(magnitude)

7.2 代价函数

参考视频 : 7 - 2 - Cost Function (10 min).mkv

在回归问题中假设模型是:hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44,我们可以看出来:正是那些高次项导致了过拟合的产生。所以如果我们能让这些高次项的系数接近于0的话,我们就能很好的拟合了。

如何减小高次项的系数θ值呢?这就是正则化的基本方法。如果要减小θ3,θ4,我们需要修改代价函数,为θ3,θ4设置惩罚项。修改后的代价函数如下:

J(θ)=12mi=1m(hθ(x(i))y(i))2+10000θ32+10000θ42minθJ(θ)
之后在最小化代价函数时也会把惩罚项考虑在内,导致选择较小的θ3,θ4

假如我们有非常多的特征,而且不知道哪些特征需要进行惩罚,我们将对所有的特征进行惩罚,一般化的代价函数如下:

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]
其中λ称为正则化参数(Regularization Parameter)。注:根据惯例,我们不对θ0进行惩罚。经过正则化出里的模型与原模型的可能对比如下图所示:
公式书写的问题测试 @WRITE站点
如果选择的正则化参数过大,则会把所有的参数都最小化了,导致模型变成hθ(x)=θ0,也就是上图中的红色直线,是欠拟合。

所以对于正则化,我们要取一个合理的正则化参数值,这样才能取得比较好的效果。

7.3 正则化线性回归

之前介绍过两种求解线性回归的算法:一种基于梯度下降,一种基于正规方程。

(一)基于梯度下降求解正则化线性回归:

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]minθJ(θ)

梯度下降算法为:

Repeat{ θj:=θjαθjJ(θ) }

求偏导数,分为j=0无惩罚和j≠0有惩罚:

{j=0,θ0J(θ)=1mi=1m(hθ(x(i))y(i))x0(i)j0,θjJ(θ)=1m[i=1m(hθ(x(i))y(i))xj(i)+λθj]

所以正则化线性回归的梯度下降算法为:
Repeat{

θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i)θj:=θjα1m[i=1m(hθ(x(i))y(i))xj(i)+λθj]
}

(二)基于正规方程求解正则化线性回归:

θ=(XTX+λ[0111])1XTy
其中矩阵大小为(n+1)*(n+1)

7.4 正规化逻辑回归

参考视频:7 - 4 - Regularized Logistic Regression (9 min).mkv

公式书写的问题测试 @WRITE站点
逻辑回归的代价函数:

J(θ)=1mi=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

正则化后的代价函数:

J(θ)=1mi=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθj2

所以正则化逻辑回归的梯度下降算法为:
Repeat{

θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i)θj:=θjα1m[i=1m(hθ(x(i))y(i))xj(i)+λθj]
}

注意:虽然正则化逻辑回归的梯度下降的表达式和正则化线性回归的看起来一样,但是逻辑回归的hθ(x)=g(θTx)与线性回归hθ=θTx不同。记住θ0不参与正则化。

目前大家对机器学习算法可能还只是略懂,不过一旦你精通了线性回归、高级优化算法和正则化技术,就已经说明你对机器学习理解已经非常深入了。