2016-02-01 15 views
0

我的數據集有1000個輸入和6個功能的訓練集。 (數據集大小爲1000 * 6)。我將KPCA應用於數據集,並將特徵數量減少到3.這意味着eignvector矩陣的維數現在是1000 * 3。我使用簡化的數據集來訓練神經網絡。現在,訓練完網絡後,讓我們想象一下我想分類一個新的數據(其大小爲1 * 6)。顯然我必須將其轉換爲1 * 3的數據,然後將其呈現給網絡,但我不知道該怎麼做?如何使用具有神經網絡的內核PCA

回答

0

您需要將數據投影到縮小的空間上。究竟如何 - 在Python和依賴於特定的實現KPCA,例如scikit學習,你會做

[...] 
kpca = KPCA(n_components=3) 
kpca.fit(X_train) 
[...] 

reduced_new_point = kpca.transform(new_point) 

和一般你有每個特徵值和i你的投影連接乘數alpha序列個本徵向量是

P(x, i) = SUM alpha^{i}_j K(x_j, x) 

其中alpha^{i}_jj訓練樣本的coeffient爲i特徵向量,x_j是第j個訓練樣本和K是內核使用。

1

核PCA開始通過與項計算內核矩陣K

K_{ij} = KernelFunction(x_i, x_j). 

K是在你的情況下,1000 x 1000矩陣。接下來,一個對角化矩陣,得到分解

K = W S W^T 

(在實踐中,作爲通向更小的尺寸將執行雙PCA,但這裏不是重要的,因爲你已經獲得的減少)。

現在減少數據集僅對應於特徵向量S的對角矩陣保留了三大項,並忽略所有其他( - 如果這種近似是合理的內核是精心挑選)。

有效地,這意味着,在投影矩陣W^T僅第一L=3行被保留。調用尺寸爲1000 x 3的簡化矩陣W_L。現在,「減少」的特點correspons的數量與矩陣

K_L = K W_L 

,其除了具有尺寸1000 x 3工作。這些行被用作訓練神經網絡的輸入。

讓我們來看看你的問題:如何看待一個新的特徵向量y

  • 首先,計算與元件k_i = KernelFunction(x_i, y)向量k
  • 其次,映射該向量到子空間KPCA通過計算k_L = k W_L - 這是維1 x 3的向量。
  • 最後,飼料矢量k_L到你的神經網絡,並使用了預測。