關於數據降維的諸多演算法,測試數據必須要和訓練數據一起運算么?

了解了諸如PCA,LDA,LLE,ISOMAP這些數據降維的演算法,發現了一個問題,這些演算法在降維的時候均需要將訓練數據和測試數據同時運算。例如PCA,倘若兩次數據不一樣則投影空間也必然不同,那麼問題來了,現在我是想做一個識別系統,那我豈不是每次來數據都要將訓練數據跟測試數據合起來做PCA,然後再訓練,測試,意義何在???我原來訓練好的模型只能在這一次用,來新數據就完全用不了了,我這樣理解對么?


題主可能對降維的概念理解有所偏差。以PCA為例說一下這個問題。

PCA的主要目的是尋找一種空間映射P,假設原始數據矩陣X(中心化的),利用Y=PX得到P空間的映射,通常情況下Y的維數要低於X。對數據進行訓練的目的是尋找這個映射矩陣P

對於測試數據而言,因為我們通過訓練得到了P,所以,測試數據只需要進行Y(test)=PX(test)變換即可。並

不是如題主所說的需要測試數據一起做,而是測試數據只需要利用映射矩陣P進行變換即可。


數據降維演算法分為線性與非線性方法。線性方法(PCA,LPP等)的目的是尋找一個高維空間到低維空間的映射矩陣,這個映射矩陣就可以直接運用到訓練和測試數據上來實現降維;非線性方法(LLE,ISOMAP等)就是在保持某種局部結構的條件下實現數據的整體降維,其間是沒有顯式的映射矩陣的,所以就需要所有數據(訓練和測試)一起做才能實現降維。但是現在很多學者將非線性方法給線性化了(LE-&>LPP,LLE-&>NPE,ISOMAP-&>G-ISOMAP等),在目標函數中直接引入了線性投影矩陣,或者提出相應的方法來解決out of samplede問題。


你先在訓練集上得到映射,例如PCA的均值和投影矩陣。然後在測試的時候用同樣的映射就好了。


必須的。比如Pca,你就要保留之前數據的投影矩陣,新來數據的話必須也在這個投影矩陣上搞下。明顯一類數據只能一個


推薦閱讀:

學習數據挖掘,機器學習的正確姿勢?
數據治理的主戰場,商業智能還是數據挖掘?
免費申請 | 2000冊《數據實踐之美》等你拿
專欄導讀

TAG:數據挖掘 | 數據分析 | 機器學習 | 模式識別 | 數據降維 |