想法:轉到變異最大的那些軸上
想像一團資料點的雲。它在某些方向上比別的方向更寬。主成分分析先找出散布最大的方向(第一主成分),再找與之垂直的次大方向,如此繼續。它無非就是選一套更好的座標軸——一個與資料形狀對齊的旋轉。
從計算上看,PCA 就是把資料中心化(減去每個特徵的均值)之後做SVD。主成分就是最靠前的右奇異向量;奇異值告訴你每個主成分捕獲了多少變異。
- 中心化資料:減去每個特徵的均值,讓點雲落在原點。
- 對中心化後的資料矩陣做 SVD,A = U*S*V^T。
- V 的各行就是主成分;sigma_i^2 是沿各主成分的變異。
- 把資料投影到前 k 個主成分上,將其降到 k 維。
壓縮與視覺化
只保留前幾個主成分,就是把資料投影到對變異最要緊的那些方向上。一個一千維特徵的資料集,常常只用少數幾個主成分就抓住了形狀,於是你能把它畫成二維圖,或餵給一個更小更快的模型。這與低秩逼近是同一招:扔掉小奇異值,留下大的。
variance kept = (sigma_1^2 + ... + sigma_k^2) / (sigma_1^2 + ... + sigma_r^2) # pick the smallest k that keeps, say, 95% of the variance