• 非常好!讲逻辑回归的,讲得很透彻


    参考这篇文章:http://blog.csdn.net/dongtingzhizi/article/details/15962797

    这篇文章写的真好,把我之前那篇文章的困惑都解释了 http://www.cnblogs.com/charlesblc/p/6208688.html

    对《机器学习实战》上面关于梯度上升和下降之间的区别也说清楚了,真好。

    已经下载了pdf版,在 /Users/baidu/Documents/Data/Interview/机器学习-数据挖掘/Logistic回归总结.pdf 

    (1)找一个合适的预测函数(Andrew Ng的公开课中称为hypothesis),一般表示为h函数

    (2)构造一个Cost函数(损失函数),该函数表示预测的输出(h)与训练数据类别(y)之间的偏差。将Cost求和或者求平均,记为J(θ)函数,表示所有训练数据预测值与实际类别的偏差。

    (3)显然,J(θ)函数的值越小表示预测函数越准确(即h函数越准确),所以这一步需要做的是找到J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression实现时有的是梯度下降法(Gradient Descent)。

    Logistic函数(或称为Sigmoid函数),函数形式为:

    构造预测函数为:

    hθ(x)函数的值有特殊的含义,它表示结果取1的概率。(非常适合用来做CTR预估,等等)

    3.2  构造Cost函数

    Andrew Ng在课程中直接给出了Cost函数及J(θ)函数如式(5)和(6),但是并没有给出具体的解释,只是说明了这个函数来衡量h函数预测的好坏是合理的。

    实际上这里的Cost函数和J(θ)函数是基于最大似然估计推导得到的。最大似然的介绍可以见:

    http://www.cnblogs.com/charlesblc/p/6257848.html

    在Andrew Ng的课程中将J(θ)取为(6)式,

    因为乘了一个负的系数-1/m,所以J(θ)取最小值时的θ为要求的最佳参数。(本来极大似然是要求最大值的)

     

    3.3  梯度下降法求J(θ)的最小值

    J(θ)的最小值可以使用梯度下降法,根据梯度下降法可得θ的更新过程:

    式中为α学习步长,下面来求偏导:

     

    因此,(11)式的更新过程可以写成:

    因为式中α本来为一常量,所以1/m一般将省略,所以最终的θ更新过程为

    3.4  梯度下降过程向量化

    关于θ更新过程的vectorization,Andrew Ng的课程中只是一带而过,没有具体的讲解。

    下面说明一下我理解《机器学习实战》中代码实现的vectorization过程。

     

    g(A)的参数A为一列向量,所以实现g函数时要支持列向量作为参数,并返回列向量。由上式可知hθ(x)-y可以由g(A)-y一次计算求得。 

    综上所述,vectorization后θ更新的步骤如下:

    (1)求A=x.θ

    (2)求E=g(A)-y

    (3)求θ:=θ-α.x'.E,  x'表示矩阵x的转置。

    也可以综合起来写成:

    前面已经提到过:1/m是可以省略的。 

    4. 代码分析

    图4中是《机器学习实战》中给出的部分实现代码。

     一句话,牛逼!

    其他的看原文!都很重要!

  • 相关阅读:
    017-新闻表分页增删改查
    016-页面生命周期
    015-用户登录注册
    014-Session服务器状态保持
    013-Cookie状态保持
    012-ViewState状态保持
    011-Server服务器对象属性
    010-判断是否回传IsPostBack属性
    Github使用教程
    获取中文时间
  • 原文地址:https://www.cnblogs.com/charlesblc/p/6218764.html
Copyright © 2020-2023  润新知