1. 程式人生 > >如何解決分類問題中樣本不均衡問題

如何解決分類問題中樣本不均衡問題

什麼是資料不均衡?

在分類中,訓練資料不均衡是指不同類別下的樣本數目相差巨大。舉兩個例子:
①在一個二分類問題中,訓練集中class 1的樣本數比上class 2的樣本數的比值為60:1。使用邏輯迴歸進行分類,最後結果是其忽略了class 2,將所有的訓練樣本都分類為class 1。
②在三分類問題中,三個類別分別為A,B,C,訓練集中A類的樣本佔70%,B類的樣本佔25%,C類的樣本佔5%。最後我的分類器對類A的樣本過擬合了,而對其它兩個類別的樣本欠擬合。
實際上,訓練資料不均衡是常見並且合理的情況。舉兩個例子:
①在欺詐交易識別中,絕大部分交易是正常的,只有極少部分的交易屬於欺詐交易。
②在客戶流失問題中,絕大部分的客戶是會繼續享受其服務的(非流失物件),只有極少數部分的客戶不會再繼續享受其服務(流失物件)。
那麼訓練資料不均衡會導致什麼問題呢?
如果訓練集的90%的樣本是屬於同一個類的,而我們的分類器將所有的樣本都分類為該類,在這種情況下,該分類器是無效的,儘管最後的分類準確度為90%。所以在資料不均衡時,準確度(Accuracy)這個評價指標參考意義就不大了。實際上,如果不均衡比例超過4:1,分類器就會偏向於大的類別。

五種解決辦法:

1,擴充資料集

首先想到能否獲得更多資料,尤其是小類(該類樣本資料極少)的資料,更多的資料往往能得到更多的分佈資訊。

2,對資料集進行重取樣

過取樣(over-sampling),對小類的資料樣本進行過取樣來增加小類的資料樣本個數,即取樣的個數大於該類樣本的個數。
欠取樣(under-sampling),對大類的資料樣本進行欠取樣來減少大類的資料樣本個數,即取樣的個數少於該類樣本的個數。
取樣演算法容易實現,效果也不錯,但可能增大模型的偏差(Bias),因為放大或者縮小某些樣本的影響相當於改變了原資料集的分佈。對不同的類別也要採取不同的取樣比例,但一般不會是1:1,因為與現實情況相差甚遠,壓縮大類的資料是個不錯的選擇。

3,人造資料

一種簡單的產生人造資料的方法是:在該類下所有樣本的每個屬性特徵的取值空間中隨機選取一個組成新的樣本,即屬性值隨機取樣。此方法多用於小類中的樣本,不過它可能破壞原屬性的線性關係。如在影象中,對一幅影象進行扭曲得到另一幅影象,即改變了原影象的某些特徵值,但是該方法可能會產生現實中不存在的樣本。
有一種人造資料的方法叫做SMOTE(Synthetic Minority Over-sampling Technique)。SMOTE是一種過取樣演算法,它構造新的小類樣本而不是產生小類中已有的樣本的副本。它基於距離度量選擇小類別下兩個或者更多的相似樣本,然後選擇其中一個樣本,並隨機選擇一定數量的鄰居樣本對選擇的那個樣本的一個屬性增加噪聲,每次處理一個屬性。這樣就構造了許多新資料。
SMOTE演算法的多個不同語言的實現版本: 
•Python: UnbalancedDataset模組提供了SMOTE演算法的多種不同實現版本,以及多種重取樣演算法。
•R: DMwR package。
•Weka: SMOTE supervised filter。

4,改變分類演算法

使用代價函式時,可以增加小類樣本的權值,降低大類樣本的權值(這種方法其實是產生了新的資料分佈,即產生了新的資料集),從而使得分類器將重點集中在小類樣本身上。剛開始,可以設定每個類別的權值與樣本個數比例的倒數,然後可以使用過取樣進行調優。
可以把小類樣本作為異常點(outliers),把問題轉化為異常點檢測問題(anomaly detection)。此時分類器需要學習到大類的決策分介面,即分類器是一個單個類分類器(One Class Classifier)。
由Robert E. Schapire提出的”The strength of weak learnability”方法,該方法是一個boosting演算法,它遞迴地訓練三個弱學習器,然後將這三個弱學習器結合起形成一個強的學習器。演算法流程如下:
•首先使用原始資料集訓練第一個學習器L1。 
•然後使用50%在L1學習正確和50%學習錯誤的那些樣本訓練得到學習器L2,即從L1中學習錯誤的樣本集與學習正確的樣本集中,迴圈取樣一邊一個。 
•接著,使用L1與L2不一致的那些樣本去訓練得到學習器L3。 
•最後,使用投票方式作為最後輸出。 
那麼如何使用該演算法來解決資料不均衡問題呢? 假設是一個二分類問題,大部分的樣本都是true類。
•讓L1輸出始終為true。
•使用50%在L1分類正確的與50%分類錯誤的樣本訓練得到L2,即從L1中學習錯誤的樣本集與學習正確的樣本集中,迴圈取樣一邊一個。因此,L2的訓練樣本是平衡的。
•接著使用L1與L2分類不一致的那些樣本訓練得到L3,即在L2中分類為false的那些樣本。
•最後,結合這三個分類器,採用投票的方式來決定分類結果,因此只有當L2與L3都分類為false時,最終結果才為false,否則true。
以下方法同樣會破壞某些類的樣本的分佈:
•設超大類中樣本的個數是極小類中樣本個數的L倍,那麼在隨機梯度下降(SGD,stochastic gradient descent)演算法中,每次遇到一個極小類中樣本進行訓練時,訓練L次。
•將大類中樣本劃分到L個聚類中,然後訓練L個分類器,每個分類器使用大類中的一個簇與所有的小類樣本進行訓練得到。最後對這L個分類器採取少數服從多數對未知類別資料進行分類,如果是連續值(預測),那麼採用平均值。
•設小類中有N個樣本。將大類聚類成N個簇,然後使用每個簇的中心組成大類中的N個樣本,加上小類中所有的樣本進行訓練。
如果不想破壞樣本分佈,可以使用全部的訓練集採用多種分類方法分別建立分類器而得到多個分類器,投票產生預測結果。

5,嘗試其它評價指標

相關推薦

如何解決分類問題樣本均衡問題

什麼是資料不均衡?在分類中,訓練資料不均衡是指不同類別下的樣本數目相差巨大。舉兩個例子:①在一個二分類問題中,訓練集中class 1的樣本數比上class 2的樣本數的比值為60:1。使用邏輯迴歸進行分類,最後結果是其忽略了class 2,將所有的訓練樣本都分類為class

分類樣本資料平衡問題的解決方法

資料探勘的重點在資料,當資料不平衡的時候怎麼辦呢?  轉自:http://blog.csdn.net/dream2009gd/article/details/35569343       問題:研究表明,在某些應用下,1∶35的比例就會使某些分類

文字分類問題資料均衡解決方法的探索

資料傾斜是資料探勘中的一個常見問題,它嚴重影響的資料分析的最終結果,在分類問題中其影響更是巨大的,例如在之前的文字分類專案中就遇到類別文字集合嚴重不均衡的問題,本文主要結合專案實驗,介紹一下遇到資料不均衡問題時的常見解決方法。 資料傾斜的解決方法 1.過取樣和欠

如何解決樣本均衡問題

介紹 ring 倒數 算法思想 ssi pan 訓練集 交叉驗證 權重 解決樣本不均衡的問題很多,主流的幾個如下: 1.樣本的過采樣和欠采樣。 2..使用多個分類器進行分類。 3.將二分類問題轉換成其他問題。 4.改變正負類別樣本在模型中的權重。 一、樣本的過采樣和

樣本均衡解決辦法

正負樣本不均衡,正負是指的二分類麼? 正負樣本不均衡時,常用方法: 1.抽樣    過抽樣:將樣本量少的一類sample補齊    欠抽樣:將樣本量多的一類sample壓縮    組合抽樣:約定一個數量級N,同時進行過取

如何解決機器學習深度學習訓練集樣本均衡的問題!

解決樣本不均衡的問題很多,主流的幾個如下: 1.樣本的過取樣和欠取樣。 2..使用多個分類器進行分類。 3.將二分類問題轉換成其他問題。 4.改變正負類別樣本在模型中的權重。 一、樣本的過取樣和欠取樣。 1.過取樣:將稀有類別的樣本進行復制,通過增加此稀有

13.解決樣本均衡問題

實際工作中經常遇到樣本不均衡問題,比如某P2P平臺預測使用者信譽,1為信譽良好,0為有違約記錄,樣本採集下來為1的樣本佔絕大多數(比如90%),此時如果你用分類模型,目標函式是準確率,那麼即使你全部預測為1,那麼準確率也為90%,會極大的影響模型效果。 因此在我們在訓練模型

解決樣本均衡問題-SMOTE

原文連結 SMOTE: Synthetic Minority Over-sampling Technique 解決的問題 很多演算法都有一個預設的假設:樣本中各個類別的樣本數目是均衡的,比如深度學習中幾個經典網路結構直接用於不均衡資料效果會很差。本文提出的SMOTE是一種通過

CSDN機器學習筆記七 實戰樣本均衡資料解決方法

信用卡檢測案例 原始資料:0特別多,1特別少——樣本不均衡。 要麼讓0和1一樣多,要麼讓0和1一樣少。 1.下采樣 對於資料0和1,要變為同樣少——在0裡選擇和1一樣多資料。 from sklearn.preprocessing imp

整合學習以及分類樣本均衡問題

整合學習簡介參考如下: 整合學習簡介 1 如何提高整合學習方法的泛化效能 整合學習是由多個基學習器通過一定方式形成,多個基學習器可以同類型也可以不同型別,當基學習器具有較大差異性時,形成互補,做到“好而不同”可以提高整合學習的泛化效能。如何增強整合學習的差

深度學習樣本均衡問題解決

在深度學習中,樣本不均衡是指不同類別的資料量差別較大,利用不均衡樣本訓練出來的模型泛化能力差並且容易發生過擬合。對不平衡樣本的處理手段主要分為兩大類:資料層面 (簡單粗暴)、演算法層面 (複雜) 。資料層面取樣(Sample)資料重取樣:上取樣或者下采樣上取樣下采樣使用情況資

機器學習訓練樣本均衡問題

在實際中,訓練模型用的資料並不是均衡的,在一個多分類問題中,每一類的訓練樣本並不是一樣的,反而是差距很大。比如一類10000,一類500,一類2000等。解決這個問題的做法主要有以下幾種: 欠取樣:就是把多餘的樣本去掉,保持這幾類樣本接近,在進行學習。(可能會導致過擬合)

【MySQL】如何解決MySQL查詢區分大小寫的問題

bsp title 標識 article ble 問題 col bold table mysql查詢默認是不區分大小寫的 如: select * from some_table where str=‘abc‘; select * from some_ta

解決ubantusublime支持中文的方法

inux ext 目錄 one 如果 運行 gpo amp apt-get 更新然後將系統升級到最新版本,在linux終端輸入 sudo apt-get update && sudo apt-get 在本地目錄中克隆此repo: 如果

解決SpringBootwebScocket能註入bean的問題

獲取 我想 一個 技術 soc sco png PE ice 最近在做websocket聊天,但是遇到一個問題,就是在websocket的服務中要調用Service層的東西。首先我想到的是通過@Autowire註解來實現bean的註入。但是進過測試發現,註入的bean一直為

機器學習均衡數據的處理方法

9.png ima 方法 nbsp 修改 情況 技術分享 其他 它的 當對於a類型數據占10% b類型的數據占90% 這中數據不均衡的情況采用的方法有: 1.想辦法獲取更多數據 2.換一種評判方式 3.重組數據:   a.復制 a的數據,使它的數據量和b一樣多。  

Sklearn-LogisticRegression邏輯迴歸(有處理樣本均衡時設定引數的方法)

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/CherDW/article/details/54891073 邏輯迴歸: 可以做概率預測,也可用於分類,僅能用於線性問題。通過計算真實值與預測值的概率,然後變換成損失函式,求損失函式

AiChallenger比賽記錄之樣本均衡

如何處理樣本不均衡 1.1 選擇合適的評價指標: 不要採用準確率(Accuracy); 主流評估方法包括:ROC,Precision-Recall curve,F1; 1.2若樣本極度不均衡,可作為異常檢測問題處理; 資料探勘中常見的『異常檢測』演算法有哪

解決專案到Maven Dependencies

專案中找不到Maven Dependencies 正常的Maven專案應該是這樣的 自己的專案中卻沒有Maven Dependencies 先做第一步   若專案中還沒有出現Maven Dependencies,那麼很可能在.classpath和.proje

解決Linuxcrontab執行ntpdate問題

把同步時間定時任務中,使用 crontab -e 開啟配置檔案,加入 * * * * * ntpdate cn.ntp.org.cn 每分鐘同步時間,上面看上去是沒什麼問題,命令列經常彈出You ha