四、正则化

2019-01-15  本文已影响0人  asdfgjsrgdf

欠拟合

      模型拟合程度不高,数据距离拟合曲线较远,或指模型没有很好地捕捉到数据特征,不能够很好地拟合数据

过拟合(“算法具有高方差”)

      对于一个问题,有许多变量,这些变量都与该问题似乎相关,但训练集的规模相对很小,常常会导致过拟合问题
      拟合一个高阶多项式,这个假设函数能拟合几乎所有数据,但无法泛化到新的样本中(函数太庞杂,没有足够的数据去约束)
      泛化:一个假设模型应用到新样本的能力

欠拟合
过拟合
较好的拟合

解决

      1.尽量减少选取变量的数量:
            1)人工检查取舍
            2)模型选择算法(自动选择哪些取哪些舍)
      2.正则化:保留所有变量但减少参数的量级

正则化原理

      在代价函数中加入惩罚项:
min_\theta \frac{1}{2m}\sum(h_\theta(x^{(i)})-y^{(i)})^2+\lambda \sum_{i=1}^{n}\theta_j^2
      其中\lambda\sum\theta_j惩罚项,前面的系数是一个大数,如1000。如此,在优化的过程中\theta_j会尽可能地变小,趋向于0。相当于去掉了一些参数,使“曲线”更平滑
      不惩罚\theta_0是约定俗成,在实践中惩不惩罚差别不大。对于其他参数都施加惩罚,因为不知道哪些应该被缩小
      \lambda控制了两个不同目标之间的取舍(均衡):
            1)更好地拟合训练集
            2)保持参数尽可能小(模型尽可能简单)
      显然,\lambda越大惩罚越大,越接近目标2、远离目标1
      例如,当其非常大时,得到的假设函数近似为:
                                                            h_\theta(x)=\theta_0

lambda很大,显然是个欠拟合的例子

加入正则化的梯度下降

      \theta_0:=\theta_0-\alpha\frac{1}{m}\sum(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}
      \theta_j:=\theta_j-\alpha[\frac{1}{m}\sum(h_\theta(x^{(i)})-y^{(i)})+\frac{\lambda}{m}\theta_j]
            :=\theta_j[1-\alpha\frac{\lambda}{m}]-\alpha\frac{1}{m}\sum(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}            (j!=0)
      由上式可见,\theta_j的更新变成了先乘以一个比1略小的数(0.99之类的数),再进行与引入正则化之前一样的更新操作

加入正则化的正规方程

                                    X=\begin{bmatrix} (X^{(1)})^T \\ (X^{(2)})^T\\ … \\ (X^{(m)})^T \\ \end{bmatrix}

                                         y=\begin{bmatrix} X^{(1)}\\ X^{(2)}\\ … \\ X^{(m)} \\ \end{bmatrix}
                                         \theta=(X^TX+\lambda\begin{bmatrix} 0 \\ &1\\ &&…\\ &&&1 \\ \end{bmatrix})^{-1}X^Ty
           其中\lambda后面的矩阵是一个(n+1)*(n+1)维对角阵(第1行第1列为0)
           在之前提到过不可逆的问题。在这里,只要\lambda严格大于0,则可以确定其不是奇异矩阵
           因此,使用正则化还可以解决不可逆的问题

上一篇下一篇

猜你喜欢

热点阅读