機器學習 特徵提取之LDA

2021-10-07 12:13:37 字數 3321 閱讀 4436

lda基本思想:給定帶有標籤的訓練樣本集,設法將樣本投影到一條直線上,使得同類樣本的投影點盡可能近,異類樣本的投影點盡可能遠。如果是進行分類,將新樣本投影到同樣的這條直線上,根據投影點的位置來確定新樣本的類別。

將高維的模式樣本投影到最佳鑑別向量空間,以達到抽取分類資訊和壓縮特徵空間維數的效果,投影後保證模式樣本在新的子空間有最大的類間距離和最小的類內距離,即模式在該空間中有最佳的可分離性

舉個例子,上圖給出了兩種不同的投影方式,直觀上來看右圖更好。因為右圖中藍色和紅色資料較為集中,且類別之間的距離明顯,而左圖邊界處資料混雜。

那麼如何用數學語言對「同類樣本的投影點盡可能近(組內差異),異類樣本的投影點盡可能遠(組間差異)」進行表達呢?

接下來從二分類lda入手,分析lda原理

圖中紅色實心的圓點表示類別為0的樣本的均值在直線上的投影位置,紅色實心三角形表示的是類別為1的樣本的均值在直線上的投影位置

所以優化目標就可以寫成公式4的樣子:

j(w)表示lda投影到直線w上的之後的損失函式,

類內分散度(類內方差,或叫組間方差)矩陣

優化目標其實就是 組間差異/組內差異 的值越大越好

綜上,對於二分類樣本,只要求出原始樣本的均值和方差就能確定最佳的投影方向w了。

如果是多類向低維投影,則此時投影到的低維空間就不是一條直線,而是乙個超平面了。

lda降維和pca降維有很多相似之處:

(1) 兩者在降維時都使用了特徵分解的思想 ,pca主要是從特徵的協方差角度,去找到比較好的投影方式。lda更多的是考慮了標註,即希望投影後不同類別之間資料點的距離更大,同一類別的資料點更緊湊

(2) 兩者都假設資料符合高斯分布,因此lda和pca都不適合對非高斯分布的樣本進行降維 。下圖中紅色區域表示一類樣本,藍色區域表示另一類,由於是2類,所以最多投影到1維上。不管在直線上怎麼投影,都難使紅色點和藍色點內部凝聚,類間分離。

相對於pca,lda又有所不同:

(1) lda是有監督的降維方法,降維過程中可以使用類別的先驗知識經驗,而pca不行

(2) lda選擇分類效能最好的投影方向,而pca選擇最大方差的投影方向,因此lda有過擬合的風險

(3) lda最多能降到n−1的維數,如果降維維度大於n−1,則不能使用lda,而pca沒有這個限制 。n-1表示矩陣的秩的最大個數

(4) 當樣本分類資訊依賴均值時lda效果較好;依賴方差的時候pca效果較好。下圖中,樣本點依靠方差資訊進行分類,而不是均值資訊。lda不能夠進行有效分類,因為lda過度依靠均值資訊

原始資料集的圖如下:

實現分類結果圖:

圖中的點的橫座標為y值,為了觀察方便,我們將各點的縱座標設為其標籤,獲得下圖

mju1 = np.mean(x1, axis=0)#求中心點

mju2 = np.mean(x2, axis=0)

cov1 = np.dot((x1 - mju1).t, (x1 - mju1))

cov2 = np.dot((x2 - mju2).t, (x2 - mju2))

sw = cov1 + cov2

w = np.dot(np.mat(sw).i, (mju1 - mju2).reshape((len(mju1), 1))) # 計算w

x1_new = func(x1, w)

x2_new = func(x2, w)

y1_new = [1 for i in range(len1)]

y2_new = [2 for i in range(len2)]

return x1_new, x2_new, y1_new, y2_new

def func(x, w):

return np.dot((x), w)

if '__main__' == __name__:

x, y = make_classification(n_samples=500, n_features=2, n_redundant=0, n_classes=2,

n_informative=1, n_clusters_per_class=1, class_sep=0.5, random_state=10)

x1_new, x2_new, y1_new, y2_new = lda(x, y)

plt.scatter(x[:, 0], x[:, 1], marker='o', c=y)

plt.show()

plt.plot(x1_new, y1_new, 'b*')

plt.plot(x2_new, y2_new, 'ro')

plt.show()

參考文獻:1.

2. 3. 特徵提取之pca方法的鏈結點此

特徵提取 機器學習

特徵提取簡介 sift原理 sift原理 sift原理 1.k近鄰法,簡單來說就是哪個點離得近就把例項點歸到哪一類中。特殊情況是最近鄰演算法 1近鄰演算法。演算法主要包括演算法的模型,距離度量 k值的選擇和演算法的具體實現。其中演算法的實現主要有兩種形式 線性掃瞄法和構建資料索引。改善演算法最好的當...

機器學習 特徵提取

from sklearn.feature extraction import dictvectorizer import numpy as np 定義一組字典列表,用來表示多個資料樣本 d1 例項化 dict dictvectorizer data dict fit transform d1 轉化後...

機器學習特徵提取

本文主要介紹基於sklearn的特徵提取,旨在為機器學習提供乙個好的開端 1.分類特徵提取 如上圖所示 許多特徵如pclass代表乘客船艙等級,分為1,2,3。還有例如性別,乘客登船碼頭,稱之為分類特徵。對於這一類資料的提取,採用one hot編碼。例如 data資料有兩個特徵,分別是城市和溫度,顯...