平衡數據你好,
由於我的回覆率只有 27%,我想在分析數據之前先平衡一下數據。我首先建立了一個分層的(基於我的目標列)驗證列,以建立訓練集、驗證集和測試集。我的問題是,我應該在訓練集和驗證集中平衡數據,而不是在測試集中平衡,還是只在訓練集中平衡?我想使用 SMOTE 技術,最後在級聯資料庫(訓練集+驗證集+測試集)上使用模型篩選平台的交叉驗證技術,並使用驗證列進行測試集效能分析。這種方法可以在交叉驗證之前平衡我的資料嗎?歡迎提出其他建議?
問候,
週一
基礎資料分析與建模預測模型和機器學習回覆:平衡數據你好@魯 ,
我對 SMOTE 或其他分類平衡技術有著複雜的感受:
- SMOTE 會徹底「破壞」分類器的校準(因為它會在學習階段徹底改變兩個類別的比例),這意味著分類器計算出的機率與資料集中實際測量的機率不符。這對於某些應用(醫療保健、金融/銀行等)尤其敏感,因為有時您可能需要計算的機率,而不是最終的多數類。
- 此外,在原始論文中以及後續研究中證實,當分類器是弱學習模型(例如決策樹和樸素貝葉斯)時,SMOTE 僅能提供微小的改進。當與最先進的/「強」模型(例如隨機森林、XGBoost 等)一起使用時,SMOTE 不僅不會帶來任何好處,甚至可能對學習造成不利影響。另一項研究: 基於機器學習的預測模型的類別不平衡學校的危害:一項模擬研究 - Carriero - 2025 - 醫學統計學 - Wiley 線上圖書館
在大多數研究中,關於這些技術的結論是相同的:「使用強分類器可以實現正確、最佳的預測,平衡數據既不是必需的,也無益」或「糾正類別不平衡並不總是必要的,甚至可能對旨在根據個人情況產生可靠風險估計的臨床預測模型有害」。
- SMOTE 在某些特定情況下可能有效,例如使用弱學習器或無法調整決策閾值時,但其相對優勢也可能因所選的效能指標而異。除此之外,我不建議使用它。
對於少數類來說,27% 的失衡並不算太大,調整決策閾值或指定利潤矩陣等經典方法應該能夠幫助你根據情況調整分類器的表現。新增特徵/變數、預處理資料(特徵工程)以改善模型、新增資料或選擇最具代表性的不同觀測值,以及嘗試多個模型進行比較和基準測試,這些方法也有助於提升效能。
重要的是要理解,資料不平衡之所以會成為問題,僅僅是因為訓練集中的少數類缺乏足夠的代表性,以及/或特徵不足以作為標籤的指標。理想的情況是解決這兩個問題,這樣模型即使不平衡,也能表現良好。
話雖如此,在工作流程中添加 SMOTE(或任何預處理)操作(如果需要)應謹慎操作,以避免資料外洩和過度樂觀的效能預期。 SMOTE 或任何其他平衡技術應該應用於訓練集和驗證集(用於訓練、比較和選擇最佳表現的模型),但顯然不應用於測試集,因為模型需要在「真實」條件下(存在嚴重不平衡)執行和評估。
希望這個答案能對你有幫助,
回覆:平衡數據感謝 Victor 的明確建議。
目前,我已經使用「不平衡分類」外掛程式檢查了模型的效能,並計算了神經網路、Bootstrap Forrest 和 Boosted Tree 模型的準確率、召回率和 ROC 曲線下面積 (AUC),這些模型分別使用了 SMOTE 和 TOMEC 平衡,但 AUC 根本沒有提升。所以,平衡數據可能無論如何都無法提升效能。
感謝您的支持,
問候
週一
回覆:平衡數據嘿,Russ,
我有一個「驗證」列,用於區分訓練、驗證和測試行。在應用嵌套交叉驗證時,是否應該在模型篩選平台中指定此列?我注意到,效能統計摘要會根據是否包含此列而有所不同。
您能否確認在這種情況下推薦的方法是什麼?
我想比較並報告 ML 模型的效能。
有沒有一種快速的方法可以獲取比目前生成的摘要報告更詳細的信息,例如 F1、MCC、Sens、Spec、FP、FN 等?
問候,
週一
回覆:平衡數據你好@魯 ,
如果您在啟動模型篩選平台時選擇了交叉驗證選項,則新增驗證列不會改變任何內容,因為所選的交叉驗證選項將接管驗證列: 啟動模型篩選平台(驗證部分)。
如果你沒有固定隨機種子,那麼你可能會得到不同的結果。在選擇交叉驗證選項時,無論是否新增驗證列,都會在固定隨機種子的情況下得到相同的結果:

關於模型評估、比較和選擇的(廣泛)主題,其他幾個主題可能有助於您找到相關的驗證策略:
如何對 ML 模型(例如神經網路和隨機森林)進行 k 折交叉驗證並在固定測試資料上檢查模型效能? 模型篩選
一個或多個驗證列
使用 k 折擬合品質進行交叉驗證
留一法或 k 折交叉驗證方法? ?
交叉驗證 - 驗證列方法
希望這個答案能對你有幫助,