zoukankan      html  css  js  c++  java
  • Andrew Ng Machine Learning 专题【Logistic Regression & Regularization】

    此文是斯坦福大学,机器学习界 superstar — Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记。

    力求简洁,仅代表本人观点,不足之处希望大家探讨。
    课程网址:https://www.coursera.org/learn/machine-learning/home/welcome

    Week 2:Linear Regression with Multiple Variables笔记:http://blog.csdn.net/ironyoung/article/details/47129523

    Week 3:Logistic Regression & Regularization

    1. Logistic Regression

      1. 对于分类问题而言。非常easy想到利用线性回归方法。拟合之后的h θ (x)>0.5 则为True。其余为False.
      2. 可是线性回归有一个问题,拟合出的值都是离散的。范围不确定。

        为了方便分析。我们希望将拟合出的值限制在0~1之间。

        因此,出现了逻辑回归。

      3. 逻辑回归的模型是一个非线性模型:sigmoid函数,又称逻辑回归函数。但它本质上又是一个线性回归模型,由于除去sigmoid映射函数关系。其它的步骤,算法都是线性回归的。
      4. sigmoid函数(或,逻辑回归函数):g(z)=1/(1+e z ) 。其函数图像为:
        这里写图片描写叙述
        这个函数的特征非常明显
        • 函数值一直在0~1范围内;
        • 经过(0,0.5) 点。这个非常easy作为区分0,1类的分界线。

      5. 逻辑回归中。对于原本线性回归中拟合而成的hypothesis函数,须要经过sigmoid函数的修饰:h θ (x)=θ T xh θ (x)=g(θ T x) 
        此时,h θ (x) 的含义发生了变化,h θ (x)=P(y=1|x;θ) 

        成为

        • ”the probability that y=1, given x, parameterized by θ 
        • 因此有。P(y=0|x;θ)+P(y=1|x;θ)=1 
      6. Decision Boundary。

        表示的是 hypothesis 函数确定之后,划分数据分类的界限。并不一定能够百分百区分数据集,仅仅是函数的属性之中的一个。下图蓝色曲线即为某个 Desicision Boundary。


        Drawing

    2. Cost Function

      1. 回顾线性回归的 cost function,我们在当中插入 cost 函数的概念:J(θ 0 ,θ 1 )=12m  i=1 m (h θ (x (i) )y (i) ) 2 =1m  i=1 m cost(h θ (x (i) ),y (i) )=1m  i=1 m cost(h θ (x),y) 

      2. 全然照搬线性回归的 cost function 到逻辑回归中,由于sigmoid函数的非线性,会造成J(θ) 取值的不断震荡。导致其是一个非凸形函数(non-convex)。表示在“J(θ)θ ”二维图中例如以下:
        Drawing

      3. 我们须要构造一种新的 cost 函数。出发点为:
        • y=1 时,若hypothesis函数拟合结果为0,即为“重大失误”。cost 趋于无穷大;
        • y=0 时,若hypothesis函数拟合结果为1。即为“重大失误”,cost 趋于无穷大;
      4. 构造的新 cost 函数:

        cost(h θ (x),y)={log(h θ (x)),y=1log(1h θ (x)),y=0  

        假设进一步合并,能够得到终于逻辑回归的cost函数。

        而且值得指出的是。代入这个cost函数通过梯度下降法得到的 θ  更新函数依旧成立:

        cost(h θ (x),y)=ylog(h θ (x))(1y)log(1h θ (x)) 
        θ j :=θ j α1m  i=1 m [(h θ (x (i) )y (i) )x (i) j ] 

    3. 梯度下降法的优化

      1. 对于梯度下降法的优化有非常多,可是都须要J(θ) J(θ)θ j   的代码。
      2. 以此为基础的对于梯度下降法的优化(视频中都没有详细介绍,有兴趣的同学能够点击链接)有:
      3. 这些优化方法的特点也非常一致:
        • 不须要人为选择 α 。自适应性
        • 更复杂。更慢
      4. 这里提到了两个MATLAB的非线性优化函数:
        • optimset:创建或编辑一个最优化參数选项。

          详细调用在MATLAB中 help optimset 命令查看。

        • fminunc:最小值优化。详细调用在MATLAB中 help fminunc 命令查看。
      5. 个人建议:Ng在优化这一部分讲的过于简略,基本等于什么都没说……还是要依据这几个方法名称在使用时搜索很多其它。
    4. one vs. all (one vs. rest)

      1. 假设须要进行多类的分类,须要一种精妙的修改,使得两类的分类问题得以适用于多类的分类。


        • 现已知有n类样本须要区分开(1。2。3,……);
        • 以原1类为新1类,剩余的原2,3,……作为新2类。

          原本的多类问题变成了二类问题。h (1) θ (x)=P(y=1|x;θ) 

        • 以原2类为新1类。剩余的原1,3。……作为新2类。再分类,h (2) θ (x)=P(y=2|x;θ) 
        • ……h (i) θ (x)=P(y=i|x;θ) 
        • 对于随意一个 x  而言,怎样分辨是哪一类呢?于是,求出全部的h (1) θ (x)h (2) θ (x)h (3) θ (x)h (n) θ (x) ,值最大相应的i (表示y=i 概率最大)即为x 的所属分类
    5. Regularization(正则化)

      1. 拟合会产生三种情况:
        • underfitting(欠拟合)=high bias,大部分训练样本无法拟合
        • overfitting(过拟合)=high variance,为了拟合差点儿每个训练样本。

          导致拟合函数极为复杂。易产生波动,泛化(generalize)能力差,尽管训练样本差点儿百分百拟合,可是測试样本非常可能由于极大波动而极少拟合成功

        • just right,对于训练样本,拟合得不多不少刚刚好,而且泛化到測试样本拟合效果相同较好
      2. 欠拟合,比較好解决,创造并引入很多其它的特征就可以。比如:对于x,y 而言,能够引入x 2 ,y 2 ,xy 等等新的特征
      3. 过拟合,则比較复杂。

        可用的方法有两个:

        • Reduce number of features,降维(PCA?)
        • Regularization,正则化。保持全部的特征数量不变。而去改变特征前的度量单位 θ j  (若 θ j   趋于0,则此特征可视为无影响)
      4. 解决过拟合的正则化方法,因此须要引入全新的优化目标到 cost function 中。原先的 cost function 仅仅是希望适合拟合更为接近,如今还须要使得特征前的度量单位 θ j   的最小。因此有:

        J(θ 0 ,θ 1 )=12m [ i=1 m (h θ (x (i) )y (i) ) 2 +λ i=1 m θ 2 j ] 

      5. 正则化方法处理之后。J(θ)θ j   发生相应变化,因此我们有:

        θ j :=θ j α[(1m  i=1 m (h θ (x (i) )y (i) )x (i) j )+λm θ j ]:=θ j (1αλm )α1m  i=1 m (h θ (x (i) )y (i) )x (i) j  

      6. λ 非常大(比如10 10  ),则正则化方法会导致结果 underfitting。这也非常好理解,由于优化目标中有使得 λ i=1 m θ 2 j   尽可能小,这样会导致 θ  全部趋于 0。一般来说,α,λ,m>0 ,所以(1αλm )<1 。常见使其取值0.99 左右

    6. Regularization for Normal Equation

      • 课程视频中缺少证明。因此我们仅需掌握结论使用就可以
      • 对于 Week 2 中的Normal Equation方法,原本须要求解的方程 θ=(x T x) 1 x T y  做一个小小的修改:

        θ=(x T x+λ⎛ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ 000 010  001 ⎞ ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ ) 1 x T y 

        若样本拥有n个特征。则⎛ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ 000 010  001 ⎞ ⎠ ⎟ ⎟ ⎟ ⎟ ⎟  表示的是(n+1) * (n+1)维的对角矩阵。除了(0, 0)取值为 0,其余对角位置取 1。

      • non-invertibility:非不可逆性……好拗口。意思就是对于原本的(x T x) 矩阵可能会出现不可逆的情况。可是,对于正则化之后的矩阵 (x T x+λ⎛ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ 000 010  001 ⎞ ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ )  一定是可逆的(未提供证明)。

    编程作业答案:https://github.com/cnauroth/machine-learning-class

  • 相关阅读:
    教你轻松搞定javascript中的正则
    带你学习javascript的函数进阶(二)
    带你学习Javascript中的函数进阶(一)
    带你学习ES5中新增的方法
    作为前端,你需要懂得javascript实现继承的方法
    作为前端,你需要了解的js构造函数和原型
    ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能
    企业级zabbix监控搭建及邮件报警
    -bash: netstat: 未找到命令
    shell点名脚本不重复人名
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7290590.html
Copyright © 2011-2022 走看看