您的位置:首页 > 其它

跟着Andrew Ng挑战Machine Learning(第三周)Part 2:逻辑回归的代价函数

2017-06-05 23:32 357 查看
注意:

  建议有条件的童鞋去Coursera上学习,不仅免费还精心准备了很多联系帮助理解,以下是链接(看视频需要翻墙):

  https://www.coursera.org/learn/machine-learning/

逻辑回归的代价函数

  上一章已经说明了逻辑回归解决的是什么类型的问题,以及拟合函数的形式。接下来就看看如何得到 h(x⃗ ) 的特征向量 θ⃗ 的最优解。

  在前面两周的笔记中已经知道了线性回归的代价函数:

J(θ⃗ )=12m∑i=0n(hθ(x⃗ )−y)2

  如果在逻辑回归问题中,我们继续使用上述的代价函数 J(θ⃗ ) 就不是一个凸函数(convex function),最终的结果可能是 θ⃗ 收敛到了一个局部最优解,而不是全局最优解如下图(至于为什么,嗯……,我的数学也不是很6)。因此,逻辑回归的代价函数需要改变一下。

 



 

这个设计过程理解吗?

  当 y=1 时,我们令 Cost(hθ(x⃗ ),y)=−log(hθ(x⃗ ))。因为 hθ(x⃗ )≥0.5,且由上一章内容可知

  

limz→+∞g(z)=1⇒limθ⃗ Tx⃗ →+∞hθ(x⃗ )=1⇒limθ⃗ Tx⃗ →+∞−log(hθ(x⃗ ))=0

  Cost(hθ(x⃗ ),y) 随 hθ(x⃗ ) 变化情况如图:

 



 

 

  当 y=0 时,我们令 Cost(hθ(x⃗ ),y)=−log(1−hθ(x⃗ ))。同样可以做出曲线图:

 



 

  这样,我们就得到了一个形状是凸函数的代价函数了。有没有很神奇的感觉呢?(⊙o⊙)

  

Cost(hθ(x⃗ ,y))={−log(hθ(x⃗ )) ,y=1−log(1−hθ(x⃗ )) ,y=0

 

  如果有“每一句话我都理解,但是合到一起就有点不清白了”这样的感觉也没关系。可以先试着回忆一下代价函数是用来做什么的?其含义又是什么?(含义就是拟合函数的预测值与实际值得偏差)如果还是有些不清楚,这也不要紧,并不影响我们对这个算法的应用。

简化代价函数

  不管是手写还是敲代码,我觉得写一个分段函数出来还是挺烦人的哈。下面,更加神奇的事情就要发生了!!!我们要把上面的代价函数用一行式子写出来!!!★~★

Cost(hθ(x⃗ ,y))=−ylog(hθ(x⃗ ))−(1−y)log(1−hθ(x⃗ ))

  好神奇吧~~接下来我们就可以顺利的写出函数 J(θ⃗ ) 了,和线性回归区别不大:

  

J(θ⃗ )=1m∑i=1mCost(hθ(x⃗ (i)),y(i)))=−1m∑i=1m(y(i)log(hθ(x⃗ (i)))+(1−y(i))log(1−hθ(x⃗ (i))))

  注:这里除的是 m 而不像线性回归中那样除 2m,原因很简单,仅仅是由于这样设置对于后续的梯度下降算法来说更容易计算偏导数。

梯度下降算法计算最优的特征向量

  嗯……还记得第一章说的梯度下降算法吗?

  在逻辑回归中只用照搬就好了,所以说这一章也没有多大难度(^__^)

  如果觉得求 ∂∂θjJ(θ⃗ ) 有点麻烦,没关系下面就是公式直接用。

∂∂θjJ(θ⃗ )hθ(x⃗ (i))=1m∑i=1m((hθ(x⃗ (i))−y(i))x(i)j)=11+e−θ⃗ Tx⃗ (i)

  想直接用向量表示也没问题:

∇J(θ⃗ )=1m⋅XT⋅(g(X⋅θ⃗ )−y⃗ )

  当然这里所说的梯度下降算法是最容易理解的一种方法,其实还有很多求最优解的算法。而且,很多算法都不需要我们自己去尝试选择 α,相对的这些算法更复杂,理解起来也很有挑战性。可喜的是,在实际应用中我们并与需要知道,只要能够从包或者库中调用就好了。

  

小结

  逻辑回归主要部分就差不多了,下一章分享过拟合(Over Fitting)问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息