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

Posted 笨鸟居士的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非常好!讲逻辑回归的,讲得很透彻相关的知识,希望对你有一定的参考价值。

参考这篇文章: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中是《机器学习实战》中给出的部分实现代码。

 

 一句话,牛逼!

 

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

以上是关于非常好!讲逻辑回归的,讲得很透彻的主要内容,如果未能解决你的问题,请参考以下文章

为什么使用消息队列?我这样回答,面试官直说讲得很清楚

关于java单例模式,这篇已经讲得很清楚了,建议收藏!

视频福利没想到 Tomcat 竟然能被讲得这么透彻

position属性absolute与relative 详解

position属性absolute与relative 详解

position属性absolute与relative 详解