日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Logistic回归总结

發(fā)布時(shí)間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Logistic回归总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
 Logistic回歸總結(jié)

作者:洞庭之子

微博:洞庭之子-Bing

(2013年11月)


PDF下載地址:http://download.csdn.net/detail/lewsn2008/6547463

1.引言

看了Stanford的Andrew Ng老師的機(jī)器學(xué)習(xí)公開(kāi)課中關(guān)于Logistic Regression的講解,然后又看了《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》中的LogisticRegression部分,寫(xiě)下此篇學(xué)習(xí)筆記總結(jié)一下。

首先說(shuō)一下我的感受,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》一書(shū)在介紹原理的同時(shí)將全部的算法用源代碼實(shí)現(xiàn),非常具有操作性,可以加深對(duì)算法的理解,但是美中不足的是在原理上介紹的比較粗略,很多細(xì)節(jié)沒(méi)有具體介紹。所以,對(duì)于沒(méi)有基礎(chǔ)的朋友(包括我)某些地方可能看的一頭霧水,需要查閱相關(guān)資料進(jìn)行了解。所以說(shuō),該書(shū)還是比較適合有基礎(chǔ)的朋友。

本文主要介紹以下三個(gè)方面的內(nèi)容:

(1)Logistic Regression的基本原理,分布在第二章中;

(2)Logistic Regression的具體過(guò)程,包括:選取預(yù)測(cè)函數(shù),求解Cost函數(shù)和J(θ),梯度下降法求J(θ)的最小值,以及遞歸下降過(guò)程的向量化(vectorization),分布在第三章中;

(3)對(duì)《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》中給出的實(shí)現(xiàn)代碼進(jìn)行了分析,對(duì)閱讀該書(shū)LogisticRegression部分遇到的疑惑進(jìn)行了解釋。沒(méi)有基礎(chǔ)的朋友在閱讀該書(shū)的Logistic Regression部分時(shí)可能會(huì)覺(jué)得一頭霧水,書(shū)中給出的代碼很簡(jiǎn)單,但是怎么也跟書(shū)中介紹的理論聯(lián)系不起來(lái)。也會(huì)有很多的疑問(wèn),比如:一般都是用梯度下降法求損失函數(shù)的最小值,為何這里用梯度上升法呢?書(shū)中說(shuō)用梯度上升發(fā),為何代碼實(shí)現(xiàn)時(shí)沒(méi)見(jiàn)到求梯度的代碼呢?這些問(wèn)題在第三章和第四章中都會(huì)得到解答。

文中參考或引用內(nèi)容的出處列在最后的“參考文獻(xiàn)”中。文中所闡述的內(nèi)容僅僅是我個(gè)人的理解,如有錯(cuò)誤或疏漏,歡迎大家批評(píng)指正。下面進(jìn)入正題。


2. 基本原理

Logistic Regression和Linear Regression的原理是相似的,按照我自己的理解,可以簡(jiǎn)單的描述為這樣的過(guò)程:

(1)找一個(gè)合適的預(yù)測(cè)函數(shù)(Andrew Ng的公開(kāi)課中稱(chēng)為hypothesis),一般表示為h函數(shù),該函數(shù)就是我們需要找的分類(lèi)函數(shù),它用來(lái)預(yù)測(cè)輸入數(shù)據(jù)的判斷結(jié)果。這個(gè)過(guò)程時(shí)非常關(guān)鍵的,需要對(duì)數(shù)據(jù)有一定的了解或分析,知道或者猜測(cè)預(yù)測(cè)函數(shù)的“大概”形式,比如是線(xiàn)性函數(shù)還是非線(xiàn)性函數(shù)。

(2)構(gòu)造一個(gè)Cost函數(shù)(損失函數(shù)),該函數(shù)表示預(yù)測(cè)的輸出(h)與訓(xùn)練數(shù)據(jù)類(lèi)別(y)之間的偏差,可以是二者之間的差(h-y)或者是其他的形式。綜合考慮所有訓(xùn)練數(shù)據(jù)的“損失”,將Cost求和或者求平均,記為J(θ)函數(shù),表示所有訓(xùn)練數(shù)據(jù)預(yù)測(cè)值與實(shí)際類(lèi)別的偏差。

(3)顯然,J(θ)函數(shù)的值越小表示預(yù)測(cè)函數(shù)越準(zhǔn)確(即h函數(shù)越準(zhǔn)確),所以這一步需要做的是找到J(θ)函數(shù)的最小值。找函數(shù)的最小值有不同的方法,Logistic Regression實(shí)現(xiàn)時(shí)有的是梯度下降法(Gradient Descent)。


3. 具體過(guò)程

3.1? 構(gòu)造預(yù)測(cè)函數(shù)

Logistic Regression雖然名字里帶“回歸”,但是它實(shí)際上是一種分類(lèi)方法,用于兩分類(lèi)問(wèn)題(即輸出只有兩種)。根據(jù)第二章中的步驟,需要先找到一個(gè)預(yù)測(cè)函數(shù)(h),顯然,該函數(shù)的輸出必須是兩個(gè)值(分別代表兩個(gè)類(lèi)別),所以利用了Logistic函數(shù)(或稱(chēng)為Sigmoid函數(shù)),函數(shù)形式為:

? ? ? ? ??

對(duì)應(yīng)的函數(shù)圖像是一個(gè)取值在0和1之間的S型曲線(xiàn)(圖1)。


圖1

接下來(lái)需要確定數(shù)據(jù)劃分的邊界類(lèi)型,對(duì)于圖2和圖3中的兩種數(shù)據(jù)分布,顯然圖2需要一個(gè)線(xiàn)性的邊界,而圖3需要一個(gè)非線(xiàn)性的邊界。接下來(lái)我們只討論線(xiàn)性邊界的情況。


圖2


圖3

對(duì)于線(xiàn)性邊界的情況,邊界形式如下:

構(gòu)造預(yù)測(cè)函數(shù)為:


hθ(x)函數(shù)的值有特殊的含義,它表示結(jié)果取1的概率,因此對(duì)于輸入x分類(lèi)結(jié)果為類(lèi)別1和類(lèi)別0的概率分別為:



3.2? 構(gòu)造Cost函數(shù)

Andrew Ng在課程中直接給出了Cost函數(shù)及J(θ)函數(shù)如式(5)和(6),但是并沒(méi)有給出具體的解釋,只是說(shuō)明了這個(gè)函數(shù)來(lái)衡量h函數(shù)預(yù)測(cè)的好壞是合理的。



實(shí)際上這里的Cost函數(shù)和J(θ)函數(shù)是基于最大似然估計(jì)推導(dǎo)得到的。下面詳細(xì)說(shuō)明推導(dǎo)的過(guò)程。(4)式綜合起來(lái)可以寫(xiě)成:


取似然函數(shù)為:

對(duì)數(shù)似然函數(shù)為:


最大似然估計(jì)就是要求得使l(θ)取最大值時(shí)的θ,其實(shí)這里可以使用梯度上升法求解,求得的θ就是要求的最佳參數(shù)。但是,在Andrew Ng的課程中將J(θ)取為(6)式,即:


因?yàn)槌肆艘粋€(gè)負(fù)的系數(shù)-1/m,所以J(θ)取最小值時(shí)的θ為要求的最佳參數(shù)。


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

J(θ)的最小值可以使用梯度下降法,根據(jù)梯度下降法可得θ的更新過(guò)程:

? ??

式中為α學(xué)習(xí)步長(zhǎng),下面來(lái)求偏導(dǎo):


上式求解過(guò)程中用到如下的公式:


因此,(11)式的更新過(guò)程可以寫(xiě)成:

?

因?yàn)槭街?span style="font-size:18px">α本來(lái)為一常量,所以1/m一般將省略,所以最終的θ更新過(guò)程為:


另外,補(bǔ)充一下,3.2節(jié)中提到求得l(θ)取最大值時(shí)的θ也是一樣的,用梯度上升法求(9)式的最大值,可得:

??

觀察上式發(fā)現(xiàn)跟(14)是一樣的,所以,采用梯度上升發(fā)和梯度下降法是完全一樣的,這也是《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》中采用梯度上升法的原因。


3.4? 梯度下降過(guò)程向量化

關(guān)于θ更新過(guò)程的vectorization,Andrew Ng的課程中只是一帶而過(guò),沒(méi)有具體的講解。

《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》連Cost函數(shù)及求梯度等都沒(méi)有說(shuō)明,所以更不可能說(shuō)明vectorization了。但是,其中給出的實(shí)現(xiàn)代碼確是實(shí)現(xiàn)了vectorization的,圖4所示代碼的32行中weights(也就是θ)的更新只用了一行代碼,直接通過(guò)矩陣或者向量計(jì)算更新,沒(méi)有用for循環(huán),說(shuō)明確實(shí)實(shí)現(xiàn)了vectorization,具體代碼下一章分析。

文獻(xiàn)[3]中也提到了vectorization,但是也是比較粗略,很簡(jiǎn)單的給出vectorization的結(jié)果為:

? ??

且不論該更新公式正確與否,這里的Σ(...)是一個(gè)求和的過(guò)程,顯然需要一個(gè)for語(yǔ)句循環(huán)m次,所以根本沒(méi)有完全的實(shí)現(xiàn)vectorization,不像《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》的代碼中一條語(yǔ)句就可以完成θ的更新。

下面說(shuō)明一下我理解《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》中代碼實(shí)現(xiàn)的vectorization過(guò)程。

約定訓(xùn)練數(shù)據(jù)的矩陣形式如下,x的每一行為一條訓(xùn)練樣本,而每一列為不同的特稱(chēng)取值:


約定待求的參數(shù)θ的矩陣形式為:

? ? ? ? ??

先求x.θ并記為A


hθ(x)-y并記為E

?

g(A)的參數(shù)A為一列向量,所以實(shí)現(xiàn)g函數(shù)時(shí)要支持列向量作為參數(shù),并返回列向量。由上式可知hθ(x)-y可以由g(A)-y一次計(jì)算求得。

再來(lái)看一下(15)式的θ更新過(guò)程,當(dāng)j=0時(shí):


同樣的可以寫(xiě)出θj


綜合起來(lái)就是:


綜上所述,vectorization后θ更新的步驟如下:

(1)求A=x.θ

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

(3)求θ:=θ-α.x'.E,x'表示矩陣x的轉(zhuǎn)置

也可以綜合起來(lái)寫(xiě)成:


前面已經(jīng)提到過(guò):1/m是可以省略的。

4. 代碼分析

圖4中是《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》中給出的部分實(shí)現(xiàn)代碼。


圖4

sigmoid函數(shù)就是前文中的g(z)函數(shù),參數(shù)inX可以是向量,因?yàn)槌绦蛑惺褂昧薖ython的numpy。

gradAscent函數(shù)是梯度上升的實(shí)現(xiàn)函數(shù),參數(shù)dataMatin和classLabels為訓(xùn)練數(shù)據(jù),23和24行對(duì)訓(xùn)練數(shù)據(jù)做了處理,轉(zhuǎn)換成numpy的矩陣類(lèi)型,同時(shí)將橫向量的classlabels轉(zhuǎn)換成列向量labelMat,此時(shí)的dataMatrix和labelMat就是(18)式中的xy。alpha為學(xué)習(xí)步長(zhǎng),maxCycles為迭代次數(shù)。weights為n維(等于x的列數(shù))列向量,就是(19)式中的θ

29行的for循環(huán)將更新θ的過(guò)程迭代maxCycles次,每循環(huán)一次更新一次。對(duì)比3.4節(jié)最后總結(jié)的向量化的θ更新步驟,30行相當(dāng)于求了A=x.θg(A),31行相當(dāng)于求了E=g(A)-y,32行相當(dāng)于求θ:=θ-α.x'.E。所以這三行代碼實(shí)際上與向量化的θ更新步驟是完全一致的。

總結(jié)一下,從上面代碼分析可以看出,雖然只有十多行的代碼,但是里面卻隱含了太多的細(xì)節(jié),如果沒(méi)有相關(guān)基礎(chǔ)確實(shí)是非常難以理解的。相信完整的閱讀了本文,就應(yīng)該沒(méi)有問(wèn)題了!^_^。

?

【參考文獻(xiàn)】

[1]《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》——【美】Peter Harington
[2] Stanford機(jī)器學(xué)習(xí)公開(kāi)課(https://www.coursera.org/course/ml)
[3] http://blog.csdn.net/abcjennifer/article/details/7716281
[4] http://www.cnblogs.com/tornadomeet/p/3395593.html
[5] http://blog.csdn.net/moodytong/article/details/9731283
[6] http://blog.csdn.net/jackie_zhu/article/details/8895270

?

總結(jié)

以上是生活随笔為你收集整理的Logistic回归总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。