iPAS AI 應用規劃師 中級 科目一

多重共線性怎麼解?PCA 登場

原題 12

某金融科技公司建立房價預測模型,使用多項特徵(如建坪、房齡、樓層、總價等)進行線性迴歸分析(Linear Regression Analysis)。資料分析師發現多個特徵之間存在高度相關性,導致模型係數不穩定、預測誤差上升。為解決此問題,下列哪一種方法最適合?

白話

一家金融科技公司要預測房價,把「建坪、房齡、樓層、總價」等特徵一起丟進線性迴歸(Linear Regression)模型。

分析師發現:這些特徵彼此之間高度相關(比如建坪越大、總價通常越高),導致模型「係數不穩定」、預測結果跑掉了。

問你:遇到這種「特徵高度相關」的問題,應該用哪種方法解決?

點選你的答案。

01 總結

一句話總結

特徵彼此高度相關(多重共線性)會讓線性迴歸係數飄移,解法是用 PCA(主成分分析,Principal Component Analysis)把原本相關的特徵,轉換成彼此獨立的新變數(主成分),讓模型算得穩。

02 情境

先感受問題:兩個特徵說的是同一件事

假設「好房網」的分析師陳明要預測台北市每棟房子的售價,他收集了以下特徵:

建坪:45 坪 房齡:10 年 樓層:8 樓 總價:2,800 萬

看起來沒問題,但他在跑模型之前先做了相關係數(correlation)分析:

建坪 vs 總價:相關係數 0.91(超高)
建坪 vs 公設比:相關係數 0.85(高)
房齡 vs 電梯年限:相關係數 0.88(高)

「建坪」和「總價」幾乎是同一件事的兩種說法。如果兩個人都用差不多的資訊在投票,模型不知道要聽誰的,係數就會跳來跳去。

這個現象叫多重共線性(Multicollinearity)

03 對照

直接忽略問題,會發生什麼事

陳明如果選擇「繼續保留所有特徵,不處理」,會踩到五個坑:

  1. 係數不穩定:多加一筆訓練資料,「建坪」的係數可能從 +50 跳到 -20,模型行為完全不可預測。
  2. 標準誤差膨脹:高度相關的特徵讓係數的標準誤差(standard error)變超大,統計檢定全部失效,不知道哪個特徵「真的重要」。
  3. 解釋能力喪失:老闆問「建坪每增加 1 坪,房價漲多少?」你回答不了,因為係數本身就是假的。
  4. 過擬合風險上升:相關特徵等於「重複投入雜訊」,模型把雜訊記起來,在新資料上表現差。
  5. 矩陣奇異,算不出解:特徵完全線性相關時,矩陣求逆(matrix inversion)會失敗,程式直接報錯。
04 解法

PCA 怎麼把相關特徵變獨立

PCA 的思路不是「選哪個特徵」,而是「重新創造新的特徵,讓它們彼此獨立」。

對好房網的資料集來說,PCA 會做這件事:

  1. 找出原始特徵裡「最能解釋資料變化」的方向,叫做第一主成分(PC1)。PC1 可能是「建坪 × 0.6 + 總價 × 0.7 + 樓層 × 0.2」這樣的組合。
  2. 第二主成分(PC2)和 PC1 完全垂直(不相關),抓住資料裡 PC1 沒解釋到的部分。
  3. 以此類推,得到一組彼此獨立的新特徵。

轉換之後:

原本:建坪(與總價 r=0.91)、總價(與建坪 r=0.91)…
轉換後:PC1(r=0.00 與 PC2)、PC2(r=0.00 與 PC1)…

丟進線性迴歸後,係數就穩定了,模型不再「聽兩個人說同一件事而不知所措」。

這就是選項 B 講的:使用主成分分析(PCA)將相關特徵轉換為彼此獨立的主成分

技術版:PCA 的數學步驟與程式碼

中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。

PCA 的核心是找到資料的共變異數矩陣(Covariance Matrix)的特徵向量(Eigenvector),每個特徵向量就是一個主成分方向,對應的特徵值(Eigenvalue)代表這個方向能解釋多少變異量。

Step 1 純故事版
  1. 把所有特徵標準化(每個特徵的平均值歸零、標準差歸一)
  2. 計算特徵之間的共變異數矩陣,看哪些特徵一起動、哪些獨立
  3. 找到這個矩陣的主要方向(特徵向量),這些方向彼此垂直(獨立)
  4. 把原始資料投影到這些新方向上,得到主成分
  5. 只保留解釋力高的前幾個主成分(如前 3 個解釋了 95% 的變異)
Step 2 中文 ↔ 程式碼對照
故事程式碼
標準化特徵scaler = StandardScaler(); X_scaled = scaler.fit_transform(X)
建立 PCA,保留 95% 變異pca = PCA(n_components=0.95)
把原始資料轉成主成分X_pca = pca.fit_transform(X_scaled)
看每個主成分解釋多少變異pca.explained_variance_ratio_
用主成分訓練迴歸模型model.fit(X_pca, y)
Step 3 符號角色表
PCA(Principal Component Analysis,主成分分析)
一種降維技術,把相關的原始特徵轉換成一組彼此獨立的新特徵(主成分)。
n_components=0.95
告訴 PCA「保留能解釋 95% 資料變異量的主成分數量」,自動決定要幾個主成分。
explained_variance_ratio_
每個主成分能解釋多少比例的資料變異,加總到 0.95 就停。
StandardScaler
標準化工具,PCA 之前必做,不然單位大的特徵(如總價幾百萬)會主導結果。
Eigenvector(特徵向量)
每個主成分的方向,是原始特徵的線性組合,彼此正交(垂直)代表獨立。
Step 4 完整公式對應

PCA 的核心步驟是對共變異數矩陣做特徵分解:

# 共變異數矩陣
C = (1/n) * X_centered^T @ X_centered

# 特徵分解:找出彼此正交的方向 V 和對應的能量 λ
C @ V = λ × V

# 其中:
# λ(Eigenvalue,特徵值)= 這個主成分方向能解釋的變異量
# V(Eigenvector,特徵向量)= 這個主成分的方向(原始特徵的組合權重)

# 投影:把原始資料映射到主成分空間
X_pca = X_centered @ V[:, :k]   # 取前 k 個主成分
Step 5 自我複述

蓋住程式碼,說出 PCA 的 5 步驟:

  1. 標準化特徵(StandardScaler)
  2. 計算共變異數矩陣
  3. 特徵分解,找出主成分方向
  4. 把資料投影到主成分空間
  5. 只保留解釋力夠的主成分(如 95%)

說得出來代表這段你會了。

05 陷阱

為什麼其他選項是錯的

A繼續保留所有特徵,不進行任何處理

字面在說什麼

把所有原始特徵照單全收,不管它們之間是否高度相關,直接丟進模型訓練。

為什麼不對

題目已經說「多個特徵之間存在高度相關性,導致模型係數不穩定、預測誤差上升」,這就是多重共線性的症狀。保留不處理等於放任問題繼續惡化:係數持續不穩定,模型換一批資料結果就完全不同,完全無法信任。

誰會選錯

以為「特徵越多越好,AI 會自己學」的人。在線性迴歸裡,相關特徵不是「更多資訊」,而是「重複的噪音」,會讓矩陣算不穩。

C新增更多原始變數以提升模型表現

字面在說什麼

目前特徵不夠好,再去找更多特徵加進來,讓模型學到更多。

為什麼不對

問題的根源是現有特徵「太相關」,不是「太少」。加入更多原始變數只會帶進更多潛在的相關特徵,多重共線性只會更嚴重,係數更不穩定。這是反方向操作。

誰會選錯

記住「多加特徵 = 模型更強」這個直覺的人。這個直覺在特徵品質差或過少的情況下成立,但這題的問題是相關性,解法是降維或處理相關性,不是加更多資料。

D改用分類模型進行預測

字面在說什麼

換一種模型類型,改用分類(classification)而不是迴歸(regression)來預測房價。

為什麼不對

房價是連續數值(2,800 萬、3,150 萬),是迴歸問題(regression),不是分類問題。分類模型的輸出是類別(如「貴 / 便宜」),不是具體數值,根本解決不了「預測房價數字」的需求。更重要的是,改換模型類型完全沒有處理多重共線性的問題。

誰會選錯

對迴歸和分類的適用場景搞混的人。看到「線性迴歸效果不好」就以為要換模型,但問題不在「迴歸」這個選擇,而在「輸入特徵相關」這個資料問題。

06 變形

同個考點下次怎麼變形

變形 1 邊界

PCA 降維後,主成分還能對應到原始特徵嗎?

直覺

做完 PCA 得到 PC1、PC2,老闆問「PC1 是什麼意思?是房齡嗎?」

答案

不能直接對應。PC1 是多個原始特徵的線性組合(例如「0.6 × 建坪 + 0.7 × 總價 + 0.2 × 樓層」),本身沒有直觀的物理意義。這是 PCA 的主要缺點:可解釋性低。需要可解釋性的場景(如向主管說明「房齡增加 1 年影響多少」),要考慮其他方法如逐步迴歸(Stepwise Regression)或 Lasso。

變形 2 反例

什麼情況下 PCA 反而讓模型變差?

直覺

PCA 把資料壓縮,應該只會幫忙不會壞事?

答案

如果捨棄的主成分恰好與預測目標(y)高度相關,模型準確度會下降。PCA 是根據「哪個方向的變異最大」來選主成分,但「變異大」不等於「對預測有用」。解法是改用監督式降維方法,如 PLS(Partial Least Squares,偏最小二乘法),它會同時考慮 X 的變異和 y 的相關性。

變形 3 升級版

除了 PCA,還有哪些處理多重共線性的方法?

直覺

PCA 是唯一解法嗎?

答案

還有三種常用方法。第一是 Lasso 迴歸(L1 正規化),它會把相關特徵中的某一個係數直接壓成零,自動選出一個代表。第二是 Ridge 迴歸(L2 正規化),讓所有係數都變小,抑制係數的不穩定。第三是手動刪除高相關特徵,先算 VIF(Variance Inflation Factor,變異數膨脹因子),VIF 超過 10 的特徵優先考慮刪除。

變形 4 跨領域

醫學影像分析用 PCA 降維,和房價預測一樣的邏輯嗎?

直覺

影像的「特徵」是像素,幾萬個像素一定有大量相關,PCA 應該很有用?

答案

完全一樣的邏輯,而且效果更明顯。一張 256×256 的 X 光片有 65,536 個像素特徵,相鄰像素幾乎必然高度相關。PCA 可以壓縮成幾十個主成分,保留 95% 的影像資訊量,大幅減少計算成本。這就是早期「特徵臉(Eigenface)」人臉辨識系統的核心原理。

變形 5 評估指標

怎麼決定 PCA 要保留幾個主成分?

直覺

保留越多主成分越準確,保留越少越快,要怎麼平衡?

答案

有兩個常用方法。第一是「累積解釋變異比例」:畫出每個主成分的解釋量曲線(Scree Plot),找到曲線出現「手肘」(明顯彎折)的位置,或直接設門檻(保留到累積 90%、95% 的變異量)。第二是用交叉驗證(Cross-Validation):把不同數量的主成分都試一遍,看哪個設定讓下游模型的預測誤差最小。

07 延伸

想再往下看,這 5 個

出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二次 iPAS AI 應用規劃師 中級 科目一 第 12 題

查看官方原文 PDF