威威學長|高中數學
📚 系列總覽:數據分析系列地圖|⬅️ 上一篇:多一個平方項,是解決問題還是製造問題|➡️ 下一篇:為什麼「相關」永遠不夠
一組二維的資料點,畫在平面上,看起來像一朵歪掉的雲。 你要描述這些點在哪裡,得同時報出 $x$ 座標和 $y$ 座標,兩個數字。但用眼睛看就知道這件事很浪費:那朵雲幾乎是沿著一條斜線攤開的,只要知道它在那條斜線上的位置,就大概知道它在哪了。 主成分分析(PCA)做的就是把那條斜線找出來。
找「散得最開」的那個方向
先講清楚它在找什麼:一個方向,讓所有點投影到這條線上之後,彼此散得最開。 為什麼是「最開」?因為散得開代表資訊多。如果某個方向上所有點都擠在一起,那這個方向幾乎沒有辨別力:不管原本的點長什麼樣,投影過來都差不多。反過來,散得最開的方向,就是你最需要記住的那一個。 把這件事寫成數學就是:找一個單位方向,讓投影後的變異數最大。那個方向叫第一主成分。 找到第一個之後,第二個用同樣的原則,但加上一個限制:必須跟第一個方向垂直。垂直是為了不重複:如果第二個方向跟第一個很接近,它講的還是同一件事。第二主成分是「在所有跟第一主成分垂直的方向裡,變異數最大的那一個」。
👑 威威說重點:PCA 的排序依據是變異數大小,不是「重不重要」。變異數大的方向留下來,是因為它能區分資料點,不是因為它有什麼物理意義。
降維就是只留前幾個方向
二維降到一維,意思是你決定只保留第一主成分那個方向,把每個點用它在那條線上的位置來代表。 代價是:那些在第二個方向上原本有的差異,被丟掉了。如果第二個方向的變異數很小,這個代價可以接受;如果兩個方向的變異數差不多(例如資料像一個圓),那就沒有哪個方向該被犧牲,硬降到一維會損失很多。 所以 PCA 好不好用,取決於資料的形狀有多「扁」。資料越扁,前面幾個主成分就越能代表全部。
一定要先標準化
這一步不是可選的。PCA 找的是變異數最大的方向,而變異數的大小會隨單位改變。 假設你把「身高(公分)」和「體重(公斤)」放進 PCA。身高的數字動輒 $160$ 到 $180$,體重是 $50$ 到 $90$;算出來的變異數,身高會大上一個數量級。於是第一主成分幾乎就是身高那個軸,體重的資訊被壓到第二個方向去,即使體重本身很有辨別力。 ⚠️ 學長的警告:這個問題跟相關係數那篇裡「換一個單位,關係強度就跳了 $60$ 倍」是同一件事。單位會偷偷替你決定誰比較重要。所以跑 PCA 之前,先把每個變數標準化(減平均、除以標準差),讓它們在同一個起跑線上。
三個常被誤解的地方
一、PCA 是無監督的。 它不知道你想預測什麼。它只找變異數大的方向,而那些方向未必對預測你的目標變數有幫助。有可能變異數最大的方向跟你要預測的東西完全無關。如果目標是預測,要考慮的是「跟目標最相關的方向」,那是另一種方法。 二、主成分通常沒有物理意義。 每個主成分都是原本所有變數的混合。第一主成分是「$0.7$ 倍身高減 $0.7$ 倍體重」這種東西,你可以硬給它取個名字,但那個名字往往很牽強。PCA 的價值在於壓縮與視覺化,不在於解釋。 三、主成分之間彼此不相關。 這是設計出來的結果:因為它們互相垂直,所以沒有線性相關。好處是資訊不重複;壞處是你失去了「原本那個變數」的可解釋性。 (技術上一句話交代:主成分的方向是共變異數矩陣的特徵向量,對應的特徵值就是那個方向上的變異數。這個連結讓 PCA 變成一條可以真的算出來的程序,而不是只有圖形直覺。也是 Karl Pearson 在 1901 年提出的原始形式。)
換你動手
練習 1:資料點 $(1,1)$、$(2,2)$、$(3,3)$。第一主成分是哪個方向? 三點全落在直線 $y=x$ 上,所有變異都集中在 $(1,1)$ 的方向。所以第一主成分就是 $(1,1)$(單位化之後是 $\left(\frac{1}{\sqrt2},\frac{1}{\sqrt2}\right)$),而且第二個方向的變異數是 $0$。降到一維完全不損失資訊,這種資料怎麼壓縮都不會壞。 練習 2:資料點 $(1,0)$、$(-1,0)$、$(0,1)$、$(0,-1)$(一個十字)。第一主成分是哪個方向? 算一下:$x$ 方向的變異數來自 $1,-1,0,0$,是 $0.5$;$y$ 方向來自 $0,0,1,-1$,也是 $0.5$。兩個方向一樣大。事實上任何方向的變異數都一樣(因為點均勻分布在圓上),所以沒有唯一的第一主成分。 這是退化情形。PCA 在這種資料上給不出有意義的排序,因為沒有哪個方向比別人更值得留。遇到它就該承認「這組資料沒有可以被壓縮的結構」。 練習 3:為什麼不標準化會讓結果失真? 因為 PCA 的選擇標準是變異數,而變異數的數值會隨單位改變。把公分改成公尺,變異數會變成原本的萬分之一。如果兩個變數的原始尺度差很多,PCA 就會系統性偏向尺度大的那一個。那不是資料的性質,是你選單位的結果。
挑一份你手邊有兩個變數的資料(身高體重、讀書時間與成績、任何你查得到的公開數字),先算兩個變數的標準差,看看它們差多少倍。如果相差十倍以上,那你做 PCA 之前一定得標準化,否則第一主成分幾乎就是那個大尺度的變數。 如果你已經跑過一次 PCA,卻說不出第一主成分代表什麼,那通常不是你的問題,那組資料可能本來就沒有單一的主要方向。把兩個變數的散布圖丟給我,我們一起看它到底有多扁。