PCA 前為何要先標準化?交易金額主導主成分的問題
某團隊在開發風險評估模型時,使用主成分分析(Principal Component Analysis, PCA)進行降維。輸入資料包含三個數值欄位:「交易金額(單位:新台幣)」、「交易次數(次/月)」與「年齡(歲)」,其數值量級分別約為 10^5、10^1 與 10^2。分析人員直接將原始數據帶入 PCA,結果第一主成分(PC1)幾乎完全由「交易金額」主導。下列哪一項作法或判斷最合理?
一個團隊在做 PCA 降維時,把三個欄位直接丟進去:交易金額(約 10 萬元量級)、交易次數(約 10 次量級)、年齡(約 100 歲量級)。結果第一主成分幾乎只反映交易金額,其他兩個欄位的資訊被淹沒了。
問你:面對不同數值量級的特徵直接跑 PCA 導致主成分偏斜,最合理的解決方式是什麼?
一句話總結
PCA 用共變異數矩陣找主成分,數值大的特徵必然主導方差,讓 PCA 偏向它。解決方法是:在進行 PCA 前先進行標準化(Standardization),讓每個特徵的平均值為 0、標準差為 1,消除尺度差異的影響。
先感受問題:100,000 和 20 放在一起,誰會被 PCA「看見」
安泰金融的資料分析師書豪要建立客戶風險評估模型,特徵有三個:
交易次數:平均 15 次,標準差 8 次(量級 10^1)
年齡:平均 42 歲,標準差 15 歲(量級 10^2)
書豪直接把這三個欄位丟進 PCA。PCA 計算的是「哪個方向解釋最多的方差」。
交易金額的方差 = 50,000² = 2,500,000,000,交易次數的方差 = 8² = 64,相差 4 千萬倍。PCA 在尋找「最大方差方向」時,交易金額的巨大方差完全主宰結果,第一主成分幾乎只沿著「交易金額」這個軸。
年齡和交易次數的資訊,在數值龐大的金額面前,幾乎完全不可見。
不標準化直接做 PCA,會踩哪些坑
- 主成分被單一特徵壟斷:量級大的特徵方差遠大於其他特徵,PCA 「眼中」只有這個特徵,其他特徵的資訊幾乎不進入前幾個主成分。
- 降維沒有達到原始目的:PCA 降維的目的是「用少數維度保留最多資訊」,如果「最多資訊」都是量級偏差造成的假象而非真實的資料結構,降維結果毫無意義。
- 風險模型失去重要特徵:年齡和交易次數在風險評估上可能比金額更重要(例如高頻交易者風險更高),但它們的資訊被金額的尺度效應淹沒,模型看不到這些信號。
- 主成分解釋性喪失:標準化後的 PCA 主成分可以解釋為「哪些特徵的組合模式」,但不標準化的 PCA 主成分只是「哪個特徵的絕對量大」,沒有實質的分析意義。
- 模型無法公平對待所有特徵:如果後續還有其他機器學習模型,帶有量級偏差的 PCA 特徵會讓那些模型也受到同樣的尺度效應影響,問題一路傳遞下去。
標準化後再 PCA:讓三個特徵站在同一個尺度上競爭
書豪對三個欄位做 Z-score 標準化:
交易次數標準化後:均值 0,標準差 1
年齡標準化後:均值 0,標準差 1
現在三個特徵的方差都是 1,PCA 在尋找「最大方差方向」時,每個特徵有公平的機會貢獻到主成分中。
標準化後重跑 PCA,第一主成分可能是「交易次數 + 年齡」的某種線性組合,第二主成分可能是「交易金額 - 年齡」,這樣的主成分才有真實的業務意義,能幫助風險模型捕捉複合風險模式。
這就是選項 D 講的:在進行 PCA 前應先進行標準化(Standardization),以避免因數值尺度差異造成特徵偏誤。
技術版:PCA 與標準化的數學關係,以及何時不需要標準化
PCA 有兩個版本:基於共變異數矩陣(Covariance Matrix)和基於相關係數矩陣(Correlation Matrix)。
- 共變異數 PCA(原始數據):直接用數值的共變異數,方差大的特徵天然主導,適合所有特徵量級相同的情況(例如:所有特徵都是同單位的物理量)。
- 相關係數 PCA(標準化數據):先標準化讓每個特徵方差為 1,等效於在相關係數矩陣上做 PCA,讓特徵在貢獻度上公平競爭,適合特徵量級不同的情況。
什麼情況下不需要標準化:如果所有特徵的量級相同,或者業務上確實認為「量級大的特徵應該有更大的影響」,可以不標準化。例如:分析同種貨幣的不同商品價格時,量級差異可能有業務意義。
標準化 vs 正規化:
- 標準化(Standardization / Z-score):轉換成均值 0、標準差 1。不把值壓縮到固定範圍,對離群值較穩健。PCA 前標準作法。
- 正規化(Normalization / Min-Max):把值壓縮到 [0,1]。對離群值敏感,適合神經網路等需要固定輸入範圍的模型,不適合 PCA 前處理(離群值會壓縮其他值的分佈)。
為什麼 iPAS 考這題:PCA 是降維的標準工具,「標準化是 PCA 的必要前置步驟」是機器學習資料前處理的基礎知識,也是 iPAS 考試中最常見的 PCA 考點之一。
為什麼其他選項是錯的
A這是正常現象,金額本身變異較大,應主導主成分
金額變異本來就大,讓它主導主成分是合理的。
交易金額的大變異,很大程度上是「單位選擇」(新台幣 vs 千元 vs 萬元)的人為因素造成,不代表它在業務上真的比交易次數或年齡更重要。如果把金額單位改成「萬元」,它的方差立刻縮小 10,000 倍,主成分結構就完全不同了。良好的 PCA 不應該因為單位選擇而改變結果,這就是為什麼標準化是必要的。
直觀上認為「高變異 = 重要」的人。高變異可能是真實的資訊量,也可能是量級的人為效應。PCA 前標準化是為了確保我們捕捉的是前者,而非後者。
B若改用特徵選擇法,可自動解決變數量級問題
換成特徵選擇法(Feature Selection),量級問題就不存在了。
特徵選擇(Feature Selection)是選擇保留哪些原始特徵,不改變特徵的量級;它解決的是「哪些特徵有用」的問題,不是「特徵尺度不一致」的問題。量級差異的問題存在於任何基於距離或方差的方法中,包括 PCA、KNN、SVM 等,特徵選擇不能解決這個問題。
把「特徵選擇」和「特徵縮放(Feature Scaling)」混為一談的人。兩個是完全不同的預處理步驟,解決不同的問題。
C可刪除「交易金額」欄位以平衡各主成分的影響
金額主導了主成分,那就把金額欄位刪掉,平衡一下。
刪除特徵是信息損失,交易金額對風險評估有重要意義,直接刪除會讓模型失去重要的預測信號。問題不是「交易金額不重要」,而是「交易金額的尺度干擾了 PCA 的方向選擇」。正確做法是標準化,讓金額的尺度不再有不當的主導優勢,而不是直接把這個特徵丟掉。
以「去掉干擾因素」的直覺解決問題,卻沒意識到刪除特徵和縮放特徵是完全不同的操作,而且刪除有資訊損失的代價。
同個考點下次怎麼變形
PCA 降維後,主成分的「解釋方差比例」是什麼意思?
PCA 輸出說「PC1 解釋了 72% 的方差」,這什麼意思?
解釋方差比例(Explained Variance Ratio)是「這個主成分所含的方差量 / 全部特徵的總方差量」。PC1 解釋 72% 代表第一主成分捕捉了原始資料 72% 的變化量,保留前幾個主成分直到累積解釋方差達到 90-95%,通常就夠用。這個指標幫助決定保留幾個主成分。
PCA 和 t-SNE 在降維目的上有什麼根本不同?
兩個都能把高維資料降到 2D,有什麼差別?
PCA 是線性降維,保留整體方差結構,生成的主成分是原始特徵的線性組合,可以解釋「哪些特徵組合重要」,也可以還原回原始空間。t-SNE 是非線性降維,專門優化鄰近點關係的保留,適合視覺化聚類結構,但主成分無法解釋,也無法還原。PCA 用於機器學習前的降維,t-SNE 主要用於探索性視覺化。
什麼時候選 PCA 降維,什麼時候選特徵選擇法?
兩個都能「減少特徵數量」,怎麼選?
PCA 把原始特徵轉換成新的主成分(線性組合),適合需要消除特徵之間的相關性(共線性)、或整體降低維度的場景,但主成分不易直接業務解釋。特徵選擇保留原始特徵的一個子集,主成分仍是原來的欄位名稱,業務解釋性更高。需要模型可解釋性時選特徵選擇;需要消除共線性或最大化降維時選 PCA。
標準化應該用訓練集還是全部資料的均值和標準差?
標準化要計算均值和標準差,應該用哪些資料計算?
MUST 只用訓練集計算均值和標準差(fit on training set),然後用這組參數轉換測試集(transform test set)。如果用全部資料(含測試集)計算,測試集的資訊「洩漏」進了前處理步驟,這是數據洩漏(Data Leakage),會讓模型效能評估過於樂觀。
如果只有一個特徵的量級很大,是否可以只對那個特徵做對數轉換而不是全部標準化?
只有金額量級大,對金額做 log 轉換是否等效於標準化?
對數轉換和標準化是不同的操作,不等效。對數轉換改變分佈形狀(可能讓長尾變常態),標準化只改變位置和尺度(不改變形狀)。對數轉換後的金額雖然量級縮小了,但與其他特徵的尺度仍可能不一致。最穩健的做法是:先做領域相關的轉換(如對數轉換),再做標準化,確保所有特徵同尺度。
想再往下看,這 5 個
- PCA(主成分分析)線性降維的核心算法,標準化是其正確應用的必要前提,第一主成分捕捉最大方差方向。
- 特徵縮放(Feature Scaling)標準化和正規化的統稱,讓不同量級的特徵可以公平參與距離計算和方差分析。
- 正規化(Normalization)包含 Z-score 標準化、Min-Max 縮放等特徵縮放方法,PCA 前建議用 Z-score 標準化。
- 特徵選擇法(Feature Selection)從原始特徵中選出最有用的子集,與 PCA(特徵萃取)解決不同問題,不能混用。
- 降維處理(Dimensionality Reduction)PCA 是降維的代表算法,標準化是 PCA 的前置步驟,兩者組合是高維資料前處理的標準流程。