解决过拟合的一些方法
为了减少过拟合,一般有两种方法:
1、减少一些特征。其手段也分为手动选择要丢掉的特征和使用一些算法来丢掉部分特征。但是减少特征就意味着丢失信息,所以要谨慎丢弃特征。
2、在模型中加入正则化项。使用正则化项时不用删除特征。
正则化项的作用
正则化项的使用其思想是
让某些特征的参数尽可能小(这也叫做对某些参数的惩罚),从而让这个特征所占的重要性变低。
例如某个模型为$f(x) = w1 x + w_2 x^2 + w_3 x^3 + w_4 x^4$ + b,其对应的目标函数是$argmin{(w, b)} \sum{i=1}^{m} [f(x_i) - y_i]^2$,那么可以对目标函数
加入正则化项得:$argmin{(w,b)}\sum_{i=1}^{m}[f(x_i) - y_i]^2 + 1000w_3^3 + 1000w_4^4$,来使训练后的模型中$w_3$和$w_4$尽可能小,从而使得特征$x^3$和$x^4$在模型中的作用减小。
但在实际操作中,通常不知道需要让哪些参数尽可能小,所以我们让所有的参数都尽可能小。
通常我们使用两种正则化项:L1正则化和L2正则化
L1正则化
以线性模型为例,加入L1正则化的损失函数形式为: $\sum{i=1}^{m} [wx_i+b-y_i]^2 + \lambda\sum{i=1}^{d}|w_i|$。
使用L1正则化通常会导致模型会将一部分特征的权重值清零,而只保留少部分特征的权重值,这种特性也被叫做特征选择。L2正则化
同样以线性模型为例,加入L2正则化的损失函数形式为:$\sum{i=1}^{m}[wx_i + b - y_i]^2 + \lambda \sum{i=1}^{d}w_i^2$。
如果是使用标准方程法求解的话,其解的形式为:
而且在加入正则化项后,标准方程法中的括号部分的矩阵一定可逆。
使用L2正则化通常会使特征的权重值分配得比较均匀,即使在特征很多的情况下。使用正则化项的一些注意
1、$\lambda$不能设置得过大。$\lambda$越大,$w$的自由度就越小,$\lambda$越小,$w$的自由度就越高
2、一般不惩罚常数参数$b$