PCA與矩陣分解

任書瑋
Figure-Blog
Published in
4 min readAug 21, 2018

這邊寫下之前讀到的筆記,基本上資料來源是李弘毅老師的投影片 Unsupervised Learning: Linear Dimension Reduction (http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html)

PCA

x 是向量,代表原始數據。W是轉換矩陣。z是轉換後的結果。z的長度代表要把x降到幾維。

對於轉換後z的每個元素我們都希望variance越大越好,其意義代表分布越開越可區分資料,W會有條件限制,以其中一個為例

w1 是 W 的 row1,z1 是 z的第一個元素。

如果還有另一個w2的話要加額外的條件限制

因此整個 W 是正交矩陣 (orthogonal matrix)

經過數學推導(請看李宏毅老師的投影片)得到以下結論

W就是Cov(X)的Eigenvectors,w1 對應到最大的Eigenvalue。

經過PCA降維後得到的Z在不同的維度間互相獨立,Cov(Z)為對角矩陣(Diagonal Matrix)

矩陣分解

x為向量,c 為常數,u為向量,代表X的component,K代表只用K個component

如果將所有的x都排列出來成矩陣X

矩陣X的每個column代表其中一筆原始數據減掉平均

就是SVD當取K個最大的 singular values時的表示,原始SVD表示如下

圖片出自 線代啟示錄

在原本 SVD 的條件中沒有規定出來的V所有元素一定是要正的

相乘後相當於C

這代表C可以是有負號,也就是先有多餘的資訊再去減掉,想要避開這種問題可以用NMF看看

應用的話以下是老師上課舉的例子

A~E代表喜愛動漫的御宅族,上面圖片為動漫角色,數字代表某位御宅族買了多少種此角色的PVC,我們希望能分別找二組向量描述御宅族和動漫角色,基本思路就是

如果原始矩陣中沒有缺項就直接用SVD,有缺項就用NN去處理,NN還可加入加入bias增加表達能力,基本上可用於推薦系統(老師的練習是要為電影打分數),如果要應用在word2vec應該也是可以?

最後用了SVD,NMF和NN試了Eigenface,可以看到SVD和NN出來的都是比較完整的人臉(C可以是負的),NMF出來的黑色的部分比較多

NMF
SVD
NN,只跑了2個epoch,結果跟SVD的比較像,ri和rj沒有任何額外條件限制

--

--