機器學習之對數幾率回歸(Logistic Regression)

機器學習之對數幾率回歸(Logistic Regression)

來自專欄 人工智慧之路

作者:朱濤

原文地址:github.com/towerjoo/myM

署名 保持完整性 CC

什麼是對數幾率回歸(logistic regression)

logistic regression,在英語的術語里準確而簡潔,但是翻譯成中文則有多種譯法,例如:邏輯回歸(比較常見),對數幾率回歸(周志華),邏輯斯諦回歸(Understanding Machine Learning:From Theory to Algorithms中譯本)等等,個人比較喜歡周老師的翻譯,從名稱中可以看到背後的意義。(後文都採用此譯法)

對數幾率回歸是一種常用於分類(classification)的演算法,例如binary classification, multiclass classification等,和 #1 (線性回歸)處理連續分布比較而言,對數幾率回歸處理的是離散的結果分布。

也就是給定x和在參數theta下,y=1的概率。

如何進行對數幾率回歸?

對於binary classification,結果只有y=0|1兩種,可以使用階躍函數來描述其輸出:

h(x) = 1 p>0.5

h(x) = 0 p<0.5

由於這個函數不連續,所以通常我們使用某個連續函數使得h(x)結果位於0,1之間,而我們通常選用的就是所謂的sigmoid函數,也叫logistic函數(這也就是為什麼叫logistic regression的原因)

上圖就是sigmoid函數的曲線,可以看到x->負無窮時,h(x)->0; x->正無窮時,h(x) -> 1

那麼回想 #1 (linear regression)中的函數,我們進行sigmoid變換即可得到logistic regression函數

此時,離散的問題化解為連續的線性回歸(注意classifcation的結果是離散的,而這裡經過sigmoid變換後的結果是連續的)

進行變換後可得到:

直觀的理解y(也就是h(x))如果作為正例的概率,那麼1-y就是反例的概率,兩者的比率 y / (1-y)就是正反例的比值,成為「幾率」(odds),反映了x作為正例的相對可能性,取對數則得到「對數幾率」(log odds, logit),而等式右邊是線性回歸模型的函數,所以logistic回歸就是在用線性回歸的預測結果去逼近真實標記的對數幾率。

根據概率我們可以將等式替換為

根據 p(y=1|x) + p(y=0|x) = 1有:

下來的就要用極大似然法(maximum likelihood estimation)來估計參數theta的值。

那麼arg max L(theta) 即可求出theta. (因為是凸函數,必定存在最優解),可以通過 #1 (linear regression)類似的梯度下降法求解。

MLE: maximum likelihood estimation這個方法在ML學習中是經常遇到的,它是假定一個數據集X1, X2, ..., Xn的分布依賴於參數theta,MLE就是對數據集找到theta的近似(estimator)的方法。直觀地,theta的值就是使得x1,x2...符合數據集分布的概率(可能性, likelihood)的最大估計,所謂的maximum likelihood estimation如何計算?L(theta) = P(X1=x1, X2=x2, ..., Xn=xn) = f(x1;theta)*f(x2;theta)...*f(xn;theta) 注意這裡Xi之間是獨立分布的,f是密度函數,L(theta)就是likelihood function於是我們就是要求出max L(theta)時,theta的值。https://onlinecourses.science.psu.edu/stat414/node/191 有很好的解釋和說明

對於multiclass classification可以通過One vs. All(或者叫One vs. Rest)演算法來轉換為binary classification按照上面的方法來處理,最終可以輸出一個一維數組(通常只有一個值為1,其它為0)

為什麼進行對數幾率回歸?

對數幾率回歸因為比較簡單常用於分類(classification),例如email spamming, 癌症檢測等學習問題上。通過sigmoid變換後給出的結果分布是連續的,因而可以得到相應的概率值,從而可以給出一個概率性的結果(more explainable),例如明天的降水概率,癌症的概率等。

最後

看Andrew Ng的lecture越多,越是喜歡他的風格,他能夠把問題講的特別清晰,在intuition/big picture方面非常出色,哪怕嚴謹性不夠。

Andrew Ng 2016年的lecture Nuts and Bolts of Applying Deep Learning非常出色,非常推薦大家看下,具體關於ML職業道路上他提到:

  1. learn ML
  2. learn DL
  3. phD student process( to get more insights)
  • read papers
  • replicate the results
  1. dirty work is needed(data gathering, clearing, debugging, diagnosing, etc.)
  2. work hard(in weekends)

參考文獻

  1. Understanding Machine Learning:From Theory to Algorithms 中譯本: 深入理解機器學習:從原理到演算法 (豆瓣)
  2. Logistic regression
  3. Advanced Data Analysis from an Elementary Point of View
  4. Maximum Likelihood Estimation
  5. 周志華 ML
  6. Andrew Ngs ML in Coursera
  7. youtube.com/watch? (Nuts and Bolts of Applying Deep Learning)

推薦閱讀:

Generative Learning Algorithms VS discriminative Learning Algorithms
假裝在專欄里發乾貨之邏輯回歸
Google 使用機器學習來製作音樂
什麼是超網路?
2.7 蒙特卡洛近似

TAG:機器學習 | 人工智慧 | 深度學習DeepLearning |