原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D%A6%E7%A6%8F%E5%A4%A7%E5%AD%A6%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AC%AC%E5%85%AD%E8%AF%BE-%E9%80%BB%E8%BE%91%E5%9B%9E%E5%BD%92-logistic-regression算法
斯坦福大學機器學習第六課"邏輯迴歸「學習筆記,本次課程主要包括7部分:框架
1) Classification(分類)機器學習
2) Hypothesis Representationide
3) Decision boundary(決策邊界)函數
4) Cost function(代價函數,成本函數)學習
5) Simplified cost function and gradient descent(簡化版代價函數及梯度降低算法)優化
6) Advanced optimization(其餘優化算法)atom
7) Multi-class classification: One-vs-all(多類分類問題)url
如下是每一部分的詳細解讀。spa
1) Classification(分類)
分類問題舉例:
以上問題能夠稱之爲二分類問題,能夠用以下形式定義:
其中0稱之爲負例,1稱之爲正例。
對於多分類問題,能夠以下定義因變量y:
若是分類器用的是迴歸模型,而且已經訓練好了一個模型,能夠設置一個閾值:
若是是線性迴歸模型,對於腫瘤這個二分類問題,圖形表示以下:
可是對於二分類問題來講,線性迴歸模型的Hypothesis輸出值能夠大於1也能夠小於0。
這個時候咱們引出邏輯迴歸,邏輯迴歸的Hypothesis輸出介於0與1之間,既:
注: 如下引自李航博士《統計學習方法》1.8節關於分類問題的一點描述:
分類是監督學習的一個核心問題,在監督學習中,當輸出變量Y取有限個離散值時,預測問題便成爲分類問題。這時,輸入變量X能夠是離散的,也能夠是連續的。監督學習從數據中學習一個分類模型或分類決策函數,稱爲分類器(classifier)。分類器對新的輸入進行輸出的預測(prediction),稱爲分類(classification).
2) Hypothesis Representation
邏輯迴歸模型:
上一節談到,咱們須要將Hypothesis的輸出界定在0和1之間,既:
可是線性迴歸沒法作到,這裏咱們引入一個函數g, 令邏輯迴歸的Hypothesis表示爲:
這裏g稱爲Sigmoid function或者Logistic function, 具體表達式爲:
Sigmoid 函數在有個很漂亮的「S"形,以下圖所示(引自維基百科):
綜合上述兩式,咱們獲得邏輯迴歸模型的數學表達式:
其中是參數。
Hypothesis輸出的直觀解釋:
= 對於給定的輸入x,y=1時估計的機率
例如,對於腫瘤(惡性/良性),若是輸入變量(特徵)是腫瘤的大小:
這裏Hypothesis表示的是」病人的腫瘤有70%的多是惡性的「。
較正式的說法能夠以下表示:
給定輸入x,參數化的(參數空間), y=1時的機率。
數學上能夠以下表示:
對於因變量y=0或1這樣的二分類問題:
3) Decision boundary(決策邊界)
如上節所述,邏輯迴歸模型能夠以下表示:
假設給定的閾值是0.5,當時, y = 1;
當時,y = 0;
再次回顧sigmoid function的圖形,也就是g(z)的圖形:
當時, ;
對於, 則, 此時意味着預估y=1;
反之,當預測y = 0時,;
咱們能夠認爲 = 0是一個決策邊界,當它大於0或小於0時,邏輯迴歸模型分別預測不一樣的分類結果。例如,
分別取-3, 1, 1,
則當時, y = 1; 則是一個決策邊界,圖形表示以下:
上述只是一個線性的決策邊界,當更復雜的時候,咱們能夠獲得非線性的決策邊界,例如:
這裏當時,y=1,決策邊界是一個圓形,以下圖所示:
更復雜的例子,請參考官方PPT,這裏就再也不舉例了。
4) Cost function(代價函數,成本函數)
邏輯迴歸概覽:
邏輯迴歸是一種有監督的學習方法,所以有訓練集:
對於這m個訓練樣原本說,每一個樣本都包含n+1個特徵:
其中, .
Hypothesis可表示爲:
與線性迴歸類似,咱們的問題是如何選擇合適的參數?
Cost Function:
線性迴歸的Cost Function定義爲:
這裏能夠把簡寫爲,更簡化的表達式爲:
若是和線性迴歸類似,這裏取 ,會存在一個問題,也就是邏輯迴歸的Cost Function是「非凸」的,以下圖所示:
咱們知道,線性迴歸的Cost Function是凸函數,具備碗狀的形狀,而凸函數具備良好的性質:對於凸函數來講局部最小值點即爲全局最小值點,所以只要能求得這類函數的一個最小值點,該點必定爲全局最小值點。
所以,上述的Cost Function對於邏輯迴歸是不可行的,咱們須要其餘形式的Cost Function來保證邏輯迴歸的成本函數是凸函數。
這裏補充一段李航博士《統計學習方法》裏關於Cost Function或者損失函數(loss function)的說明,你們就能夠理解Cost Function不限於一種方式,而是有多種方式可選,如下摘自書中的1.3.2小節:
監督學習問題是在假設空間F中選取模型f做爲決策函數,對於給定的輸入X,由f(X)給出相應的輸出Y,這個輸出的預測值f(X)與真實值Y可能一致也可能不一致,用一個損失函數(loss function)或代價函數(cost function)來度量預測錯誤的程度。損失函數是f(X)和Y的非負實值函數,記做L(Y, f(X)).
統計學習中經常使用的損失函數有如下幾種:
(1) 0-1損失函數(0-1 loss function):
(2) 平方損失函數(quadratic loss function)
(3) 絕對損失函數(absolute loss function)
(4) 對數損失函數(logarithmic loss function) 或對數似然損失函數(log-likelihood loss function)
損失函數越小,模型就越好。
邏輯迴歸的Cost Function:
基於上節的描述和補充,這裏咱們選擇對數似然損失函數做爲邏輯迴歸的Cost Function:
直觀的來解釋這個Cost Function,首先看當y=1的狀況:
直觀來看, 若是y = 1, ,則Cost = 0,也就是預測的值和真實的值徹底相等的時候Cost =0;
可是,當時,
直觀來看,因爲預測的結果南轅北轍:
若是, 也就是預測,也就是y=1的機率是0,可是實際上y = 1
所以對於這個學習算法給予一個很大的Cost的懲罰。
同理對於y=0的狀況也適用:
5) Simplified cost function and gradient descent(簡化版代價函數及梯度降低算法)
邏輯迴歸的Cost Function能夠表示爲:
因爲y 只能等於0或1,因此能夠將邏輯迴歸中的Cost function的兩個公式合併,具體推導以下:
故邏輯迴歸的Cost function可簡化爲:
對於這個公式,這裏稍微補充一點,注意中括號中的公式正是對邏輯迴歸進行最大似然估計中的最大似然函數,對於最大似然函數求最大值,從而獲得參數(\theta\)的估計值。反過來,這裏爲了求一個合適的參數,須要最小化Cost function,也就是:
而對於新的變量x來講,就是根據的公式輸出結果:
與線性迴歸類似,這裏咱們採用梯度降低算法來學習參數,對於:
目標是最小化,則梯度降低算法的以下:
對求導後,梯度降低算法以下:
注意,這個算法和線性迴歸裏的梯度降低算法幾乎是一致的,除了的表示不一樣。
6) Advanced optimization(其餘優化算法)
優化算法:
給定參數,咱們能夠寫成代碼來計算:
優化算法除了梯度降低算法外,還包括:
後兩者由擬牛頓法引伸出來,與梯度降低算法相比,這些算法的優勢是:
第一,不須要手動的選擇步長;
第二,一般比梯度降低算法快;
可是缺點是更復雜-更復雜也是缺點嗎?其實也算不上,關於這些優化算法,推薦有興趣的同窗看看52nlp上這個系列的文章:無約束最優化,做者是個人師兄,更深刻的瞭解能夠參考這篇文章中推薦的兩本書:
用於解無約束優化算法的Quasi-Newton Method中的LBFGS算法到這裏總算初步介紹完了,不過這裏筆者要認可的是這篇文檔省略了許多內容,包括算法收斂性的證實以及收斂速度證實等許多內容。所以讀者若但願對這一塊有一個更深刻的認識能夠參考如下兩本書:
1) Numerical Methods for Unconstrained Optimization and Nonlinear Equations(J.E. Dennis Jr. Robert B. Schnabel)
2) Numerical Optimization(Jorge Nocedal Stephen J. Wright)
7) Multi-class classification: One-vs-all(多類分類問題)
多類分類問題舉例:
電子郵件分類/標註: 工做郵件,朋友郵件,家庭郵件,愛好郵件
醫療圖表(medical diagrams): 沒有生病,着涼,流感
天氣:晴天,多雲,雨,雪
二類分類問題以下圖所示:
多類分類問題以下所示:
One-vs-all(one-vs-rest):
對於多類分類問題,能夠將其看作成二類分類問題:保留其中的一類,剩下的做爲另外一類。例如,對於下面這個例子:
能夠分別計算其中一類相對於其餘類的機率:
總結-One-vs-all方法框架:
對於每個類 i 訓練一個邏輯迴歸模型的分類器,而且預測 y = i時的機率;
對於一個新的輸入變量x, 分別對每個類進行預測,取機率最大的那個類做爲分類結果:
參考資料:
李航博士《統計學習方法》
http://en.wikipedia.org/wiki/Sigmoid_function
http://en.wikipedia.org/wiki/Logistic_function
http://en.wikipedia.org/wiki/Loss_function
http://en.wikipedia.org/wiki/Conjugate_gradient_method
http://en.wikipedia.org/wiki/Quasi-Newton_method
http://en.wikipedia.org/wiki/BFGS_method
http://en.wikipedia.org/wiki/Limited-memory_BFGS