關於數據降維的諸多演算法,測試數據必須要和訓練數據一起運算么?
01-25
了解了諸如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冊《數據實踐之美》等你拿
※專欄導讀