2015-01-05 54 views
1

在這一刻,我正在處理一個圖像處理項目。但是我有一個關於PCA的概念問題。運行後會發生什麼算法PCA(主成分分析)

將矩陣中的PCA應用於圖像後,矩陣究竟發生了什麼?

我不明白閱讀關於這個問題的文獻。給定一個M×N矩陣,結果是一個矩陣M'×N',其中M'和N'分別代表M×N×N和M'×N'。

回答

1

我不是PCA的專家,但我會盡力解釋我的理解。

將PCA應用於圖像矩陣之後,將得到該矩陣的特徵向量,該矩陣表示矩陣的數字不變軸。這些矢量全都相互正交。

通過測量矩陣中原始數據沿這些矢量的分散程度,您可以知道它們是如何分佈的。例如,如果您希望根據這些「軸」上的數據分佈情況進行模式分類,這可能很有用。

雖然不準確,但您可以想象,PCA可以幫助您沿矩陣中出現的數據斑點繪製「軸」,其中軸的新「起點」是數據的中心。

最好的部分是數據沿着第一個特徵向量分佈最多,跟隨第二個特徵向量等等。

我希望我沒有困惑你。

除了stackoverflow,還有很多關於PCA的參考資料。 這裏有幾個例子: https://www.quora.com/What-is-an-intuitive-explanation-for-PCA http://www.quora.com/How-to-explain-PCA-in-laymans-terms

再次,我不是專家,歡迎別人來糾正/教育既rwvaldivia和我。

1

PCA的概念與線性代數密切相關,線性代數是矩陣所屬的數學領域。查看矩陣的常見方法是作爲一組矢量,MxN矩陣只是N維空間中的M個矢量。

現在線性代數的一般概念是基向量的選擇是非常隨意的。如果您選擇另一個基礎,則通過將其與新基礎(一個NxN維矩陣本身)中表示的舊基數相乘來轉換您的矩陣。

PCA是一種找到基準的方法,其中不是任意的,但是專用於您的矩陣。特別是,它通過它們在你的向量集中存在的量來排列基向量。如果所有的矢量大致指向相同的方向,則該方向將是第一個基本矢量。如果它們大致在同一個平面上,那個平面的主要基礎矢量將是您的前兩個矢量。但請記住:您通常會得到一個完整的MxN基礎(除非您的矩陣變質);由您決定有多少個組件是Principal。

這裏是真正的問題:「圖像矩陣」到底是什麼?您通常不能將1024 x 768圖像作爲768維空間中的1024個矢量的集合。當然,您可以執行PCA操作,並且您將得到一個1024x768結果矩陣,但這甚至意味着什麼?它們是輸入矩陣的基本向量,但是由於輸入不是一組向量,因此該輸出不具有完全意義上的圖像。

+0

!謝謝你非常有見地的答案!現在我可以理解其他也有點不清楚的概念。從未將矩陣想象成一個N維集(我不是數學領域)。但是,如果你允許我,我想問你另一個問題:PCA函數的參數之一需要主要組件的數量!爲什麼?不僅應該有一個PCA?換句話說,一個矢量不應只有一個PCA計算? – rwvaldivia

+0

@rwvaldivia:主要是數值優化。如果由於某種原因您已經知道您的矢量集位於一個平面中,您可以傳遞數字2,以便PCA算法可以在計算前兩個矢量後儘早退出。對於一個非常大的矩陣,它也可以節省一點內存。 PCA算法的其他實現不會限制按維度的輸出,而是檢查輸入的多少變化已經在迄今爲止發現的基向量中表示。例如。您可以通過95%,輸出可以從1列到0.95 * M列的任意位置。 – MSalters