6種方式處理機器學習中不平衡的資料集 - svpino
讓我們從一個例子開始:您正在嘗試構建一個分類模型。
- 1 類:貓
- 2 類:狗
不幸的是,您的資料非常不準確:有 950 張貓圖片和 50 張狗圖片。
如果您的模型將每張圖片都歸類為貓,那麼您的準確率將達到 95%。想一想:由於類別不平衡,愚蠢的模型將使您達到 95% 的準確率。這是業界非常普遍的問題。
注意:“不平衡”並不意味著“每個類別的樣本數量不同”。擁有 550 張貓圖片和 450 張狗圖片不一定是問題。
現在讓我們透過一些技巧來解決這個問題:
1. 不要在不平衡的資料集上使用“準確性”。
對於這些問題,精度並不是一個好的效能指標。
相反,請檢視以下內容:
- 精度
- Recall召回
- F-Score
- 混淆矩陣
- ROC 曲線
2. 收集更多資料。
在我們的示例中,您可能能夠找到更多的狗圖片新增到您的資料集中並減少差異。我總是喜歡從這裡開始,但收集更多資料並不總是一種選擇。
3. 用合成資料擴充資料集。
這是處理非結構化資料的好方法:建立類似於真實資料的新樣本。非結構化資料是指:影片、影像、文字、音訊。
您可以轉換一些狗圖片以建立新樣本:
- 更改對比度
- 水平翻轉
- 輕微旋轉
- 新增噪聲
- ...
結合這些技術,我們可以生成大量新資料。
對於結構化資料,增強要困難得多,有時根本不可能。結構化資料 是指: 表格資料(想想列和行。)
4. 重新取樣您的資料集。
有幾種方法可以做到這一點:
- 對狗的圖片進行過取樣。
- 對貓的圖片取樣不足。
您也可以將兩者結合起來。
以下是對我們的資料集重新取樣的示例:
- 將每張狗圖片使用四次。
- 使用所有其他貓圖片。
新資料集:
- 狗:400 張圖片(50 × 4)
- 貓:475 張圖片(950 ÷ 2)
好多了,嗯?
重要提示:過取樣和欠取樣都會給您的資料集帶來偏差:您正在透過任意弄亂現有樣本來改變資料的分佈。請務必牢記這一點並考慮後果。
5. 使用成本敏感性Cost Sensitivity。
向模型新增成本敏感層是最佳化預測的好方法。這將有助於權衡在不平衡資料上訓練的模型的結果。我們只關心錯誤,因為如果模型正確,成本為 0 美元。在相信結果之前,我們將計算出錯時的潛在錯誤成本。
6. 檢查不同的演算法。
決策樹非常擅長處理不平衡的類。當然,我們不能將決策樹用於“貓與狗”問題,但在處理結構化資料時它可能是一個很好的解決方案。
相關文章
- 機器學習中如何處理不平衡資料(imbalanced data)?機器學習
- 機器學習:處理不平衡資料的5個重要技術機器學習
- 訓練機器學習的資料集大小很重要 - svpino機器學習
- [譯]如何處理機器學習中的不平衡類別機器學習
- 用R處理不平衡的資料
- 大資料三種處理方式大資料
- 非平衡資料集的機器學習常用處理方法機器學習
- 一文教你如何處理不平衡資料集(附程式碼)
- ETL中後設資料處理的方式
- ES6 換種思路處理資料
- C#中處理JSON資料的方式C#JSON
- 業界使用的兩種主要機器學習技術 -svpino機器學習
- 不平衡樣本的處理
- 機器學習演算法筆記之6:資料預處理機器學習演算法筆記
- 機器學習一:資料預處理機器學習
- LoadRunner中多值關聯的3種處理方式
- 機器學習筆記---資料預處理機器學習筆記
- 通俗講明白機器學習中的學習問題 - svpino機器學習
- 機器學習:探索資料和資料預處理機器學習
- Python中處理大型資料集而不會耗盡記憶體的方式推薦Python記憶體
- FreeBSD資料處理方式(轉)
- 機器學習導圖系列(1):資料處理機器學習
- 機器學習中的有標註資料集和無標註資料集機器學習
- UCI資料集詳解及其資料處理(附148個資料集及處理程式碼)
- SQLite 併發的四種處理方式SQLite
- PHP處理密碼的幾種方式PHP密碼
- php 與 nginx 的兩種處理方式PHPNginx
- 機器學習操作基本步驟 - svpino機器學習
- 影像處理開源資料集
- 處理大型資料集而不會耗盡記憶體的方式推薦記憶體
- 傳統的資料處理方式能否應對大資料?大資料
- 支付類系統資料處理和資料中臺的資料處理方式有什麼不同?
- SpringMVC非同步處理的 5 種方式SpringMVC非同步
- MyBatis多對多的兩種處理方式MyBatis
- 關於圓角的5種處理方式
- 深度學習煉丹-不平衡樣本的處理深度學習
- 6個大資料處理分析的最好工具大資料
- Python資料處理(一):處理 JSON、XML、CSV 三種格式資料PythonJSONXML