類別不平衡(Class Imbalance)是什麼?

訓練資料中各類別樣本數量差異懸殊,導致模型偏向多數類的問題。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Class Imbalance
主題標籤
資料處理、不平衡學習、SMOTE
考點定位
非 iPAS 核心術語
最後更新
2026/07/30
類別不平衡(Class Imbalance)是什麼? 資料處理不平衡學習
術語快查

搜尋意圖: 如果你在找「類別不平衡 是什麼」或「類別不平衡 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

TL;DR: 訓練資料中各類別樣本數量差異懸殊,導致模型偏向多數類的問題。

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

訓練資料中各類別樣本數量差異懸殊,導致模型偏向多數類的問題。

類別不平衡(Class Imbalance)是機器學習實務中極為常見但常被忽視的問題,尤其在醫療、金融、資安等高風險領域,處理類別不平衡往往比選擇模型架構更為關鍵。

問題的本質

假設一個詐騙偵測系統,訓練資料中 99% 是正常交易、1% 是詐騙交易。若模型學會「全部預測為正常」,整體準確率(Accuracy)高達 99%,但詐騙召回率(Recall)為 0%:完全失去偵測詐騙的能力。這個例子說明:在不平衡資料上,準確率是一個具誤導性的指標,不應作為主要評估標準。

類別不平衡的程度通常以不平衡比例(Imbalance Ratio)衡量,即多數類樣本數 / 少數類樣本數。比例超過 10:1 時可稱為輕度不平衡,超過 100:1 為嚴重不平衡,某些場景(如罕見疾病診斷)可能達到 10000:1 以上的極端不平衡。

處理類別不平衡的主要方法

一、資料層面的方法

  1. 過採樣(Oversampling):增加少數類的樣本數量。

    • 隨機過採樣:重複複製少數類樣本(可能導致過擬合)。
    • SMOTE(Synthetic Minority Oversampling Technique):在少數類樣本的 K 近鄰空間中插值生成合成樣本,是目前最廣泛使用的過採樣方法之一。
    • ADASYN(Adaptive Synthetic Sampling):根據每個少數類樣本周圍多數類樣本的密度自適應地生成合成樣本,對分類困難區域更多關注。
  2. 欠採樣(Undersampling):減少多數類的樣本數量。

    • 隨機欠採樣:隨機移除多數類樣本(可能丟失重要資訊)。
    • Tomek Links:移除來自不同類別但互為最近鄰的樣本對中的多數類樣本,清理決策邊界附近的模糊樣本。
    • Cluster Centroids:對多數類進行聚類,用聚類中心代替原始樣本。
  3. 混合方法:結合過採樣與欠採樣,如 SMOTEENN(SMOTE + Edited Nearest Neighbours)。

二、演算法層面的方法

  1. 代價敏感學習(Cost-sensitive Learning):為少數類的錯誤分類設定更高的懲罰代價,使模型在訓練時更重視少數類。許多 scikit-learn 模型(如 SVM、邏輯回歸、隨機森林)都有 class_weight 參數,設為 'balanced' 可自動計算反比例權重。

  2. 集成方法:BalancedBaggingClassifier、EasyEnsemble 等專為不平衡資料設計的集成學習方法。

  3. 閾值調整(Threshold Tuning):預設分類閾值通常為 0.5,但在不平衡問題中,降低閾值(如 0.3)可以提高少數類的召回率,代價是降低精確率。最佳閾值需根據 PR 曲線或 ROC 曲線結合業務需求決定。

三、評估指標的選擇

處理不平衡資料時,必須放棄準確率(Accuracy)作為主要指標,改用:

  • 精確率(Precision)、召回率(Recall)、F1 Score:可針對少數類計算。
  • AUROC(ROC 曲線下面積):衡量不同閾值下的整體性能,但在極度不平衡時可能過於樂觀。
  • AUPRC(PR 曲線下面積):在嚴重不平衡時比 AUROC 更具區分力。
  • G-Mean(幾何平均):各類別召回率的幾何平均,對所有類別的分類能力給予同等重視。

常見踩坑

  • 在應用 SMOTE 等過採樣方法時,MUST 只對訓練集進行,驗證集與測試集不能包含合成樣本,否則評估結果會失真。
  • 不平衡問題沒有萬用解法,需根據不平衡比例、少數類的重要性(漏判代價)和業務需求選擇合適策略。
  • 某些情況下,蒐集更多少數類真實資料是比任何技術手段都更有效的解決方案。

常見問題

為什麼準確率(Accuracy)不適合用於評估不平衡資料的模型?

準確率的計算方式是(正確預測數)/(總樣本數),在不平衡資料中會被多數類主導。以 95:5 的二分類問題為例,若模型把所有樣本都預測為多數類,準確率高達 95%,看起來很好:但這個模型對少數類的識別能力為零,在實際應用中毫無價值。建議改用 F1 Score(尤其是少數類的 F1)、PR 曲線下面積(AUPRC)或 G-Mean 等指標,這些指標能更真實地反映模型在少數類上的表現,不會被多數類的高準確率所掩蓋。

SMOTE 是什麼?和隨機過採樣有什麼差別?

SMOTE(Synthetic Minority Over-sampling Technique)是一種透過插值生成合成少數類樣本的過採樣技術。具體做法是:對每個少數類樣本,找到它在特徵空間中的 K 個最近鄰(同屬少數類),然後在該樣本與其近鄰之間的連線上隨機選取一點,生成一個新的合成樣本。與隨機過採樣(直接複製現有少數類樣本)相比,SMOTE 生成的是新的、不重複的合成樣本,能夠增加少數類在特徵空間中的覆蓋範圍,降低過擬合的風險。但 SMOTE 也有限制:若少數類樣本本身分布噪音很多,或分布在多數類密集區域,插值可能生成品質不佳的合成樣本。

代價敏感學習中的 class_weight 參數該怎麼設定?

在 scikit-learn 中,class_weight='balanced' 會自動根據各類別的樣本數計算反比例權重,計算公式為:每個類別的權重 = 總樣本數 / (類別數 × 該類別樣本數)。例如,正負類比例為 90:10,balanced 設定會讓少數類(10%)的樣本權重是多數類(90%)的 9 倍,使模型在訓練時更重視少數類的錯誤分類。若你對最優比例有業務判斷(例如漏判詐騙的代價是誤判的 20 倍),可以手動設定 class_weight={0: 1, 1: 20}。建議結合交叉驗證在 PR 曲線或業務目標上搜尋最佳權重比例。