🏦 正常交易
👥👥👥👥👥
100,000 筆正常交易。
「人太多了!」
Synthetic Minority Over-sampling Technique|「幫少數派增加新夥伴!」
100,000 筆正常交易。
「人太多了!」
只有 500 筆詐欺交易。
「我們是少數派……」
模型可能偏向多數類別。
SMOTE 的目的,是處理類別不平衡(Class Imbalance)。它不是直接複製少數樣本,而是利用少數類別樣本之間的特徵差異,產生位於它們之間的新樣本。
少數類別過度取樣合成新資料Class Imbalance假設兩筆詐欺樣本:
SMOTE 不只是複製 A。
而是在 A 與鄰居 B 的特徵空間連線上取點。
🟣 是人工合成的少數類別樣本。
| 方法 | 漫畫 | 到底改了什麼? |
|---|---|---|
| SMOTE | 🟣「生新少數派」 | 在少數類樣本的特徵空間中合成新樣本。 |
| Random Over-sampling | 📋「複製少數派」 | 直接重複抽取/複製少數類樣本。 |
| Random Under-sampling | ✂️「刪多數派」 | 刪除部分多數類樣本,降低資料不平衡。 |
| Class Weight | ⚖️「少數派加分」 | 調整模型訓練時不同類別的損失權重,不直接新增資料。 |
| Cross-validation | 🔄「切資料考試」 | 用不同資料切分評估模型泛化能力;不是 SMOTE 本身。 |
原本:
SMOTE:
👉 增加的是少數類別訓練樣本。
不是新增交易資料,而是告訴模型:
👉 改變模型學習時的Loss 權重。
「把詐欺資料複製 1,000 次。」
這比較接近Random Over-sampling。
根據少數類樣本的鄰近關係,在特徵空間中進行插值。
產生新的合成少數樣本。
如果少數類資料本身有噪聲或類別邊界複雜,合成資料也可能帶來問題。
所以不是「SMOTE 越多越好」。
模型容易學成:
「全部預測正常,好像也很準?」
讓訓練資料中的少數類別有更多代表性。
看到「類別不平衡」+「少數類別」+「合成新樣本」→ SMOTE
⭐ SMOTE 改資料,不改 Loss;不是刪資料,也不是單純複製資料。
A. 隨機刪除部分正常交易
B. 依據少數類別樣本的特徵空間,合成新的少數類別樣本
C. 調整 Loss Function 權重
D. 以 Cross-validation 重新分割資料
| 題目關鍵字 | 立刻想到 |
|---|---|
| 類別不平衡 | ⚖️ Imbalanced Data |
| 少數類別太少 | 🔴 Minority Class |
| 合成新的少數類別樣本 | 🟣 SMOTE |
| 直接複製少數樣本 | 📋 Random Over-sampling |
| 刪除多數類別 | ✂️ Random Under-sampling |
| 提高少數類錯誤的懲罰 | ⚖️ Class Weight |
| 切資料評估模型 | 🔄 Cross-validation |
⭐ 最終口訣:
「SMOTE 不刪、不單純複製;它在少數類鄰居之間『生新樣本』。」