---
title: "類別不平衡（Class Imbalance）"
slug: class-imbalance
language: zh-TW
source: https://aiterms.tw/terms/class-imbalance
updated_at: 2026-07-30
tags: [資料處理, 不平衡學習, SMOTE, 欠採樣, 詐騙偵測]
ipas_term: false
---

# 類別不平衡（Class Imbalance）

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

## 完整說明

類別不平衡（Class Imbalance）是指在分類任務的訓練資料中，各類別的樣本數量分布嚴重不均，常見於醫療診斷、詐騙偵測等場景（如正常交易 vs. 詐騙交易比例可達 1000:1）。不平衡的資料會使模型傾向於預測多數類，在少數類上的識別能力極差，即使整體準確率看起來很高，實際性能可能很差。

## 常見問題

### 為什麼準確率（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 曲線或業務目標上搜尋最佳權重比例。

---

來源：https://aiterms.tw/terms/class-imbalance
快查頁：https://aiterms.tw/terms/class-imbalance
最後更新：2026/07/30
深度解說：https://aiterms.tw/learning/what-is-class-imbalance