【Scikit-Learn 中文文檔】線性和二次判別分析 - 監督學習 - 用戶指南 | ApacheCN

中文文檔: http://sklearn.apachecn.org/cn/0.19.0/tutorial/basic/tutorial.html

英文文檔: http://sklearn.apachecn.org/en/0.19.0/tutorial/basic/tutorial.html

官方文檔: http://scikit-learn.org/0.19/

GitHub: https://github.com/apachecn/scikit-learn-doc-zh(覺得不錯麻煩給個 Star,我們一直在努力)

貢獻者: https://github.com/apachecn/scikit-learn-doc-zh#貢獻者


1.2. 線性和二次判別分析

Linear Discriminant Analysis(線性判別分析)(discriminant_analysis.LinearDiscriminantAnalysis) 和 Quadratic Discriminant Analysis (二次判別分析)(discriminant_analysis.QuadraticDiscriminantAnalysis) 是兩個經典的分類器。 正如他們名字所描述的那樣,他們分別代表了線性決策平面和二次決策平面。

這些分類器十分具有魅力,因爲他們可以很容易計算得到閉式解,其天生的多分類特性,在實踐中已經證明很有效,並且不需要再次調參。

ldaqda

以上這些圖像展示了 Linear Discriminant Analysis (線性判別分析)以及 Quadratic Discriminant Analysis (二次判別分析)的決策邊界。其中,最底行闡述了線性判別分析只能學習線性邊界, 而二次判別分析則可以學習二次函數的邊界,因此它相對而言更加靈活。

示例:

Linear and Quadratic Discriminant Analysis with covariance ellipsoid: LDA和QDA在特定數據上的對比

1.2.1. 使用線性判別分析來降維

discriminant_analysis.LinearDiscriminantAnalysis 可以通過給予包含了最大化不同類別間距的方向的線性子空間(subspace)投放輸入數據, 從而用來執行監督下的降維。輸出的維度必然會比原來的類別數量更少的。因此它是總體而言十分強大的降維方式,同樣也僅僅在多分類環境下才會起作用。

實現方式在 discriminant_analysis.LinearDiscriminantAnalysis.transform 中.關於維度的數量可以通過n_components參數來調節 . 值得注意的是,這個參數不會對 discriminant_analysis.LinearDiscriminantAnalysis.fit 或者 discriminant_analysis.LinearDiscriminantAnalysis.predict 產生影響.

示例:

Comparison of LDA and PCA 2D projection of Iris dataset: 在 Iris 數據集對比 LDA 和 PCA 之間的降維差異

1.2.2. LDA 和 QDA 分類器的數學公式

LDA 和 QDA 都是源於簡單的概率模型,這些模型對於每一個類別 k 的相關分佈 P(X|y=k) 都可以通過貝葉斯定理所獲得。

P(y=k | X) = \frac{P(X | y=k) P(y=k)}{P(X)} = \frac{P(X | y=k) P(y = k)}{ \sum_{l} P(X | y=l) \cdot P(y=l)}

並且我們選擇能夠最大化條件概率的類別 k.

更詳細地,對於線性以及二次判別分析, P(X|y) 被塑造成一個多變量的高斯分佈密度:

p(X | y=k) = \frac{1}{(2\pi)^n |\Sigma_k|^{1/2}}\exp\left(-\frac{1}{2} (X-\mu_k)^t \Sigma_k^{-1} (X-\mu_k)\right)

爲了使用該模型作爲分類器使用,我們需要通過訓練集數據預測更重要的類別 P(y=k) (通過每個類 k 的實例的概率預測) 類別均值 \mu_k (用經驗的樣本類別均值)以及協方差矩陣(過用經驗的樣本類別協方差或者正則化的估計器estimator: 見下面的 shrinkage章節).

在 LDA 中,每個類別 k 的高斯分佈共享相同的協方差矩陣:\Sigma_k = \Sigma for all k。可以帶來線性的 決策平面, 正如所見, 通過比較log似然比 \log[P(y=k | X) / P(y=l | X)] 。

\log\left(\frac{P(y=k|X)}{P(y=l | X)}\right) = 0 \Leftrightarrow (\mu_k-\mu_l)\Sigma^{-1} X = \frac{1}{2} (\mu_k^t \Sigma^{-1} \mu_k - \mu_l^t \Sigma^{-1} \mu_l)

對於 QDA 而言,沒有關於高斯協方差矩陣 \Sigma_k 的假設,因此帶來二次決策平面. 更多細節見 [3] .

Note

   

與高斯樸素貝葉斯的關係

如果在QDA模型中假設協方差矩陣是對角的,那麼在每個類別中的輸入數據則被假定是相關依賴的。 而且結果分類器會和高斯樸素貝葉斯分類器 naive_bayes.GaussianNB 相同。

1.2.3. LDA 的降維數學公式

爲了理解 LDA 在降維上的應用,它對於進行 LDA 分類的幾何重構是十分有用的。我們用 K 表示目標類別的總數。 由於在 LDA 中我們假設所有類別都有相同預測的協方差 \Sigma ,我們可重新調節數據從而讓讓協方差相同。

X^* = D^{-1/2}U^t X\text{ with }\Sigma = UDU^t

在縮放後可以分類數據點和找到離數據點最近的歐式距離相同的預測類別均值。但是它可以在投影到 K-1 個由所有 \mu^*_k 個類生成的仿射子空間
H_K 之後被完成。這也表明,LDA 分類器中存在一個利用線性投影到 K-1 個維度空間的降維工具。

我們可以通過投影到可以最大化 \mu^*_k 的方差的線性子空間 H_L 以更多地減少維度,直到一個選定的 L 值 (實際上,我們正在做一個類 PCA 的形式爲了實現轉換類均值 \mu^*_k) discriminant_analysis.LinearDiscriminantAnalysis.transform 方法. 詳情參考 [3] 。

1.2.4. Shrinkage(收縮)

收縮是一個在訓練樣本數量相比特徵而言很小的情況下可以提升預測(準確性)的協方差矩陣。 在這個情況下,經驗樣本協方差是一個很差的預測器。LDA 收縮可以通過設置 discriminant_analysis.LinearDiscriminantAnalysis 類的 shrinkage參數爲 ‘auto’ 以得到應用。

shrinkage parameter (收縮參數)的值同樣也可以手動被設置爲 0-1 之間。特別地,0 值對應着沒有收縮(這意味着經驗協方差矩陣將會被使用), 而 1 值則對應着完全使用收縮(意味着方差的對角矩陣將被當作協方差矩陣的估計)。設置該參數在兩個極端值之間會估計一個(特定的)協方差矩陣的收縮形式

shrinkage

1.2.5. 預估算法

默認的 solver 是 ‘svd’。它可以進行classification (分類) 以及 transform (轉換),而且它不會依賴於協方差矩陣的計算(結果)。這在特徵數量特別大的時候就顯得十分具有優勢。然而,’svd’ solver 無法與 shrinkage (收縮)同時使用。

‘lsqr’ solver 則是一個高效的算法,它僅僅只能用於分類使用,而且它支持 shrinkage (收縮)。

‘eigen’(特徵) solver 是基於 class scatter (類散度)與 class scatter ratio (類內離散率)之間的優化。 它既可以被用於classification (分類)以及 transform (轉換),此外它還同時支持收縮。然而,該解決方案需要計算協方差矩陣,因此它可能不適用於具有大量特徵的情況。

Examples:

Normal and Shrinkage Linear Discriminant Analysis for classification: Comparison of LDA classifiers with and without shrinkage.

References:

[3] (12) “The Elements of Statistical Learning”, Hastie T., Tibshirani R., Friedman J., Section 4.3, p.106-119, 2008.
[4] Ledoit O, Wolf M. Honey, I Shrunk the Sample Covariance Matrix. The Journal of Portfolio Management 30(4), 110-119, 2004.



中文文檔: http://sklearn.apachecn.org/cn/0.19.0/tutorial/basic/tutorial.html

英文文檔: http://sklearn.apachecn.org/en/0.19.0/tutorial/basic/tutorial.html

官方文檔: http://scikit-learn.org/0.19/

GitHub: https://github.com/apachecn/scikit-learn-doc-zh(覺得不錯麻煩給個 Star,我們一直在努力)

貢獻者: https://github.com/apachecn/scikit-learn-doc-zh#貢獻者

有興趣的大佬們也可以和我們一起來維護,持續更新中 。。。

機器學習交流羣: 629470233

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