zoukankan      html  css  js  c++  java
  • 吴恩达机器学习笔记四_正则化

    正则化

    为什么要正则化

    观察上图三个拟合曲线,我们可以得知:曲线一没有很好地分类;曲线三分类过于严格,以至于曲线过于复杂;曲线二是比较合适的分类曲线。

    对两种特殊情况定义:图一是“欠拟合”(underfit),图三是“过拟合”(overfit)。一般来说,我们加大特征向量( heta)的维度,可以避免欠拟合的情况。但( heta)的维度多少才合适是一个问题?如果维度过高,就会造成图三的情况,这时候正则化就是一种比较有效的自适应方式。

    正则化的思路

    正则化的思路就是:想办法将多余的特征向量( heta)权值降低,以致十分趋近零;这时候我们几乎可以忽略这些多余的特征向量,也就达到了降低维度的目的。

    思路很简单,可以参考上图进一步理解。简单来说,就是在(J=Cost(h( heta))),即代价函数中给部分多余的( heta)加上权值很高的惩罚项,那么随着代价值最小化,多余( heta)的自身权值也会逐渐降低。具体的算法在下面。

    [J( heta) = frac{1}{2m}[sum_{i=2}^m(h_ heta(x^{(i)})-y^{(i)})^2+lambdasum_{j=1}^n heta_j^2] ]

    因为我们很难直观上判断哪一个特征向量是多余的,所以每一个( heta)都要进行“惩罚”。其中,(lambdasum_{j=1}^n heta_j^2)叫做正则化项(lambda)叫做正则化参数。正则化参数如何选择,会在后面的课程中讲到。

    用正则化改进所学算法

    下面举两个例子,看看正则化改进之后如何。

    正则化线性回归

    对于线性回归的梯度下降算法:

    记住,梯度下降算法是同步更新的。公式如下:

    [ heta_j = heta_j(1-alphafrac{lambda}{m}) - alphafrac{1}{m}sum_{i=1}{m}(h_ heta(x^{(i)})-y^{(i)})x_j^{(i)} ]

    对于正规方程,正则化不仅可以优化特征维度,还可以将原本不可逆的方程转化成可逆方程,如下。简单地理解就是,正规方程之所以不可逆,就是特征维度与数据维度不一致,优化特征维度后使之趋同,就转化成可逆的了。

    正则化对率回归

    对率回归暂时没学到正规方程,只有梯度下降算法。梯度下降算法形式上与线性回归的一致,只是(h( heta)=frac{1}{1+e^{- heta T x}})。另外的,两者的代价函数形式也是不同的。

    NG还给了正则化后的高级优化方法,只需要在计算jVal时在后面加上一个正则化项以及在梯度后面减去一个(frac{lambda}{m} heta_j)即可。如下:

    jVal是代价函数的值,使用fminunc(@costFunction)可以最小化代价函数。gradient是Cost的导数,gradient(1)找的是Cost的常数项,没有正则化项。

    参考

    Coursera机器学习笔记(六) - 正则化

  • 相关阅读:
    一个爬虫的练习(妹子图)
    安装模块出现的编译问题(解决)
    基于套接字通信的简单练习(FTP)
    Python3 之选课系统
    数据爬取后台(PHP+Python)联合作战
    让pip 使用国内镜像源
    为啥学蛇和python10年后的变化
    模拟登陆百度以及Selenium 的基本用法
    冒泡排序及其效率分析(无聊搞来玩玩)
    LLVM编译器
  • 原文地址:https://www.cnblogs.com/ChanWunsam/p/9865233.html
Copyright © 2011-2022 走看看