機器學習中如何解決數據不平衡問題?

文章目錄

  • 目錄
    • 什么是數據不平衡問題?
    • 數據不平衡會造成什么影響?
    • 如何處理數據不平衡問題?
      • 1、重新采樣訓練集
        • 1.1隨機欠抽樣
        • 1.2.基于聚類的過采樣
      • 2.使用K-fold交叉驗證
      • 3.轉化為一分類問題
      • 4.組合不同的重采樣數據集
      • 5.用不同比例重新采樣
      • 6.多模型Bagging
      • 7.集群豐富類
      • 8.設計適用于不平衡數據集的模型
    • 總結:

目錄

什么是數據不平衡問題?

在學術研究與教學中,很多算法都有一個基本假設,那就是數據分布是均勻的。當我們把這些算法直接應用于實際數據時,大多數情況下都無法取得理想的結果。因為實際數據往往分布得很不均勻,都會存在“長尾現象”,也就是所謂的“二八原理”。

在處理機器學習等數據科學問題時,經常會碰到不均衡種類分布的情況,即在樣本數據中一個或多個種類的觀察值明顯少于其他種類的觀察值的現象。在我們更關心少數類的問題時這個現象會非常突出,例如竊電問題、銀行詐騙性交易、罕見病鑒定等。在這種情況下,運用常規的機器學習算法的預測模型可能會無法準確預測。這是因為機器學習算法通常是通過減少錯誤來增加準確性,而不考慮種類的平衡。這篇文章講了不同的方法來解決這個不均衡分類問題,同時說明了這些方法的好處和壞處。

在這里插入圖片描述

數據不平衡會造成什么影響?

不平衡程度相同(即正負樣本比例類似)的兩個問題,解決的難易程度也可能不同,因為問題難易程度還取決于我們所擁有數據有多大。比如在預測微博互動數的問題中,雖然數據不平衡,但每個檔位的數據量都很大——最少的類別也有幾萬個樣本,這樣的問題通常比較容易解決;而在癌癥診斷的場景中,因為患癌癥的人本來就很少,所以數據不但不平衡,樣本數還非常少,這樣的問題就非常棘手。綜上,可以把問題根據難度從小到大排個序:大數據+分布均衡<大數據+分布不均衡<小數據+數據均衡<小數據+數據不均衡。對于需要解決的問題,拿到數據后,首先統計可用訓練數據有多大,然后再觀察數據分布情況。經驗表明,訓練數據中每個類別有5000個以上樣本,數據量是足夠的,正負樣本差一個數量級以內是可以接受的,不太需要考慮數據不平衡問題(完全是經驗,沒有理論依據,僅供參考)。

在這里插入圖片描述

如何處理數據不平衡問題?

在將數據用于建模之前,先運用重抽樣技術使數據變平衡。平衡數據主要通過兩種方式達到:增加少數類的頻率或減少多數類的頻率。通過重抽樣來改變兩個種類所占的比例。

1、重新采樣訓練集

1.1隨機欠抽樣

在這里插入圖片描述

1.2.基于聚類的過采樣

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2.使用K-fold交叉驗證

值得注意的是,使用過采樣方法來解決不平衡問題時應適當地應用交叉驗證。這是因為過采樣會觀察到罕見的樣本,并根據分布函數應用自舉生成新的隨機數據,如果在過采樣之后應用交叉驗證,那么我們所做的就是將我們的模型過擬合于一個特定的人工引導結果。這就是為什么在過度采樣數據之前應該始終進行交叉驗證,就像實現特征選擇一樣。只有重復采樣數據可以將隨機性引入到數據集中,以確保不會出現過擬合問題。

K-fold交叉驗證就是把原始數據隨機分成K個部分,在這K個部分中選擇一個作為測試數據,剩余的K-1個作為訓練數據。交叉驗證的過程實際上是將實驗重復做K次,每次實驗都從K個部分中選擇一個不同的部分作為測試數據,剩余的數據作為訓練數據進行實驗,最后把得到的K個實驗結果平均。

3.轉化為一分類問題

在這里插入圖片描述

4.組合不同的重采樣數據集

在這里插入圖片描述

5.用不同比例重新采樣

在這里插入圖片描述

6.多模型Bagging


在這里插入圖片描述

7.集群豐富類

在這里插入圖片描述
在這里插入圖片描述

8.設計適用于不平衡數據集的模型

在這里插入圖片描述

總結:

當面對不均衡數據集時,沒有一個解決方案可以提升所有預測模型的準確性。我們所需要做的可能就是嘗試不同的方法,找出最適合這個數據集的方法。最有效的解決
在這里插入圖片描述

參考博客1
參考博客2

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445427.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445427.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445427.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Head First設計模式》第四章筆記 工廠模式

之前我們一直在使用new操作符&#xff0c;但是實例化這種行為并不應該總是公開的進行&#xff0c;而且初始化經常會造成耦合問題&#xff0c;工廠模式將擺脫這種復雜的依賴&#xff0c;本次內容包括簡單工廠&#xff0c;工廠方法和抽象工廠三種情況。 1 2 3 4 5 6 Duck duck&a…

《Head First設計模式》第五章筆記-單件模式

單件模式 定義&#xff1a;確保一個類只有一個實例&#xff0c;并提供全局訪問點。 編寫格式&#xff1a; 1 2 3 4 5 6 public class MyClass{ private MyClass(){}//構造方法私有化 public static MyClass getInstance(){ //提供全局訪問點 return new My…

處理機器學習大數據的7種方法

文章目錄目錄1.分配更多的內存2.使用較小的樣本3.將數據提交至服務器上4.更改數據格式5.使用數據流方式或者逐行讀入的方法6.使用關系數據庫7.使用大數據平臺目錄 在實際的生產過程中&#xff0c;我們經常會遇到數據文件太大&#xff0c;而無法直接讀入到計算機中進行處理&…

《Head First設計模式》第六章筆記-命令模式

封裝調用-命令模式 命令模式可將“動作的請求者”從“動作的執行者”對象中解耦。 本篇中將不再描述書中所引入的“巴斯特家電自動化公司”的遙控器控制案例&#xff0c;而使用簡單易懂的餐廳案例。 在開始之前&#xff0c;讓我們通過一個現實中的例子來了解命令模式。 理解…

kaggle(04)---avazu_ctr_predictor(baseline)

比賽的目的&#xff1a; 通過分析網上的系統日志和用戶行為信息&#xff0c;來預測某些網頁上項目的點擊率。是一個二分類的問題&#xff0c;只需要預測出用戶是否點擊即可最好能夠輸出某個概率&#xff0c;比如&#xff1a;用戶點擊某個廣告的概率。 比賽官網 文件信息&…

一文讀懂機器學習庫graphLab

文章目錄目錄什么是graphlab為什么使用graphlab?如何安裝graphlab?graphlab的簡單使用。目錄 什么是graphlab GraphLab 是由CMU&#xff08;卡內基梅隆大學&#xff09;的Select 實驗室在2010 年提出的一個基于圖像處理模型的開源圖計算框架&#xff0c;框架使用C語言開發實…

《Head First設計模式》第七章-適配器模式、外觀模式

適配器模式 適配器模式是什么&#xff0c;你一定不難理解&#xff0c;因為現實中到處都是。比如說&#xff1a; 如果你需要在歐洲國家使用美國制造的筆記本電腦&#xff0c;你可能需要使用一個交流電的適配器…… 當你不想改變現有的代碼&#xff0c;解決接口不適配問題&#…

《Head First設計模式》第八章筆記-模板方法模式

模板方法模式 之前所學習的模式都是圍繞著封裝進行&#xff0c;如對象創建、方法調用、復雜接口的封裝等&#xff0c;這次的模板方法模式將深入封裝算法塊&#xff0c;好讓子類可以在任何時候都將自己掛接進運算里。 模板方法定義&#xff1a;模板方法模式在一個方法中定義一…

機器學習基礎-吳恩達-coursera-(第一周學習筆記)----Introduction and Linear Regression

課程網址&#xff1a;https://www.coursera.org/learn/machine-learning Week 1 —— Introduction and Linear Regression 目錄 Week 1 Introduction and Linear Regression目錄一 介紹1-1 機器學習概念及應用1-2 機器學習分類 二 單變量的線性回歸2-1 假設函數hypothesis2…

常見8種機器學習算法總結

簡介 機器學習算法太多了&#xff0c;分類、回歸、聚類、推薦、圖像識別領域等等&#xff0c;要想找到一個合適算法真的不容易&#xff0c;所以在實際應用中&#xff0c;我們一般都是采用啟發式學習方式來實驗。通常最開始我們都會選擇大家普遍認同的算法&#xff0c;諸如SVM&a…

redis——數據結構(字典、鏈表、字符串)

1 字符串 redis并未使用傳統的c語言字符串表示&#xff0c;它自己構建了一種簡單的動態字符串抽象類型。 在redis里&#xff0c;c語言字符串只會作為字符串字面量出現&#xff0c;用在無需修改的地方。 當需要一個可以被修改的字符串時&#xff0c;redis就會使用自己實現的S…

Hotspot虛擬機的對象

創建 Step1:類加載檢查 虛擬機遇到一條 new 指令時&#xff0c;首先將去檢查這個指令的參數是否能在常量池中定位到這個類的符號引用&#xff0c;并且檢查這個符號引用代表的類是否已被加載過、解析和初始化過。如果沒有&#xff0c;那必須先執行相應的類加載過程。 Step2:分…

劍指offer(刷題1-10)--c++,Python版本

文章目錄目錄第一題&#xff1a;解題思路&#xff1a;代碼實現&#xff1a;c順序查找二分查找Python第二題&#xff1a;解題思路&#xff1a;代碼實現&#xff1a;cpython第三題&#xff1a;解題思路&#xff1a;代碼實現&#xff1a;c使用棧輔助反轉鏈表python第四題&#xff…

redis——數據結構(整數集合,壓縮列表)

4、整數集合 整數集合&#xff08;intset&#xff09;是 Redis 用于保存整數值的集合抽象數據結構&#xff0c; 可以保存 int16_t 、 int32_t 、 int64_t 的整數值&#xff0c; 并且保證集合中不會出現重復元素。 實現較為簡單&#xff1a; typedef struct intset {// 編碼方…

原 劍指offer(刷題11-20)--c++,Python版本

文章目錄目錄第11題&#xff1a;解題思路&#xff1a;代碼實現&#xff1a;cpython第12題&#xff1a;解題思路&#xff1a;代碼實現&#xff1a;cpython第13 題&#xff1a;解題思路&#xff1a;代碼實現&#xff1a;cpython第 14題&#xff1a;解題思路&#xff1a;代碼實現&…

LRU介紹和實現

LRU全稱是Least Recently Used&#xff0c;即最近最久未使用的意思。 LRU算法的設計原則是&#xff1a;如果一個數據在最近一段時間沒有被訪問到&#xff0c;那么在將來它被訪問的可能性也很小。也就是說&#xff0c;當限定的空間已存滿數據時&#xff0c;應當把最久沒有被訪問…

機器學習知識總結系列- 知識圖譜(0-0)

文章目錄目錄機器學習知識圖譜目錄 本系列的文章只是根據個人的習慣進行總結&#xff0c;可能結構與一些書籍上不太一樣&#xff0c;開始的內容比較簡單&#xff0c;會隨著后續的深入&#xff0c;不斷豐富和更新圖譜&#xff0c;同時也期待有相同興趣的朋友一起給我留言一起豐富…

跳表介紹和實現

想慢慢的給大家自然的引入跳表。 想想&#xff0c;我們 1&#xff09;在有序數列里搜索一個數 2&#xff09;或者把一個數插入到正確的位置 都怎么做&#xff1f; 很簡單吧 對于第一個操作&#xff0c;我們可以一個一個比較&#xff0c;在數組中我們可以二分&#xff0c;這…

機器學習知識總結系列- 基本概念(1-0)

文章目錄目錄1. 機器學習的定義2. 機器學習的分類2.1根據是否在人類監督下進行訓練監督學習非監督學習半監督學習強化學習2.2根據是否可以動態漸進的學習在線學習批量學習2.3根據是否在訓練數據過程中進行模式識別實例學習基于模型的學習3. 機器學習中的一些常見名詞4. 機器學習…

劍指offer(刷題21-30)--c++,Python版本

文章目錄目錄第 21題&#xff1a;解題思路&#xff1a;代碼實現&#xff1a;cpython第22 題&#xff1a;解題思路&#xff1a;代碼實現&#xff1a;cpython第23 題&#xff1a;解題思路&#xff1a;代碼實現&#xff1a;cpython第24 題&#xff1a;解題思路&#xff1a;代碼實現…