主成分分析

1. 一維資料的統計學

假設我們有

n 筆資料, 每筆資料都是一個數字 (例如
n
個學生的成績). 這
n
筆資料我們設為
x1,,xn
, 並且定義一個矩陣

(1)A=[x1xn]M1×n.

那這些資料的平均數為

(2)μ=1n(x1++xn)=1n[11][x1xn]=1n1TAT,

其中

1T=[1,,1] 是個全為
1
的向量.

資料的變異數 (variance) 則定義為

(3)Var(A)=σ2=1nk=1n(xiμ)2,

σ 則是標準差 (standard deviation, std).

要將之寫成矩陣形式首先我們定義置中矩陣 (centering matrix)

(4)H=I1n11T.

計算一下可以發現

(5)HAT=(I1n11T)AT=ATμ1=[x1μxnμ]=YT,

其中我們將這些置中後的資料存為

Y 矩陣. 接著我們就可以知道

(6)σ2=1nYYT.

2. 二維資料的統計學

假設我們有

n 筆資料, 每筆資料都是
2
個數字 (例如
n
個學生在
2
次考試的成績), 這兩個數字我們稱之為這筆資料的 features. 這
n
筆資料我們設為
(x1,y1),,(xn,yn)
, 並且定義一個矩陣

(7)A=[x1xny1yn]M2×n.

我們把每種資料都平移, 使其平均為

0, 並令平移後的資料為
Y
. 簡單計算可以發現我們一樣可以用置中矩陣來做,
HAT=YT
,

(8)YT=[x1μxy1μyxnμxynμy],μx=1nk=1nxk,μy=1nk=1nyk.

接著我們可以定義兩個變數的共變異數 (covariance),

(9)cov(x,y)=1nk=1n(xkμx)(ykμy).

接著計算一下就可以發現

(10)1nYYT=[cov(x,x)cov(x,y)cov(x,y)cov(y,y)],

也就是所謂的共變異數矩陣. 這個矩陣的對角線元素代表每個 feature 自己的變異數, 而非對角線則是共變異數, 代表兩個 features 的相關程度.

Remark: 不過要真正算相關程度會更近一步的去計算相關係數 (correlation coefficients), 這邊就不再深入探討.

3. PCA: maximize variance

我們想要找到一個方向, 使得資料投影上去之後, 新資料的變異數會最大.

假設這個方向為

vR2, 並且
v=1
, 那資料投影到
v
所得的新資料就是
vTYM1×n
. 接著我們就來算這筆新資料的變異數.

第一步一樣先置中. 也就是計算

HYTv. 不過由於
Y
是置中過的資料, 因此
HYT=YT
, 所以
HYTv=YTv
, 也就是說, 新資料
vTY
的平均一定是
0
.

接著, 新資料的變異數就會是

(11)σ2=1n(vTY)(vTY)T=1nvTYYTv.

所以統整一下, 若我們將資料投影到

v 上, 那新資料的變異數就是 (11). 而PCA 所要找的方向就是使變異數最大的方向, 也就是

(12)v^=argmaxvR2,v=1(vTYYTv).

最後, 我們知道這個解可以由

YT 這個矩陣的 SVD 得出.

假設

YT=UΣVT, 那
v^=v1
, 也就是第一個 singular vector.

4. PCA: minimize square distance

我們想要找到一個方向, 使得資料投影上去之後, 新舊資料的距離平方和最小.

假設這個方向為

vR2, 並且
v=1
, 那資料投影到
v
的投影點就是
vvTYM2×n
. 接著我們就來算新舊資料的距離平方和:

(13)k=1ndk2=k=1nYkvvTYk2=k=1n<YkvvTYk,YkvvTYk>=k=1nYkTYkYkTvvTYk=k=1nYkTYkvTYkYkTv=k=1n(YkTYk)vTYYTv,

其中我們用到了

vTYk 是個數字以及
YkYkT=YYT
這兩件事.

我們希望找到一個方向使得距離平方和最小, 也就是

(14)v^=argminvR2,v=1(k=1n(YkTYk)vTYYTv)=argmaxvR2,v=1(vTYYTv).

觀察 (12) 與 (14) 發現他們一模一樣. 也就是這兩個問題的解會是一樣的, 最佳的方向都是第一個 singular vector.

5. Conclusion

  1. PCA 想做的事就是找到一個仿射子空間 (affine subspace), 使得
    a) 投影下去之後的資料有最大的變異數
    b) 投影前後的資料距離平方合最小.
    而這兩件事情是等價的.

  2. PCA 也是一種資料降維的工具, 而將資料投影到一維所出來的新資料就是

    vTY.

  3. 以上雖然是以二維資料為例, 不過若有

    m 維資料整個推導是一樣的.

  4. 以上是以投影到一維為例, 若投影到更高維度就是依序找第二, 三, 等等的 singular vectors. 不過推導會利用到矩陣 trace 的一些性質, 一些細節這裡就先跳過.

  5. PCA 要找的是個仿射子空間,

    V=μ+span{v}, 這裏我們都直接說
    μ
    就是資料的平均. 不過其實這是可以算出來的. 假設我們想要找一個點
    μ
    使得所有資料到這個點的距離和為最小, 也就是
    (15)μ=argmink=1n(xkμ)2.

    我們先定義

    f(μ)=k=1n(xkμ)2. 這是個單變數函數, 而且其實就是個
    μ
    的二次多項式, 首項係數等於
    1
    , 有一個最小值. 接著微分求極值得到
    (16)ddμf=k=1n(2)(xkμ)=(2)[k=1nxknμ]

    因此極值發生在

    ddμf=0, 也就是

(17)μ=1nk=1nxk.