向Andrew Ng的机器学习课程致敬
正则化(Regularization)
问题
如上面两图右侧所示,当模型特征比较多的时候,模型容易过拟合,这会导致模型在训练集上表现很好,但是在测试集上就表现很差。
解决方式
- 减少特征量的两种方式
- 人工筛选特征
- 使用特征选择算法来筛选
- 正则化
- 保留所有的特征,但是减小参数的值
- 适用于某种有很多特征,并且所有特征都对其值有贡献的任务
举例
下面以多变量线性回归为例来说明一下正则化的使用方式及效果。
如下面公式所示,正则化就是在原有的损益函数的后面加上了参数的平方和,
λ
λ
是正则化参数,用来调整正则化作用的。
J(θ)=12m[∑i=1m(hθ(x(i)−y(i)))2+λ∑j=1nθ2j]min J(θ)
J
(
θ
)
=
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
)
2
+
λ
∑
j
=
1
n
θ
j
2
]
m
i
n
J
(
θ
)
- λ λ 设置过大,会导致模型欠拟合,并且梯度下降算法不会收敛(也就是求不出最优解),因此该参数需要取一个合适的值
下面再来算一下之前学的多变量线性回归和逻辑回归模型加上正则化后,梯度下降算法的计算公式
- 损益函数
J(θ)=12m[∑i=1m(hθ(x(i)−y(i)))2+λ∑j=1nθ2j] J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) − y ( i ) ) ) 2 + λ ∑ j = 1 n θ j 2 ] 参数迭代
θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))x(i)0θj:=θj−α[1m∑i=1m(hθ(x(i))−y(i))x(i)0−λmθj] θ 0 := θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) θ j := θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) − λ m θ j ]
即θj:=θj(1−αλm)−α1m∑i=1m(hθ(x(i))−y(i))x(i)0 θ j := θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i )
1−αλm<1 1 − α λ m < 1
因此正则化实际上是在原有的参数更新基础上额外减去一个值,从而对参数其约束作用。正则方程:
当数据矩阵没有逆矩阵的时候(m < n, 即样本数小于特征数),使用正则方程不能求解,但是通过添加一个正则化矩阵可以将其转化为一个可逆的矩阵,从而用正则方程求解。公式如下:
原有的正则方程如下:
θ=(XTX)−1XTy θ = ( X T X ) − 1 X T y
改造后的如下:
θ=(XTX+λ⎡⎣⎢⎢⎢⎢⎢011...1⎤⎦⎥⎥⎥⎥⎥)−1XTy θ = ( X T X + λ [ 0 1 1 . . . 1 ] ) − 1 X T y
这里第一行为0,表示 x0 x 0 ,也即不用对其进行正则化