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
- 線性判別分析(Linear Discriminant Analysis, LDA)NaNLDA
- 運用sklearn進行線性判別分析(LDA)程式碼實現LDA
- 預處理(3):python實現用scikit-learn實現的線性判別分析(LDA)PythonLDA
- 線性判別分析(Linear Discriminant Analysis)NaN
- 機器學習降維之線性判別分析機器學習
- 讀書筆記筆記
- 《讀書與做人》讀書筆記筆記
- 讀書筆記:組合語言(王爽)實驗七筆記組合語言
- 讀書筆記-可靠性工程師前言筆記工程師
- 機器學習演算法(九): 基於線性判別模型的LDA手寫數字分類識別機器學習演算法模型LDA
- webpackDemo讀書筆記Web筆記
- Vue讀書筆記Vue筆記
- 散文讀書筆記筆記
- Cucumber讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- postgres 讀書筆記筆記
- 讀書筆記2筆記
- 讀書筆記3筆記
- 事務隔離級別讀書筆記分享筆記
- LDA臨時筆記,待整理LDA筆記
- js高程讀書筆記JS筆記
- 《論語》讀書筆記筆記
- 《重構》讀書筆記筆記
- PMBook讀書筆記(一)筆記
- 《Go 語言程式設計》讀書筆記 (七) Goroutine 與系統執行緒的區別Go程式設計筆記執行緒
- “花書”的佐餐,你的線性代數筆記筆記
- 《網路是怎樣連線的》讀書筆記筆記
- 【讀書筆記】Postgresql連線方法及執行器筆記SQL
- 17-《ARKit by Tutorials》讀書筆記4:面部識別AR筆記
- fluent python讀書筆記2—Python的序列型別1Python筆記型別
- fluent python 讀書筆記 2–Python的序列型別2Python筆記型別
- 大資料分析筆記 (4.1) - 線性迴歸分析(Linear Regression)大資料筆記
- 《如何有效閱讀一本書》讀書筆記筆記
- 《網路是怎樣連線的》讀書筆記一筆記
- 讀書筆記之《網路是怎樣連線的》筆記
- 《將心注入》讀書筆記筆記
- Raft論文讀書筆記Raft筆記