本文結(jié)構(gòu):
- 什么是 LDA
- 和 PCA 區(qū)別
- LDA 投影的計算過程
- LDA 降維的例子
1. 什么是 LDA
先說判別分析,Discriminant Analysis 就是根據(jù)研究對象的各種特征值,判別其類型歸屬問題的一種多變量統(tǒng)計分析方法。
根據(jù)判別標(biāo)準(zhǔn)不同,可以分為距離判別、Fisher 判別、Bayes 判別法等。例如,在 KNN 中用的是距離判別,樸素貝葉斯分類用的是 Bayes 判別,線性判別分析用的是 Fisher 判別式。
根據(jù)判別函數(shù)的形式,可以分為線性判別和非線性判別。
線性判別式分析(Linear Discriminant Analysis),簡稱為 LDA,也稱為 Fisher 線性判別,1936 年由 Ronald Fisher 提出,1996 年由 Belhumeur 引入模式識別和人工智能領(lǐng)域。
2. 和 PCA 區(qū)別
二者都有降維的作用。
1. 左邊是 PCA,屬于無監(jiān)督方法,當(dāng)數(shù)據(jù)沒有標(biāo)簽時可以用它。
右邊是 LDA,屬于監(jiān)督方法。考慮了數(shù)據(jù)的分類信息,這樣數(shù)據(jù)在低維空間上就可以分類了,減少了很多的運算量。
2. PCA 主要是從特征的協(xié)方差角度考慮,追求的是在降維之后能夠最大化保持?jǐn)?shù)據(jù)的內(nèi)在信息。
它不考慮分類信息,因此,降低維度后,信息損失降到最低,但分類上可能會變得更加困難。
LDA 追求的是降維后的數(shù)據(jù)點盡可能容易被區(qū)分。
降維后的樣本數(shù)據(jù)在新的維度空間有最大的類間距離和最小的類內(nèi)方差,數(shù)據(jù)在低維空間有最佳的可分離性。
3. PCA 后的維度數(shù)目是和數(shù)據(jù)維度相關(guān)的,原始數(shù)據(jù)是 n 維,那么 PCA 后維度為 1、2~n 維。
LDA 后的維度數(shù)目是和類別的個數(shù)相關(guān)的,原始數(shù)據(jù)是 n 維,一共有 C 個類別,那么 LDA 后維度為 1、2~C-1 維。
4. PCA 投影的坐標(biāo)系都是正交的。
LDA 關(guān)注分類能力,不保證投影到的坐標(biāo)系是正交的。
3. LDA 投影的計算過程(兩個類別)
給的數(shù)據(jù)有兩個類別,要找到一個向量 w,將數(shù)據(jù) x 投影到 w 上之后:
- 兩個類別的距離較遠(yuǎn),這一點用映射后兩個類別的均值差的絕對值來度量。
- 每個類內(nèi)部數(shù)據(jù)點比較聚集,這一點用投影后每個類別的方差來度量。
類別 i 的均值:
類別 i 投影后的均值:
投影后均值差的絕對值:
投影后的方差,y 為投影后的數(shù)據(jù),y = w_t * x:
目標(biāo)優(yōu)化函數(shù)為:
為了方便計算 w ,繼續(xù)推導(dǎo)分母為:
分子為:
則優(yōu)化目標(biāo) J(w) 為:
我們希望分母越小越好,分子越大越好:
- 分母小,則每個類內(nèi)部數(shù)據(jù)點比較聚集;
- 分子大,則兩個類別的距離較遠(yuǎn)。
所以需要找出一個 W 使 J(W) 的值最大。
最后推導(dǎo)出 w :
這樣通過計算后,獲得向量 W,生成新的 Y 軸,使兩個類別的樣本數(shù)據(jù)在新 Y 軸的投影能最大程度的分離。
4. LDA 降維的例子
下面這個例子,將 iris 數(shù)據(jù)降到 2 維:
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
iris = datasets.load_iris()
X = iris.data
y = iris.target
target_names = iris.target_names
lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)
plt.figure()
for c, i, target_name in zip("rgb", [0, 1, 2], target_names):
plt.scatter(X_r2[y == i, 0], X_r2[y == i, 1], c=c, label=target_name)
plt.legend()
plt.title('LDA of IRIS dataset')
plt.show()
資料:
http://blog.csdn.net/porly/article/details/8020696
http://www.voidcn.com/blog/u013488563/article/p-1024688.html
http://blog.csdn.net/sunmenggmail/article/details/8071502
http://dataunion.org/13451.html
http://sklearn.lzjqsdd.com/auto_examples/decomposition/plot_pca_vs_lda.html#example-decomposition-plot-pca-vs-lda-py
推薦閱讀 歷史技術(shù)博文鏈接匯總
http://www.lxweimin.com/p/28f02bb59fe5
也許可以找到你想要的:
[入門問題][TensorFlow][深度學(xué)習(xí)][強化學(xué)習(xí)][神經(jīng)網(wǎng)絡(luò)][機器學(xué)習(xí)][自然語言處理][聊天機器人]