第七章 Logistic 回歸

該系列文章為,觀看“吳恩達(dá)機(jī)器學(xué)習(xí)”系列視頻的學(xué)習(xí)筆記。雖然每個(gè)視頻都很簡(jiǎn)單,但不得不說每一句都非常的簡(jiǎn)潔扼要,淺顯易懂。非常適合我這樣的小白入門。

本章含蓋

  • 7.1 分類
  • 7.2 假設(shè)陳述
  • 7.3 決策界限
  • 7.4 代價(jià)函數(shù)
  • 7.5 簡(jiǎn)化代價(jià)函數(shù)與梯度下降
  • 7.6 高級(jí)優(yōu)化
  • 7.7 多元分類:一對(duì)多

分類

如何開發(fā)一個(gè)分類算法?

??用線性回歸擬合分類。

藍(lán)色:加入新的訓(xùn)練集后,之前擬合的線性函數(shù),顯然適用于新的數(shù)據(jù)集。但是,此時(shí)我們因?yàn)樾碌臄?shù)據(jù)集的加入,擬合出一個(gè)新的線性函數(shù)(藍(lán)色),此時(shí),若還用 0.5 作為閾值,那么分類結(jié)果就不那么理想了。

這里,新加的樣本沒有提供任何新的信息。但是卻導(dǎo)致線性回歸對(duì)數(shù)據(jù)的擬合直線從‘紫色的線’變成了’藍(lán)色的線’,因此產(chǎn)生了一個(gè)更壞的假設(shè)。
所以,把線性回歸應(yīng)用于分類問題,通常不是一個(gè)好主意

對(duì)分類問題使用線性回歸,會(huì)發(fā)生什么??

即便樣本的數(shù)據(jù)集只有 0 和 1。但是,算法的結(jié)果可能遠(yuǎn)大于 1 或 遠(yuǎn)小于 0。 這有些怪。。。

“l(fā)ogistic 回歸”算法的特點(diǎn)在于,算法的輸出總是介于 0 和 1 之間。
btw,我們把 logistic 回歸算法視為一種分類算法。因?yàn)槊种杏谢貧w,有些時(shí)候可能會(huì)令人產(chǎn)生困惑,但“l(fā)ogistic 回歸”實(shí)際上是一個(gè)“分類算法”,而不是“回歸算法”。

logistic 回歸算法用在: y 為離散值 0 或 1 的情況下

7.2 假設(shè)陳述

假設(shè):即,出現(xiàn)一個(gè)分類問題的時(shí)候,我們要使用哪個(gè)方程?

線性回歸的假設(shè)函數(shù):h_θ(x) = Θ^T * x
logistic 回歸方程的假設(shè)函數(shù)為:h_θ(x) = g(Θ^T * x)
我們定義 g 函數(shù)為:g(z) ,如果 z 是一個(gè)實(shí)數(shù),那么 g(z) = 1/(1+e^-z)
?? 這是 sigmoid function 或 logistic function。這兩個(gè)術(shù)語基本上是同義詞。

h_θ(x) 表示 一個(gè)新的輸入值x,其應(yīng)用于這個(gè)h_θ(x)時(shí),得到的輸出為 1 的概率。
如,?? 對(duì)于一個(gè)特征為x(該患者腫瘤大小的值)的患者,y=1 的概率是 0.7

h_θ(x) = P( y =1 | x;θ )

7.3 決策界限

decision boundary(決策邊界):
給定了 x,參數(shù)為 θ 時(shí),y = 1 的概率。

也就是說,我們將預(yù)測(cè) y=1 ,只需要 Θ^Tx 大于等于0,這取決于我們定義的 h_θ(x) >= 0.5 時(shí) y = 1;

實(shí)例:

這里,“x1+x2 = 3” 這條線 就被稱作“決策邊界”。
決策邊界,是假設(shè)函數(shù)的一個(gè)屬性。以及,這里說的 y = 0 ,y = 1 它們都是假設(shè)函數(shù)的屬性。
一旦參數(shù)確定下來,我們就能夠完全確定“決策邊界”。

一個(gè)更復(fù)雜的例子:

多項(xiàng)式回歸 或 線性回歸時(shí),我們可以在特征中添加額外的高階多項(xiàng)式,我們也可以在logistic回歸中使用相同的方法。
該例子中,Θ_3 * x_1^2 + Θ_4 * x_2^2 就是額外增加的那個(gè)高階多項(xiàng)式。。。

再次強(qiáng)調(diào),“決策邊界”不是訓(xùn)練集的屬性。而是“假設(shè)函數(shù)”本身及其參數(shù)的屬性。只要給定了參數(shù)向量Θ,決策邊界就決定了。
我們不是用訓(xùn)練集來決定“決策邊界”,我們用訓(xùn)練集來擬合參數(shù)。

7.4 代價(jià)函數(shù)

用于擬合參數(shù)的優(yōu)化目標(biāo)或者叫代價(jià)函數(shù)

對(duì)這個(gè)代價(jià)函數(shù)的理解是:它是在,輸出的預(yù)期值是h(x),而實(shí)際的標(biāo)簽是y的情況下,我們希望學(xué)習(xí)算法付出的代價(jià)。

如果,我們能夠最小化函數(shù)J里面的這個(gè)代價(jià)函數(shù),它也能工作。但實(shí)際上,如果我們使用這個(gè)代價(jià)函數(shù),它會(huì)變成參數(shù) Θ 的非凸函數(shù)。

因?yàn)閷?duì)于logistic回歸來說,h_Θ(x)函數(shù)是復(fù)雜的非線性函數(shù)。

左圖為目前,J(Θ) 的效果圖,是一個(gè)非凸函數(shù),它有很多的局部最優(yōu)解。
所以,目前這個(gè)平方代價(jià)函數(shù)的問題是,中間這個(gè)非線性的sigmoid函數(shù),導(dǎo)致J(Θ) 成為一個(gè)非凸函數(shù),如果你用平方函數(shù)定義它的話。

所以,我們需要找另外一個(gè)不同的代價(jià)函數(shù),它是凸函數(shù),使得我們可以使用很好的算法(如,梯度下降法)找到全局最小值。


當(dāng)h(x)趨于 0 時(shí),即,當(dāng)假設(shè)函數(shù)的輸出趨于 0 時(shí),代價(jià)函數(shù)激增,且趨于無窮大。之所以這樣描述,是因?yàn)槲覀冋J(rèn)為,如果假設(shè)函數(shù)的輸出為 0 ,那么相當(dāng)于說我們的假設(shè)函數(shù)輸出,相對(duì)于 y = 1 的概率等于 0 來說,有非常非常大的代價(jià),以此來懲罰我們的學(xué)習(xí)算法。(因?yàn)?,這里非分類只有 yes or no 的區(qū)別)


7.5 簡(jiǎn)化代價(jià)函數(shù)與梯度下降

對(duì)于分類問題,在我們訓(xùn)練集中,甚至不在訓(xùn)練集中的樣本,y 的值總是等于 0 或 1。正因?yàn)槿绱耍覀兛梢允褂靡粋€(gè)方式寫這個(gè)代價(jià)函數(shù)。


分別把 y = 1,和 y = 0 帶入下面的公式,自然就會(huì)得到上面的公式了。
??這個(gè)式子是從統(tǒng)計(jì)學(xué)中的極大似然法得來的。它是統(tǒng)計(jì)學(xué)中為不同的模型快速找到參數(shù)的方法。同時(shí),它還有一個(gè)很好的性質(zhì),它是凸的。因此,它就是大部分人用來擬合logistic回歸模型的代價(jià)函數(shù)

根據(jù)這個(gè)代價(jià)函數(shù),為了擬合出參數(shù)。我們要做的是找出讓 J(θ) 取得最小值的參數(shù)θ。

使用梯度下降法 求得 代價(jià)函數(shù)的最小值

這個(gè)梯度下降法的公式同我們前面對(duì)線性回歸做梯度下降法時(shí)是一樣的!!

那么,線性回歸和logistic回歸是同一個(gè)算法嗎?
不是的,請(qǐng)注意。在logistic回歸中,h(θ) 的定義發(fā)生了變化。
所以只是梯度下降法的規(guī)則看起來相似而已,但實(shí)際上規(guī)則中的假設(shè)函數(shù)(h(θ))已經(jīng)發(fā)生了變化。所以,它和線性回歸的梯度下降法實(shí)際上是兩個(gè)完全不同的東西。

我們使用同線性回歸的梯度下降法同樣的監(jiān)控方法,監(jiān)控logistic回歸的梯度下降法是否收斂。

當(dāng)使用梯度下降法來實(shí)現(xiàn)logistic回歸時(shí),我們有這些( θ。即,θ_0 ~ θ_n)不同的參數(shù)要用這個(gè)表達(dá)式(logistic的梯度下降法)來同時(shí)更新這些參數(shù)。
實(shí)現(xiàn)的方式有2中:
1,使用for循環(huán),從 0 ~ n 逐個(gè)更新
2,使用向量化的實(shí)現(xiàn)。向量化的實(shí)現(xiàn)可以把所有 n+1 個(gè)參數(shù)同時(shí)更新。

特征縮放同樣也適用于 logistic 回歸,使得梯度下降收斂更快。

7.6 高級(jí)優(yōu)化

高級(jí)優(yōu)化算法同梯度下降法相比大大提高了logistic回歸運(yùn)行的速度。這也使得算法更加適合解決大型的機(jī)器學(xué)習(xí)問題,比如,我們有數(shù)目龐大的特征。

現(xiàn)在,我們換個(gè)角度來看什么是梯度下降

??我們需要寫出代碼來計(jì)算 J(θ) 和 它的偏導(dǎo)數(shù),然后把這些帶入梯度下降中。然后,它就可以為我們最小化J(θ)這個(gè)函數(shù)

梯度下降,從技術(shù)上來說,你實(shí)際并不需要編寫代碼來計(jì)算代價(jià)函數(shù)J(θ),你只需要編寫代碼來計(jì)算導(dǎo)數(shù)項(xiàng)。但是,如果你希望代碼還能夠監(jiān)控這些J(θ)的收斂性,那么我們就需要自己編寫代碼來計(jì)算代價(jià)函數(shù)和偏導(dǎo)數(shù)項(xiàng)。

梯度下降并不是我們能夠使用的唯一算法,還有其他一些算法更高級(jí)、更復(fù)雜。如果我們能夠使用這些算法來計(jì)算 J(θ) 和 它的偏導(dǎo)數(shù),那么這些算法就是為我們優(yōu)化代價(jià)函數(shù)的不同方法。

BFGS —— 共軛梯度法 和 L-BFGS 就是其中一些更高級(jí)的優(yōu)化算法。它們需要一種方法來計(jì)算 J(θ) ,還需要一個(gè)計(jì)算導(dǎo)數(shù)項(xiàng)的方法。然后使用比梯度下降法更復(fù)雜的算法來最小化代價(jià)函數(shù)

Conjugate gradient、BFGS、L-BFGS 這三種算法有很多優(yōu)點(diǎn)。
1,使用其中任何一個(gè)算法,你通常不需要手動(dòng)選擇 學(xué)習(xí)率α。
所以理解這些算法的一種思路是:給出‘計(jì)算導(dǎo)數(shù)項(xiàng)和代價(jià)函數(shù)’的方法。你可以理解這些算法有個(gè)智能的內(nèi)循環(huán),事實(shí)上它確實(shí)有個(gè)智能的內(nèi)循環(huán),稱為’線搜索算法’,它可以自動(dòng)嘗試不同的 學(xué)習(xí)速率α 并自動(dòng)選擇一個(gè)好的 學(xué)習(xí)速率α 。它甚至可以每次迭代選擇不同的學(xué)習(xí)速率,那么你就不需要自己選擇。
2,這些算法實(shí)際上在做更復(fù)雜的事情,而不僅僅是選擇一個(gè)好的學(xué)習(xí)速率α。所以它們往往最終收斂得遠(yuǎn)遠(yuǎn)快于梯度下降。

缺點(diǎn):
1,它們比梯度下降法復(fù)雜多了。
特別是,你最好不要自己實(shí)現(xiàn) 共軛梯度法、L-BFGS 這些算法,除非你是數(shù)值計(jì)算方面的專家。
注意,不同庫對(duì)這些算法的實(shí)現(xiàn)也是有差距的!! 畢竟庫也是別人對(duì)該算法實(shí)現(xiàn)的封裝而已。

7.7 多元分類:一對(duì)多

使用 logistic 回歸 解決‘多類別分類問題’
“一對(duì)多”分類算法

??所有的例子中,y 可以取 一些 離散值。

‘一對(duì)多 分類’ 原理:
有時(shí)也稱為“one-versus-rest”方法

??假設(shè),我們有一個(gè)訓(xùn)練集,其中有三個(gè)類型。我們要做的就是將這個(gè)訓(xùn)練集轉(zhuǎn)化為 3個(gè)獨(dú)立的二元分類問題

第1個(gè)獨(dú)立的‘二元分類’問題 —— class 1 和 其他class:

?? 新的“偽”訓(xùn)練集,其中的類別2 和類別3 設(shè)定為 負(fù)類,類別1 設(shè)定為 正類。
其他兩個(gè),同理可得。。。
總而言之,我們擬合出三個(gè)分類器。來嘗試估算出給定 x 和 θ 時(shí), y = i 的概率。

  • 總結(jié):


    我們訓(xùn)練一個(gè)logistic 回歸分類器,h_θ^(i)(x)用于,類別 i 去預(yù)測(cè) y = i 的概率。
    然后在新給定的輸入 x ,做預(yù)測(cè),選擇 類別 i 最大的那個(gè) 類別為我們預(yù)測(cè)的 x 的類別。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容