机器学习实战第五章Logistic回归

Posted weiququ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习实战第五章Logistic回归相关的知识,希望对你有一定的参考价值。


def
gradAscent(dataMatIn, classLabels): dataMatrix = mat(dataMatIn) #convert to NumPy matrix labelMat = mat(classLabels).transpose() #convert to NumPy matrix m,n = shape(dataMatrix) alpha = 0.001 maxCycles = 500 weights = ones((n,1)) for k in range(maxCycles): #heavy on matrix operations h = sigmoid(dataMatrix*weights) #matrix mult error = (labelMat - h) #vector subtraction weights = weights + alpha * dataMatrix.transpose()* error #matrix mult return weights

这是书中梯度上升算法的代码,但看到倒数第三行和倒数第二行的时候就懵逼了,书中说这里略去了一个简单的数据推导,嘤嘤嘤,想了一会没想出来,于是乎就百度看看大神的解释,这是找到的一篇解释的比较好的,仔细一看发现是在Ag的机器学习视频中讲过的,忘了。。。

Sigmoid函数: $g(z)=frac{1}{1+e^{-z}}$

  $h_{ heta }(x)=g( heta ^{T}x)$

这里$ heta$和书中w一样,表示系数

代价函数如下,代价函数是用来计算预测值(类别)与实际值(类别)之间的误差的

  $cost(h_{ heta} (x),y)=left{egin{matrix}
  -log(h_{ heta}(x)), y=1\\
  -log(1-h_{ heta}(x)), y=0end{matrix} ight.$

写在一起表示为:

  $cost(h_{ heta} (x),y)=-ylog(h_{ heta}(x))-(1-y)log(1-h_{ heta}(x))$

 总体的代价函数为:

  $J( heta)=frac{1}{m}sum_{m}^{i=1}cost(h_{ heta} (x^{(i)}),y^{(i)})=frac{1}{m}sum_{m}^{i=1}-y^{(i)}log(h_{ heta}(x^{(i)}))-(1-y^{(i)})log(1-h_{ heta}(x^{(i)}))$

要使误差最小,即求$J( heta)$最小,也可以转化成就$-J( heta)$的最大值,可以用梯度上升算法来求最大值,

    $ heta := heta+ alpha frac{partial J( heta )}{partial heta_{j}}$

下面是推导过程:

  技术分享图片

所以权重的迭代更新公式为:  

  $ heta_{j} = heta_{j}+ alpha sum_{m}^{i=1}(y_{i}-h_{ heta}(x^{(i)}))x^{(i))}$

       

 

以上是关于机器学习实战第五章Logistic回归的主要内容,如果未能解决你的问题,请参考以下文章

[机器学习实战-Logistic回归]使用Logistic回归预测各种实例

机器学习实战 logistic回归 python代码

《机器学习实战》学习笔记:Logistic 回归

机器学习实战笔记 logistic回归

《机器学习实战》Logistic回归算法

机器学习实战读书笔记Logistic回归