ISLR讀書筆記七:線性判別分析(LDA)
線性判別分析(LDA)
前言
線性判別分析(linear discriminant analysis,簡稱LDA)是一種解決分類問題的方法。上一篇文章中講到的邏輯斯蒂迴歸是處理分類問題的一個很好的模型,那麼為什麼還需要LDA呢?主要有以下三個原因:
- 當類分離得很好的時候,邏輯斯蒂迴歸的引數估計很不穩定,而LDA不會存在這個問題。
- 當 n n n 很小,而自變數 X X X 的分佈大致服從正態分佈時,LDA比邏輯斯蒂迴歸更穩定
- LDA比邏輯斯蒂迴歸更適合處理多分類的問題
LDA的出發點是貝葉斯公式(Bayes’ Theorem)。假設要預測的因變數一共有
K
K
K 類,
π
k
\pi_k
πk 表示隨機選擇觀測值,屬於類
k
k
k 的先驗概率(prior probability),令
f
k
(
x
)
=
P
r
(
X
=
x
∣
Y
=
k
)
f_k(x)=Pr(X=x|Y=k)
fk(x)=Pr(X=x∣Y=k) 表示類
k
k
k 的概率密度函式(density function),利用貝葉斯公式可以得到
P
r
(
Y
=
k
∣
X
=
x
)
=
π
k
f
k
(
x
)
∑
l
=
1
K
π
l
f
l
(
x
)
Pr(Y=k|X=x)=\frac{\pi_kf_k(x)}{\sum_{l=1}^K\pi_lf_l(x)}
Pr(Y=k∣X=x)=∑l=1Kπlfl(x)πkfk(x)
令
p
k
(
X
)
=
P
r
(
Y
=
k
∣
X
)
p_k(X)=Pr(Y=k|X)
pk(X)=Pr(Y=k∣X),
p
k
(
X
)
p_k(X)
pk(X) 稱作為後驗概率(posterior probability)。聯絡之前提到的貝葉斯分類器,給定
X
X
X 之後,使得
p
k
(
X
)
p_k(X)
pk(X) 最大的
k
k
k,即是預測的類。
單變數的LDA
假設只有一個自變數
x
x
x,假設
f
k
(
x
)
f_k(x)
fk(x) 是正態分佈(normal distribution)。即
f
k
(
x
)
=
1
2
π
σ
k
e
x
p
(
−
1
2
σ
k
2
(
x
−
μ
k
)
2
)
f_k(x)=\frac{1}{\sqrt{2\pi}\sigma_k}exp(-\frac{1}{2\sigma_k^2}(x-\mu_k)^2)
fk(x)=2πσk1exp(−2σk21(x−μk)2)
再進一步假設
σ
1
2
=
⋯
=
σ
K
2
\sigma_1^2=\cdots=\sigma_K^2
σ12=⋯=σK2,代入
p
k
(
X
)
p_k(X)
pk(X)可以得到
p
k
(
X
)
=
π
k
1
2
π
σ
e
x
p
(
−
1
2
σ
2
(
x
−
μ
k
)
2
)
∑
l
=
1
K
π
l
1
2
π
σ
e
x
p
(
−
1
2
σ
2
(
x
−
μ
l
)
2
)
p_k(X) = \frac{\pi_k\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{1}{2\sigma^2}(x-\mu_k)^2)}{\sum_{l=1}^K\pi_l\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{1}{2\sigma^2}(x-\mu_l)^2)}
pk(X)=∑l=1Kπl2πσ1exp(−2σ21(x−μl)2)πk2πσ1exp(−2σ21(x−μk)2)
要使得
p
k
(
X
)
p_k(X)
pk(X) 最大,對其取對數之後不難發現,即要使得下式最大:
δ
k
(
x
)
=
x
μ
k
σ
2
−
μ
k
2
2
σ
2
+
l
o
g
(
π
k
)
\delta_k(x)=x\frac{\mu_k}{\sigma^2}-\frac{\mu_k^2}{2\sigma_2}+log(\pi_k)
δk(x)=xσ2μk−2σ2μk2+log(πk)
實際問題中,
μ
1
,
…
,
μ
K
,
π
1
,
…
,
π
K
,
σ
2
\mu_1,\dots,\mu_K,\pi_1,\dots,\pi_K,\sigma^2
μ1,…,μK,π1,…,πK,σ2,都需要估計。可以用以下式子估計:
μ
^
k
=
1
n
k
∑
i
:
y
i
=
k
x
i
\hat{\mu}_k=\frac{1}{n_k}\sum_{i:y_i=k}x_i
μ^k=nk1i:yi=k∑xi
π
^
k
=
n
k
n
\hat{\pi}_k=\frac{n_k}{n}
π^k=nnk
σ
^
2
=
1
n
−
K
∑
k
=
1
K
∑
i
:
y
i
=
k
(
x
i
−
μ
^
k
)
2
\hat{\sigma}^2=\frac{1}{n-K}\sum_{k=1}^K\sum_{i:y_i=k}(x_i-\hat{\mu}_k)^2
σ^2=n−K1k=1∑Ki:yi=k∑(xi−μ^k)2
然後就可以得到
δ
^
k
(
x
)
=
x
μ
^
k
σ
^
2
−
μ
^
k
2
2
σ
^
2
+
l
o
g
(
π
^
k
)
\hat{\delta}_k(x)=x\frac{\hat{\mu}_k}{\hat{\sigma}^2}-\frac{\hat{\mu}_k^2}{2\hat{\sigma}_2}+log(\hat{\pi}_k)
δ^k(x)=xσ^2μ^k−2σ^2μ^k2+log(π^k)
判別函式(discriminant funcition)
δ
^
k
(
x
)
\hat{\delta}_k(x)
δ^k(x) 是
x
x
x 的線性函式,這就是線性判別分析的由來。需要注意的是,這裡要求每類的分佈都是正態的,且方差相同。
多變數的LDA
當自變數有多個時,需要多元正態分佈(multivariate normal distribution)。假設有
p
p
p 個自變數,記
X
∼
N
(
μ
,
Σ
)
X\sim N(\mu,\Sigma)
X∼N(μ,Σ),
E
(
X
)
=
μ
E(X)=\mu
E(X)=μ 是
X
X
X 的均值(
p
×
1
p\times1
p×1),Cov(
X
X
X) =
Σ
\Sigma
Σ 是
X
X
X 的協方差矩陣(
p
×
p
p\times p
p×p ) ,多元正態分佈定義如下:
f
(
x
)
=
1
(
2
π
)
p
/
2
∣
Σ
∣
1
/
2
e
x
p
(
−
1
2
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
)
f(x)=\frac{1}{(2\pi)^{p/2}|\Sigma|^{1/2}}exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu))
f(x)=(2π)p/2∣Σ∣1/21exp(−21(x−μ)TΣ−1(x−μ))
此時
δ
k
(
x
)
=
x
T
Σ
−
1
μ
k
−
1
2
μ
k
T
Σ
−
1
μ
k
+
l
o
g
(
π
k
)
\delta_k(x)=x^T\Sigma^{-1}\mu_k-\frac{1}{2}\mu_k^T\Sigma^{-1}\mu_k+log(\pi_k)
δk(x)=xTΣ−1μk−21μkTΣ−1μk+log(πk)
μ
1
,
…
,
μ
K
,
π
1
,
…
,
π
K
,
Σ
2
\mu_1,\dots,\mu_K,\pi_1,\dots,\pi_K,\Sigma^2
μ1,…,μK,π1,…,πK,Σ2 可以用單變數時類似的方法進行估計
二次判別分析(QDA)
線性判別分析要求每個類的協方差矩陣都相同,而如果每個類的協方差矩陣可以不同,那麼就有了二次判別分析(quadratic discriminant analysis,簡稱QDA)。即
X
∼
N
(
μ
k
,
Σ
k
)
X\sim N(\mu_k,\Sigma_k)
X∼N(μk,Σk),在這個條件下,可以得到
δ
k
(
x
)
=
−
1
2
x
T
Σ
k
−
1
x
+
x
T
Σ
k
−
1
μ
k
−
1
2
μ
k
T
Σ
k
−
1
μ
k
−
1
2
l
o
g
∣
Σ
k
∣
+
l
o
g
π
k
\delta_k(x) = -\frac{1}{2}x^T\Sigma_k^{-1}x+x^T\Sigma_k^{-1}\mu_k-\frac{1}{2}\mu_k^T\Sigma_k^{-1}\mu_k-\frac{1}{2}log|\Sigma_k|+log\pi_k
δk(x)=−21xTΣk−1x+xTΣk−1μk−21μkTΣk−1μk−21log∣Σk∣+logπk
δ
k
(
x
)
\delta_k(x)
δk(x) 關於
x
x
x 是二次的,這是二次判別分析名稱的由來。
如何選取LDA或者QDA,取決於對偏差和方差的權衡。LDA模型簡單,方差更低,但是有較高的偏差。而QDA較複雜,方差較高,但是偏差低。
相關文章
- LDA(線性判別分析)LDA
- 線性判別分析LDA原理總結LDA
- 史上最好的LDA(線性判別分析)教程LDA
- 線性判別分析(Linear Discriminant Analysis, LDA)NaNLDA
- 運用sklearn進行線性判別分析(LDA)程式碼實現LDA
- 預處理(3):python實現用scikit-learn實現的線性判別分析(LDA)PythonLDA
- 機器學習降維之線性判別分析機器學習
- 大學渣的ISLR筆記(1)筆記
- 遊戲性是什麼【讀書筆記】遊戲筆記
- 機器學習演算法(九): 基於線性判別模型的LDA手寫數字分類識別機器學習演算法模型LDA
- 線性判別分析(Linear Discriminant Analysis)NaN
- 讀書筆記:組合語言(王爽)實驗七筆記組合語言
- 讀書筆記...筆記
- 讀書筆記筆記
- 《讀書與做人》讀書筆記筆記
- 《3分鐘識別人才》讀書筆記筆記
- 《你不可不知的人性》劉墉 讀書筆記(七)後記筆記
- Cucumber讀書筆記筆記
- 散文讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- CoreJava讀書筆記-------Java筆記
- flask讀書筆記Flask筆記
- Vue讀書筆記Vue筆記
- MONGODB 讀書筆記MongoDB筆記
- Qt讀書筆記QT筆記
- Node讀書筆記筆記
- SAP讀書筆記筆記
- YII讀書筆記筆記
- iptables 讀書筆記筆記
- Makefile 讀書筆記筆記
- mysql讀書筆記MySql筆記
- 鎖讀書筆記筆記
- dataguard讀書筆記筆記
- 讀書筆記3筆記
- 讀書筆記2筆記
- postgres 讀書筆記筆記
- 事務隔離級別讀書筆記分享筆記
- LDA臨時筆記,待整理LDA筆記