声明

本文章是笔记形式 . 不做任何商业用途 , 主要内容大量取材于

吴恩达机器学习 - 网易云课堂

fengdu78/Coursera-ML-AndrewNg-Notes

fengdu78 笔记忠于视频 , 鄙人又进行了证明方面的加工和自己的理解 .

本著分享知识 , 自作笔记的初衷 , 发布到知乎 .


正文 :

如果我们发现了过拟合问题,应该如何处理?

1. 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一

些模型选择的演算法来帮忙(例如 PCA 降维(后面会提到) )

2. 正则化。 保留所有的特征,但是减少参数的大小(magnitude)。

所以如果我们能让这些高次项的系数接近于 0 ( 消失 ! )的话,我们比较成功地拟合了 .

所以我们要做的就是在一定程度上减小这些参数 θ 的值,这就是正则化的基本方法。对于上面右边的四次多项式 , 我们决定 通过减少 θ3 和 θ4 的大小来减少 x^3 和 x^4 的影响 ,我们要做的便是修改代价函数,在其中 θ3 和 θ4 设置惩罚。 这样做的话,我们在尝试最小化代价函数时也将惩罚纳入考虑,并最终会导致选择较非常小的 θ3 和 θ4。修改后的代价函数如下 ( 假想示例):

通过这样的代价函数选择出的 θ3 和 θ4 对预测结果的影响就比之前要小许多。假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软体来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设:

其中 λ 又称为正则化参数(Regularization Parameter)

如果选择的正则化参数 λ 过大 (10^10),θ0 ~ θ4 所有的参数都接近于 0 了 , 那么模型就变成了 θ0 , 也就是一条直线 .

经过正则化处理的模型与原模型的可能对比如下图所示 (粉色是正则化后的图像 ) :

正则化线性回归

对于线性回归的求解,之前推导了两种学习演算法:一种基于梯度下降,一种基于正规方程。

上面提到的正则化线性回归的代价函数为:

对上面的更新式子进行调整 (通常的 α 很小 , 而 m 很大 , θj 更新的幅度会较小 , 可以看出,正则化线性回归的梯度下降演算法的变化在于,每次都在原有演算法更新规则的基础上令 θ 值减少了额外值 ):

我们同样也可以利用正规方程来求解正则化线性回归模型 ,

如果 样本数 > 特征数 , 那么这个矩阵就是可逆的 ,

如果不 ,那么这个矩阵就是不可逆的 .... 所以样本的数量一定要大 .

正则化逻辑回归

如果我们使用上图右侧的高次多项式 , 逻辑回归有时也会出现过拟合 (overfitting) 的情况 , 我们所要做的就是给代价函数增加一个正则化的表达式,得到代价函数:

# 代价函数实现代码 : python3:
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 : 正则化惩罚项 .
reg = (learningRate / (2 * len(X)))* np.sum(np.power(theta[:,1:theta.shape[1]], 2))
return np.sum(first - second) / (len(X))

要最小化该代价函数,通过求导,得出梯度下降演算法为:

** 看上去同线性回归的表达式一样,但是因为 Sigmoid() 函数的存在, h_	heta(x) = g(	heta^TX)所以与线性回归不同

注意 :

  1. 虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,但由于两者的 h_θ(x)不同所以还是有很大差别。
  2. θ0 不参与其中的任何一个正则化。

目前大家对机器学习演算法可能还只是略懂,但是一旦你精通了线性回归、高级优化演算法和正则化技术,坦率地说,你对机器学习的理解可能已经比许多工程师深入了。现在,你已经有了丰富的机器学习知识,目测比那些矽谷工程师还厉害,或者用机器学习演算法来做产品。(黑人问号 ?? )

接下来的课程中,我们将学习一个非常强大的非线性分类器,无论是线性回归问题,还是逻辑回归问题,都可以构造多项式来解决。你将逐渐发现还有更强大的非线性分类器,可以用来解决多项式回归问题。我们接下来将学会,比现在解决问题的方法强大 N 倍的学习演算法。


推荐阅读:
相关文章