詐欺偵測模型資料不平衡,SMOTE 怎麼解?
某銀行建立 AI 詐欺交易偵測模型。歷史交易資料中,詐欺樣本比例極低,導致模型訓練時偏向預測為「正常交易」。資料科學團隊評估採用 SMOTE(Synthetic Minority Over-sampling Technique)改善訓練資料分佈。下列何者最符合 SMOTE 技術的主要功能?
某銀行的詐欺交易偵測模型因為訓練資料裡詐欺樣本比例極低,模型傾向把所有交易都預測為正常。資料科學團隊打算用 SMOTE(Synthetic Minority Over-sampling Technique)來改善這個問題。
問你:下列哪一項最符合 SMOTE 技術的主要功能?
一句話總結
SMOTE 解決類別不平衡的方式是在少數類別的特徵空間合成新樣本:不刪多數類別、不改模型參數,而是「造」更多少數類別的虛擬數據出來。
先感受問題:100 萬筆交易,只有 100 筆是詐欺
假設你是「守信銀行」的資料科學工程師。公司有 100 萬筆歷史交易紀錄,其中只有 100 筆被確認是詐欺交易(比例 0.01%)。
你把這份資料直接丟進模型訓練,結果模型學到了一個「偷懶」的策略:不管什麼交易,全部預測成「正常」。這樣的準確率高達 99.99%,但詐欺一筆都沒偵測到,完全沒有用。
這就是類別不平衡(Class Imbalance)問題:少數類別的樣本太少,模型沒有足夠的詐欺案例可以學習,只能依賴多數類別(正常交易)的規律。
SMOTE 的想法是:如果真實的詐欺案例太少,那就「製造」更多合成的詐欺樣本,讓模型有足夠的少數類別案例可以學習。
沒有 SMOTE 之前,類別不平衡怎麼硬撐
「守信銀行」在採用 SMOTE 之前,嘗試過幾種方法,各有痛點:
- 直接訓練:模型學到「全預測正常」的偷懶策略,詐欺偵測率趨近零,毫無意義
- 刪除多數類別(Under-sampling):把正常交易從 100 萬筆削減到幾百筆,樣本太少,模型泛化能力很差,容易過擬合
- 重複少數類別(簡單 Over-sampling):把 100 筆詐欺交易複製貼上幾千次,但模型只是記憶這 100 個樣本,對新型詐欺沒有識別能力
- 調整懲罰權重:讓誤判詐欺的成本更高,但本質上訓練數據的不平衡問題沒有解決,效果有限
- 收集更多詐欺數據:理論上最好,但詐欺案例本來就稀少,無法短期內大量蒐集
SMOTE 怎麼在特徵空間合成新樣本
SMOTE 的核心概念:在少數類別的現有樣本之間,找到空隙,「插值」生成新的合成樣本。
以「守信銀行」的詐欺偵測為例:
步驟一:找到最近鄰。對每一筆真實詐欺交易,找出特徵空間中最鄰近的 k 筆詐欺樣本(例如 k=5)。
步驟二:插值合成。在一筆詐欺樣本和它的某個近鄰之間,隨機插值產生一個新的合成詐欺樣本。這個新樣本的特徵值介於兩個真實樣本之間,是「合理但不存在的」詐欺案例。
結果:原本 100 筆詐欺交易,透過 SMOTE 合成出 5000 筆詐欺樣本,模型現在有足夠的少數類別案例可以學習詐欺的特徵模式,而不只是記憶 100 個固定案例。
SMOTE 沒有改動多數類別數據,也沒有改變模型架構,而是從「豐富訓練數據」的角度解決不平衡問題。
這就是選項 B 為什麼正確:依據少數類別樣本的特徵空間,合成產生新的少數類別樣本。
技術版:類別不平衡的常見處理方法對比
類別不平衡(Class Imbalance)是監督式學習中的常見問題,以下是主要解法及其特點:
資料層面的方法:
- Under-sampling(欠採樣):隨機刪除多數類別樣本。簡單但會丟失信息,適合資料量非常大的情況。
- Over-sampling(過採樣):重複複製少數類別樣本。簡單但容易過擬合(只是記憶,沒有新信息)。
- SMOTE(合成過採樣):在少數類別的特徵空間插值合成新樣本,比簡單複製效果更好,是目前最常用的過採樣方法。
演算法層面的方法:
- 類別權重(Class Weight):在損失函數中給少數類別更高的懲罰權重(即選項 C),讓誤判少數類別的代價更高。
- Focal Loss:一種特殊的損失函數,對難以分類的樣本給予更高的關注。
SMOTE 的局限性:在高維特徵空間中,插值可能產生不合理的合成樣本(兩個詐欺案例之間插值出一個「中間值」,但中間值不一定真的像詐欺)。因此出現了 ADASYN、Borderline-SMOTE 等改良版本。
為什麼出題者要考這題:類別不平衡在金融詐欺、醫療診斷、設備故障偵測等場景極為常見。AI 規劃師需要知道哪種方法在哪種情況下適用,SMOTE 是考試高頻詞彙。
為什麼其他選項是錯的
A透過隨機刪除部分正常交易資料,以降低類別失衡程度
刪掉一些多數類別(正常交易)的樣本,讓詐欺和正常的比例變得更接近。
這是「欠採樣(Under-sampling)」的方法,不是 SMOTE。SMOTE 是增加少數類別,不是刪減多數類別。而且 SMOTE 的全名裡有「Over-sampling(過採樣)」,明確說明是增加,不是刪減。
知道「要讓兩類數量接近」但忘了 SMOTE 是加少數還是減多數的人。記住 SMOTE 的名字:Over-sampling = 採樣增加,Synthetic = 合成,都指向「增加少數類別」。
C調整模型的損失函數(Loss Function)權重,使誤判少數類別時的懲罰提高
不改數據,而是讓模型「更重視」少數類別,透過調整損失函數讓誤判詐欺的代價更大。
這是「類別加權(Class Weighting)」方法,作用在模型層面,不是數據層面。SMOTE 作用在資料層面,透過合成新樣本解決問題,不涉及損失函數的調整。兩者是不同層次的解決方案。
知道類別不平衡有多種解法但分不清哪個是 SMOTE 的人。SMOTE 的解法一定在「資料」層面,不在「模型」層面。
D以交叉驗證(Cross-validation)方式重新分割資料集,使各折資料類別比例一致
用分層抽樣的交叉驗證確保每一折訓練集和測試集的類別比例一致,解決評估偏差問題。
交叉驗證是模型評估方法,確保評估的公平性,不是解決類別不平衡的採樣方法。它不會新增或減少任何樣本,數據量和比例本身沒有改變,跟 SMOTE 的功能完全不同。
把「讓各折比例一致」誤以為是解決類別不平衡的人。分層交叉驗證確保評估時比例一致,但不解決訓練時少數類別樣本不足的根本問題。
同個考點下次怎麼變形
SMOTE 和簡單重複複製少數類別有什麼差別?
重複複製也是「增加少數類別樣本」,為什麼 SMOTE 更好?
簡單複製只是把同樣的樣本重複出現,模型只是在記憶這些固定案例,對新型態的少數類別沒有識別能力。SMOTE 透過插值產生「新的合成樣本」,讓模型學習少數類別的特徵分佈,對未見過的少數類別樣本泛化能力更強。
下列哪個場景最適合使用 SMOTE?
SMOTE 適合所有分類任務嗎?
SMOTE 最適合:少數類別樣本嚴重不足、少數類別的特徵空間是連續分佈的情境,例如詐欺偵測、疾病診斷、設備故障預測。不適合:少數類別本身特徵不清晰、合成樣本容易產生雜訊的高維稀疏特徵空間。
SMOTE 應該在資料分割(train/test split)的哪個階段執行?
SMOTE 要在分割前還是分割後做?
SMOTE 必須在資料分割之後,只對「訓練集」執行。如果在分割前做 SMOTE,合成的樣本可能混入測試集,造成資料洩漏(Data Leakage),讓評估指標過於樂觀,實際上模型沒那麼好。
類別不平衡問題只靠 SMOTE 就夠了嗎?
用了 SMOTE 是不是類別不平衡就解決了?
SMOTE 只是處理訓練數據不平衡的方法之一,實務上常與類別加權、調整決策閾值(Threshold Adjustment)、使用適合不平衡資料的評估指標(F1-score、AUC-ROC 而非準確率)一起使用,效果更全面。
為什麼在類別不平衡問題中不應該只看準確率(Accuracy)?
準確率不是越高越好嗎?
當少數類別只佔 0.01%,模型全預測多數類別準確率仍達 99.99%,但少數類別召回率是零,完全沒有偵測能力。應改用 F1-score(精確率和召回率的調和平均)或 AUC-ROC,這些指標才能反映模型在少數類別上的真實表現。
想再往下看,這 5 個
- 資料不平衡(Data Imbalance)訓練資料中不同類別樣本數懸殊,導致模型偏向多數類別,詐欺偵測、醫療診斷等場景的核心挑戰
- 合成資料生成(Synthetic Data Generation)SMOTE 的核心機制:在特徵空間中插值生成新樣本,而非單純複製現有少數類別資料
- F1 分數(F1 Score)精確率與召回率的調和平均,資料不平衡場景下比準確率更能反映模型對少數類別的偵測能力
- 資料擴增術(Data Augmentation)透過對現有樣本做變換產生更多訓練資料,概念與 SMOTE 相似但主要用於圖像領域,易混淆
- 詐欺偵測(Fraud Detection)本題的情境應用場景,詐欺樣本比例極低是典型資料不平衡問題,SMOTE 是業界常見改善手段