Logistic Regression、Linear Discriminant Analysis、Shrinkage Methods(Ridge Regression and Lasso)

引言

本篇文章主要偏向於實際應用的目標,我會把詳細的python代碼專門寫在 jupyter notebook上。這篇文章主要介紹了一些關於應用Logistic Regression,LDA和Shrinkage Methods的一些要點,讓你在實際應用中可以更好地發揮各個模型的優勢,這篇文章全部來自於對An Introduction to Statistical Learning的總結,如果你有相關的統計學基礎,你可以很快讀懂文章,並結合到實際的應用,如果你沒有相應的基礎,希望你參考我的這篇文章:學好機器學習必會的統計學知識

這是與本篇文章相對應地python代碼和一些數據集,請點我

Logistic Regression

Default數據集描述,詳細信息在第6頁。

logistic regression 是一個線性模型用於做分類的,它直接對Y屬於某個類別的概率進行建模。比如對於Default數據集來說,Pr(default = Yes | balance, student, income). 這也就是說,對於任何給定的balance, student, income的值,我都可以求出default = Yes的概率。如果我設定闕值爲0.3,那麼只要Pr(default = Yes | balance, student, income) > 0.3,我就預測default的結果爲Yes.

既然logistic regression是對概率進行建模,因此我們需要一個函數的輸出在0到1之間。有很多函數符合這個性質,但是在logistic regression中,我們用logistic function,公式如下:

p(X)=eβ0+β1X1++βpXp1+eβ0+β1X1++βpXp

那麼我們如如何來估算Logistic Regression的要參數呢?答案是用maximum likelihood. 比如,我們對Pr(default = Yes | X)來進行建模,把估算出的一系列參數插入到模型中,使得所有defaulted人的概率接近1,使得所有沒有defaulted人的概率接近0. 我們可以把這樣的想法寫成一個數學公式表達出來:

l(β0,β1,,βp)=i:yi=1p(xi)i:yi=0(1p(xi))

我們目的是找出一系列參數來最大化上面的likelihood函數。

Linear Discriminant Analysis

Logistic regression用logistic函數直接對Pr(Y = k|X = x)建模。而LDA用一種間接的方法去估算這些概率。LDA對每個response中X的分佈進行建模,然後用Bayes理論去反轉去估算Pr(Y = k|X = x). 如果每個response中X的分佈爲正態分佈,那麼LDA與logistic regression模型是非常相似的。LDA相比於logistic regression模型有以下3個優勢:

  1. 當類別能well-separated時, logistic regression模型的參數估計是非常不穩定的,而LDA並沒有這樣的問題。
  2. 如果數據集中的樣本很少並且每個類別中的X是接近正態分佈的,那麼LDA也要比logistic regression模型更加穩定。
  3. 當我們的response超過2個類別時,LDA是更受歡迎的。

假設我們一共有k個類別,Bayes 理論可以寫成如下公式:

Pr(Y=k|X=x)=πkfk(x)Kl=1πlfl(x)
  • πk: 第k個類別的prior probability
  • fk(x): 第k個類別中X的density function
  • 以後我們會把Pr(Y = k | X = x)簡寫成pk(X) ,稱爲posterior probability

LDA總體的思路已經被濃縮在上面的一個公式中了。LDA的主要目標就是估算出prior probability和density function,之後我們就可以在給定X的情況下,分別求出屬於各個類別的概率。想要估算出density function,我們必須假設它的形式,在LDA中,我們的假設都是正態分佈。

只有一個特徵的LDA

我們已經假設fk(x) 是normal的,在one-dimensional的情況下,normal density的形式如下:

fk(x)=12πσkexp(12σ2k(xμk)2)
  • μk: 第k個類別的mean
  • σ2k: 第k個類別的variance

LDA不僅僅假設X的density function是正態的,而且它還假設σ21=σ22==σ2k ,即每個類別中,X分佈的方差相等。現在,我把上面的公式插入到Bayes 理論那麼公式中,由於所有的方差相同,我簡化寫成σ2

pk(x)=πk12πσexp(12σ2(xμk)2)Kl=1πl12πσexp(12σ2(xμl)2)

由於我們最終的目標是做分類,我們只要求出在給定X的情況下,屬於各個類別的概率,哪個概率最大,最後我們就預測屬於哪個類別。因此,我們可以繼續簡化上面的公式,在簡化過程中,算每個類別概率都會用到的項我直接捨棄,過程如下:

lnπkexp(12σ2(xμk)2)Kl=1πlexp(12σ2(xμl)2)lnπk12σ2(xμk)2ln(l=1Kπlexp(12σ2(xμl)2))lnπk12σ2(xμk)2xμkσ2μ2k2σ2+lnπkx22σ2

因此,最終公式如下:

δk(x)=xμkσ2μ2k2σ2+lnπk

最終,哪個δk(x) 大,我們就預測爲哪個類別。上面有三個未知量需要估算,μk 的估算公式如下:

μk^=1nki:yi=kxi
  • nk: 第k個類別observations的數量

σ2 的估算公式如下:

σ̂ 2=1nKk=1Ki:yi=k(xiμk^)2
  • n:total number of training observations

prior probability最好是問一下你應用領域的專家,由於很多原因,訓練集並不一定很好地估計出prior probability. 如果你實在沒有專家可以諮詢,那麼就用下面這個簡單的公式:

πk^=nkn

總結來說:LDA分類器假設每個類別中的X服從正態分佈,並且每個分佈都具有一樣的方差,之後插入這些估算的參數到Bayes classifier,進而估算每個類別的概率。

多個特徵的LDA

先前只有一個特徵的LDA,我們假設X服從正態分佈。這回具有多個特徵的LDA也是相似的道理,只不過是X的分佈爲多變量Gaussian分佈,我們記作

XN(μ,)
  • μ X的mean(a vector with p component)
  • Σ = Cov(X):p × p covariance matrix of X

multivariate Gaussian density function的公式如下:

f(x)=1(2π)p/21/2exp(12(xμ)T1(xμ))

就像上面的單變量LDA一樣,通過一些化簡,我們可以得出下面的公式:

δk(x)=xT1μk12μTk1μk+lnπk

Quadratic Discriminant Analysis

QDA的假設要比LDA更鬆一些,LDA的假設爲X分佈的方差都一樣,而QDA並沒有這樣的假設。如果你自己動手化簡上面的過程,你就會明白當各個類別內X的方差不一樣時,就會導致化簡結果出現x2 項。因此,我們才叫它Quadratic Discriminant Analysis.

大致上來說,如果training observations相對較少,LDA的性能要比QDA要好,因爲LDA減少了方差。如果training set是非常大的,QDA是更好地選擇,因爲分類器地方差並不是我們主要考慮地對象。或者當方差相等的假設不成立時,QDA也是一個更合理地選擇。

如果QDA模型中假設covariance matrices是diagonal,這就意味着我們假設各個類別中的分佈是conditionally independent,因此導致我們的分類器與 Gaussian Naive Bayes是等價的。

幾個分類方法之間的比較

logistic regression和LDA之間唯一的不同就是估算參數的方式。logistic regression用 maximum likelihood 估算參數,而LDA假設分佈爲正態分佈從而估算方差和平均值。

LDA假設observations來自於Gaussian distribution,每個類之間有同樣的covariance matrix,因此當假設成立時,它的性能要比logistic regression好。但是,如果假設不成立,logistic regression要比LDA表現地更好。

當真正地決策邊界是線性的時候,LDA和logistic regression模型性能會很好。當決策邊界是稍微非線性的,QDA可能會給出更好地結果。最後,如果決策邊界是高度非線性的,non-parametric方法KNN可能會更有優勢,前提是我們選擇出一個合適的K值。

如果我們想要logistic regression去學習非線性的關係時,我們可以transformations of the predictors,也就是在模型中加入X2X4 等高階項。這樣增加flexibility會導致增加variance,但是減少了bias,模型結果的好壞取決於是否減少的bias大於增加的variance.

Shrinkage Methods

shrinking the coefficient estimates 可以明顯顯著地減小方差。shrinking regression coefficients接近0的2個最著名的技術是ridge regression 和 the lasso

ridge regression

least squares估算線性迴歸係數時最小化residual sum of squares (RSS),而Ridge regression是和它相似的,只不過加上正則化項,即L2-penalty,因此,ridge regression最小化:

RSS+λj=1pβ2j

tuning parameter λ 控制兩個項之間的平衡,當λ=0 時, 相當於沒有penalty項,ridge regression和least squares一樣。然而,當λ 時,ridge regression估算的係數都將接近於0.

當我們用least squares去估算係數時,它是scale invariant. 也就是說,把Xj 乖上一個常數c,least squares估算的係數會縮小爲先前的1/c,不管你怎樣縮放變量,βj^Xj 將保持不變。但是,ridge regression加上penalty項後,事情就不像先前那樣了。

假設你的機器學習應用中,有個長度變量,它的單位是cm,如果你把它的單位變成m,也就是這個變量縮小了100倍,ridge regression產生的係數就和先前不一樣了,因爲如果你想把估算的係數在擴大100倍,但penalty項並不會允許你這樣做,因爲這會增加penalty項的大小,導致整體的loss增加。因此,在使用ridge regression之前,一定要standardizing the predictors,讓它們在same scale上。

ridge regression相比於least squares的優勢在於它植入了bias-variance
trade-off. 隨着λ 增加,ridge regression的flexibility減小,導致減少方差增加偏差。

ridge regression

從上圖我們可以看出,隨着λ 逐漸增加,導致顯著地減小方差,而只稍微增加偏差。因此,只要我們選擇一個合適的λ ,我們就可以顯著地提升模型效果。

The Lasso

ridge regression在最終的模型上會包含所有的predictors,正則項λβ2j 將shrink所有的係數接近0,但是它不會讓某個項等於0. 而Lasso可以解決這個問題。 The Lasso 最小化:

RSS+λj=1pβj

The Lasso也叫做L1-penalty,它生成sparse models,即只包含了變量的子集。

比較ridge regression和lasso

當小部分的predictors對response有實質的影響,而其餘的predictors相關聯的係數很小或接近於0,在這種情況下,lasso的性能要比ridge regression要好。當大部分的predictors都與response有關,並且相關聯的係數大小基本上相等,在這種情況下,ridge regression的性能要好。然而,在實際應用中,我們不可能事先知道有多少predictors與response相關聯,因此,cross-validation是一個好的技術來判斷哪個方法更好。

發佈了106 篇原創文章 · 獲贊 213 · 訪問量 59萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章