6.正则化

6 正则化

过拟合

当我们选择了过多的特征时,假设函数可能会拟合数据集非常好($J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2\approx0$), 但对新数据的泛化能力很差。

image-20241221161252583

左图:欠拟合 高偏差(high bias) 右图:过拟合 高方差(high variance)

image-20241221161525443

我们可以绘制数据点的分布,来决定假设函数合适的多项式阶次。

如何解决过拟合:

(1)减少特征的数量(手动选择保留哪些特征、模型选择算法(自动选择保留哪些特征))

(2)正则化(保留所有特征,但减少量级或参数$\theta_j$的大小)当各特征都对预测y提供作用时,该方法是有用的。

image-20241221162001230

代价函数

假设我们修改代价函数,惩罚$\theta_3$和$\theta_4$,让这俩参数尽量小,那么假设函数就会更简单、更平滑。

image-20241221164426548

当参数更小时,假设函数就会更简单、更平滑、更不容易出现过拟合。

由于我们事先不知道该减少哪些参数的大小,我们将正则化项加入到代价函数中,让所有参数$\theta$尽量小,减少过拟合。

注意:正则化项一般不对$\theta_0$进行惩罚。

image-20241221164627601

$\lambda$是一个正则化参数,控制两个目标(更好地拟合目标or保持参数尽量小)的取舍。$\lambda$太大欠拟合,太小过拟合

$\lambda$太大时,$\theta_1,\theta_2,\theta_3,\theta_4\approx0$, $h_\theta(x)=\theta_0$成为一条直线,发生欠拟合。

image-20241221165454444

正则化的线性回归模型

线性回归的代价函数为$J(\theta)=\frac{1}{2m}\sum_{i=1}^m[((h_\theta(x^{(i)})-y^{(i)})^2]$

添加正则化项后:$J(\theta)=\frac{1}{2m}\sum_{i=1}^m[((h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^{n}\theta_j^2]$

我们的代价函数如下,我们需要找到合适的$\theta$来最小化代价函数。

image-20241221201123255

线性回归可以用梯度下降和正规方程来找到最佳的参数$\theta$

梯度下降方法中,参数$\theta_0$的更新方程与之前一样(因为正则化项未对$\theta_0$进行惩罚);其余参数的更新方程如下。我们将关于$\theta_j$的项整理在一起,其系数为$1-\alpha\frac{\lambda}{m}<1$, 后面项与没有正则化方法的更新一致。所以正则化梯度下降方法,每次更新将参数$\theta_j$慢慢变小,慢慢向0靠近,同时参数更新方法未改变。

image-20241221201231079

正规方程方法中,矩阵$X$的第i行由第i个样本的特征向量组成。

image-20241221205121828

我们去最小化$J(\theta)$,我们令$J(\theta)$对各参数$\theta$的偏导等于0,得到$\theta=(X^TX+\lambda L)^{-1}X^Ty$, 其中
$$
L=\left[
\begin{matrix}
0 & & & \
& 1 & & \
& & \ddots & \
& & & 1 \
\end{matrix}
\right]
$$
当样本个数$m\le n$特征数量,$X^TX$是不可逆的non-invertible,但当$\lambda>0$时,$X^TX+\lambda L$一定是可逆的invertible

正则化的逻辑回归模型

逻辑回归的代价函数为$J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]$

添加正则化项后:$J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]+\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2$

注:这个代价函数看上去同正则化线性回归的式子一样,但是两个$h$不同,所以有很大差别。$\theta_0$不参与任何正则化

image-20241221212723160

逻辑回归可以用梯度下降和高级算法来找到最佳的参数$\theta$

梯度下降算法中,由于$\theta_0$不参与正则化,参数$\theta_0$的更新公式不变;其余参数的更新公式如下。

image-20241221212802561

高级算法中,我们需要自己实现计算$J(\theta)$ 和 $J(\theta)$对各个参数的偏导。

image-20241221213819716
1
2
3
4
5
6
7
8
9
10
import numpy as np
def costReg(theta, X, y, learningRate):
theta = np.matrix(theta)
X = np.matrix(X)
y = np.matrix(y)
first = np.multiply(-y, np.log(sigmoid(X*theta.T)))
second = np.multiply((1 - y), np.log(1 - sigmoid(X*theta.T)))
reg = (learningRate / (2 * len(X))* np.sum(np.power(theta[:,1:the
ta.shape[1]],2))
return np.sum(first - second) / (len(X)) + reg

6.正则化
http://example.com/2025/02/16/6 正则化/
作者
Dongxuan Liu
发布于
2025年2月16日
许可协议