搜尋意圖: 如果你在找「碎石圖 是什麼」或「碎石圖 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 在主成分分析(PCA)中,以折線圖呈現各主成分解釋變異量的視覺化工具,用於判斷應保留的主成分數量。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
在主成分分析(PCA)中,以折線圖呈現各主成分解釋變異量的視覺化工具,用於判斷應保留的主成分數量。
碎石圖(Scree Plot)由 Raymond Cattell 於 1966 年首先提出,原本用於心理測量學的因子分析,後來成為主成分分析(PCA)與其他降維方法中不可或缺的視覺輔助工具。
背景:為什麼需要碎石圖
在主成分分析中,原始特徵被轉換為按解釋變異量降序排列的主成分(PC),每個主成分對應一個特徵值(Eigenvalue),代表它所解釋的總變異量大小。在實際應用中,我們不會保留所有主成分(保留全部等同不降維),而是選取前 k 個主成分來捕捉數據中最主要的信息,同時丟棄代表雜訊的低解釋力主成分。問題在於:應該保留幾個主成分(k = ?)碎石圖是回答這個問題的核心視覺工具。
碎石圖的構成
- X 軸:主成分編號(1, 2, 3, ...),按解釋變異量從大到小排列
- Y 軸:對應的特徵值(Eigenvalue)或累積/個別解釋變異比例(Explained Variance Ratio)
- 曲線形狀:通常呈現左側急降、右側趨平的「L 形」或「手肘形」
「碎石(Scree)」的比喻來自山地地形:左側的急降坡面代表含有信息的主成分,右側趨平的碎石堆代表雜訊主成分。
肘部法則(Elbow Method)
最常用的判斷策略:找到曲線從「急降」轉為「趨平」的轉折點(肘部),保留肘部之前(含肘部)的主成分。若曲線在第 3 個主成分後趨於平緩,則保留 3 個主成分。
但肘部法則存在主觀性:不同人對「肘部」的判斷可能不同,特別是曲線沒有明顯轉折點時。可搭配其他判斷標準:
其他選擇主成分數量的判斷標準
- Kaiser 準則(特徵值 > 1):在標準化數據的 PCA 中,保留特徵值大於 1 的主成分(因為每個原始變數的特徵值為 1,保留解釋力超過單一變數的主成分)。適合探索性分析,但可能保留過多主成分。
- 累積解釋變異比例門檻:保留累積解釋變異比例達到某一閾值(常見選擇為 80%、90%、95%)所需的最少主成分數。此方法直觀且有明確的業務意義(如「保留 90% 的數據信息」)。
- 平行分析(Parallel Analysis):模擬與原始數據相同規模的隨機數據的特徵值分布,保留特徵值顯著大於隨機數據的主成分。比 Kaiser 準則更嚴謹。
- 下游任務效能:直接在下游模型(如分類器)中比較不同 k 值的交叉驗證效能,以效能最佳的 k 值為準。
Python 實作範例
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np
### pca = PCA()
pca.fit(X_scaled)
# 個別解釋變異比例
explained_variance_ratio = pca.explained_variance_ratio_
# 繪製碎石圖
plt.figure(figsize=(8, 5))
plt.plot(range(1, len(explained_variance_ratio)+1),
explained_variance_ratio, 'bo-')
plt.xlabel('主成分編號')
plt.ylabel('解釋變異比例')
plt.title('碎石圖(Scree Plot)')
# 同時繪製累積解釋變異曲線
cumulative = np.cumsum(explained_variance_ratio)
plt.plot(range(1, len(cumulative)+1), cumulative, 'r--', label='累積')
### plt.legend()
### plt.show()
使用場景
- PCA 降維:在特徵工程中選擇 PCA 的最佳維度,用於機器學習模型的輸入
- 因子分析(Factor Analysis):在心理測量、市場研究中確定潛在因素的數量
- 文字主題建模:LSA(Latent Semantic Analysis)中選擇主題數量
- 推薦系統(Collaborative Filtering):矩陣分解(SVD)的降秩選擇
常見誤解
- 碎石圖是輔助決策工具,不是唯一標準。最終的 k 值選擇應結合業務需求、下游效能與計算資源。
- 碎石圖只適用於線性降維方法(PCA、Factor Analysis)。非線性方法(t-SNE、UMAP)沒有對應的碎石圖。
- 碎石圖顯示的「轉折點」在實際數據中可能並不明顯,此時建議優先使用累積解釋變異比例(如保留 90%)作為更客觀的標準。
常見問題
碎石圖找不到明顯肘部時該怎麼辦?
這種情況在真實數據中相當常見,代表主成分的重要性是漸進式遞減,而非有明顯分界。此時可以改用其他判斷策略:首先看累積解釋變異比例,選取剛好超過 80% 或 90% 閾值的主成分數量,這是最直觀且有業務意義的方法。其次可以進行平行分析(Parallel Analysis),將實際特徵值與隨機數據的特徵值比較,保留顯著大於隨機基準的部分。若有下游機器學習任務,也可以直接在不同 k 值(如 5、10、20、50)下訓練模型並交叉驗證,以下游效能決定最佳 k。
碎石圖的 Y 軸應該用特徵值還是解釋變異比例?
兩者都可以,選擇取決於解釋需求。特徵值(Eigenvalue)是 PCA 內部的技術量,在 Kaiser 準則(特徵值 > 1)中直接使用;解釋變異比例(Explained Variance Ratio)則更直觀,可以直接說「這個主成分解釋了 35% 的總變異」,更容易向非技術背景的受眾溝通。在實務中,常見的做法是在碎石圖上同時繪製兩條曲線:個別解釋變異比例(柱狀或折線)與累積解釋變異比例(折線),讓讀者可以同時判斷單個主成分的貢獻與總保留信息量。
碎石圖可以用在 PCA 以外的方法嗎?
可以,但需要對應不同的分解方法。在因子分析中,碎石圖同樣可以用特徵值繪製,搭配 Kaiser 準則或平行分析決定因子數量。在奇異值分解(SVD)和矩陣分解(如推薦系統)中,可以繪製奇異值大小的折線圖,判斷保留多少個奇異值(等效於秩)。在非線性降維方法(如 t-SNE、UMAP)中,沒有對應的特徵值概念,因此沒有碎石圖,通常需要透過視覺化散點圖和下游效能評估來決定降維維度。在聚類分析中,類似的「肘部法則」圖也用於確定最佳聚類數 K,但那是 K-means 的肘部圖,概念相似但計算不同。