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

在機器學習任務中,我們經常會遇到這種困擾:數據不平衡問題

數據不平衡問題主要存在于有監督機器學習任務中。當遇到不平衡數據時,以總體分類準確率為學習目標的傳統分類算法會過多地關注多數類,從而使得少數類樣本的分類性能下降。絕大多數常見的機器學習算法對于不平衡數據集都不能很好地工作。

本文介紹幾種有效的解決數據不平衡情況下有效訓練有監督算法的思路:

1、重新采樣訓練集

可以使用不同的數據集。有兩種方法使不平衡的數據集來建立一個平衡的數據集——欠采樣和過采樣。

1.1. 欠采樣

欠采樣是通過減少豐富類的大小來平衡數據集,當數據量足夠時就該使用此方法。通過保存所有稀有類樣本,并在豐富類別中隨機選擇與稀有類別樣本相等數量的樣本,可以檢索平衡的新數據集以進一步建模。

1.2. 過采樣

相反,當數據量不足時就應該使用過采樣,它嘗試通過增加稀有樣本的數量來平衡數據集,而不是去除豐富類別的樣本的數量。通過使用重復、自舉或合成少數類過采樣等方法(SMOTE)來生成新的稀有樣品。

注意到欠采樣和過采樣這兩種方法相比而言,都沒有絕對的優勢。這兩種方法的應用取決于它適用的用例和數據集本身。另外將過采樣和欠采樣結合起來使用也是成功的。

2、使用K-fold交叉驗證

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

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

3、轉化為一分類問題

對于二分類問題,如果正負樣本分布比例極不平衡,我們可以換一個完全不同的角度來看待問題:把它看做一分類(One Class Learning)或異常檢測(Novelty Detection)問題。這類方法的重點不在于捕捉類間的差別,而是為其中一類進行建模,經典的工作包括One-class SVM等,如下圖所示:

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

One Class SVM 是指你的訓練數據只有一類正(或者負)樣本的數據, 而沒有另外的一類。在這時,你需要學習的實際上你訓練數據的邊界。而這時不能使用最大化軟邊緣了,因為你沒有兩類的數據。 所以呢,在這邊文章中,“Estimating the support of a high-dimensional distribution”, Sch?lkopf 假設最好的邊緣要遠離特征空間中的原點。左邊是在原始空間中的邊界,可以看到有很多的邊界都符合要求,但是比較靠譜的是找一個比較緊的邊界(紅色的)。這個目標轉換到特征空間就是找一個離原點比較遠的邊界,同樣是紅色的直線。當然這些約束條件都是人為加上去的,你可以按照你自己的需要采取相應的約束條件。比如讓你data 的中心離原點最遠。

說明:對于正負樣本極不均勻的問題,使用異常檢測,或者一分類問題,也是一個思路。

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

成功泛化模型的最簡單方法是使用更多的數據,問題是像邏輯回歸或隨機森林這樣開箱即用的分類器,傾向于通過舍去稀有類來泛化模型。一個簡單的最佳實踐是建立n個模型,每個模型使用稀有類別的所有樣本和豐富類別的n個不同樣本。假設想要合并10個模型,那么將保留例如1000例稀有類別,并隨機抽取10000例豐富類別。然后,只需將10000個案例分成10塊,并訓練10個不同的模型。

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

如果擁有大量數據,這種方法是簡單并且是可橫向擴展的,這是因為可以在不同的集群節點上訓練和運行模型。集合模型也趨于泛化,這使得該方法易于處理。

5、用不同比例重新采樣

方法4?可以很好地將稀有類別和豐富類別之間的比例進行微調,最好的比例在很大程度上取決于所使用的數據和模型。但是,不是在整體中以相同的比例訓練所有模型,所以值得嘗試合并不同的比例。如果10個模型被訓練,有一個模型比例為1:1(稀有:豐富)和另一個1:3甚至是2:1的模型都是有意義的。一個類別獲得的權重依賴于使用的模型。

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

6、多模型Bagging

方法5?雖然能夠選出最好的樣本數據比例。但是它的魯棒性不能夠保證:它的魯棒性取決于測試集樣本的選取

為了解決上述方法的缺陷,增加模型魯棒性。為此,我本人在?隨機森林算法?思想的啟發下,想出了在上述方法的基礎上,將不同比例下訓練出來的模型進行?多模型Bagging?操作,具體的步驟如下:

1. 對兩類樣本選取 N 組不同比例的數據進行訓練并測試,得出模型預測的準確率:?

P={ Pi?| i=1,2,...N }

2. 對上述各模型的準確率進行歸一化處理,得到新的權重分布:

Ω={ ωi?| i=1,2,...N }

其中:

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

3. 按權重分布 Ω 組合多個模型,作為最終的訓練器:

●?對于分類任務:

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

●?對于回歸任務:

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

7、集群豐富類

Sergey Quora提出了一種優雅的方法,他建議不要依賴隨機樣本來覆蓋訓練樣本的種類,而是將r個群體中豐富類別進行聚類,其中r為r中的例數。每個組只保留集群中心(medoid)。然后,基于稀有類和僅保留的類別對該模型進行訓練。

7.1. 對豐富類進行聚類操作

首先,我們可以對具有大量樣本的豐富類進行聚類操作。假設我們使用的方法是 K-Means聚類算法 。此時,我們可以選擇K值為稀有類中的數據樣本的個數,并將聚類后的中心點以及相應的聚類中心當做富類樣本的代表樣例,類標與富類類標一致。

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

7.2. 聚類后的樣本進行有監督學習

經過上述步驟的聚類操作,我們對富類訓練樣本進行了篩選,接下來我們就可以將相等樣本數的K個正負樣本進行有監督訓練。如下圖所示:

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

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

所有之前的方法都集中在數據上,并將模型保持為固定的組件。但事實上,如果設計的模型適用于不平衡數據,則不需要重新采樣數據,著名的XGBoost已經是一個很好的起點,因此設計一個適用于不平衡數據集的模型也是很有意義的。

通過設計一個代價函數來懲罰稀有類別的錯誤分類而不是分類豐富類別,可以設計出許多自然泛化為稀有類別的模型。例如,調整SVM以懲罰稀有類別的錯誤分類。

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




====================================分割線================================

本文作者:AI研習社
本文轉自雷鋒網禁止二次轉載,原文鏈接

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

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

相關文章

ubuntu每次登陸都用root賬號登陸

sudo -s 進入 root 用戶權限模式 vi /etc/lightdm/lightdm.conf [SeatDefaults] greeter-sessionunity-greeter user-sessionUbuntu greeter-show-manual-logintrue allow-guestfasle 重啟后再登陸就會 直接用root登陸了 版權聲明:本文為博主原創文章,未…

js-BOM

私有變量: 1、在一個實例上調用setName()會影響所有的實例 BOM: 1、全局變量不能通過delete操作符刪除,而直接在window對象上定義的屬性可以 2、嘗試訪問為聲明的變量會拋出錯誤,但通過查詢window對象&…

計算機組成實驗v代表什么,2014計算機組成原理實驗指導V1.3.docx

文檔介紹:實驗一運算器組成實驗實驗目的熟悉Logisim軟件平臺。掌握運算器基本工作原理掌握運算溢出檢測的原理和實現方法;理解有符號數和無符號數運算的區別;理解基于補碼的加/減運算實現原理;熟悉運算器的數據傳輸通路。實驗環境Logisim是一款數字電路模擬的教育軟…

四大技巧輕松搞定云容器

云容器技術,作為傳統虛擬化管理程序的一種替代品,正稱霸著云市場。容器是輕量級的,并提供增強的便攜性,允許應用在平臺之間遷移,而不需要開發者重做或重新架構應用。但是,盡管其好處讓開發人員感到驚嘆&…

Android 圖文混排 通過webview實現并實現點擊圖片

在一個開源項目看到是用的webview 實現的 1. 這是在asset中的一個模板html <html> <head> <title>News Detail</title> <meta name"viewport" content"widthdevice-width, minimum-scale0.5, initial-scale1.2, maximum-scale2.0…

h5engine造輪子

基于學習的造輪子&#xff0c;這是一個最簡單&#xff0c;最基礎的一個canvas渲染引擎&#xff0c;通過這個引擎架構&#xff0c;可以很快的學習canvas渲染模式&#xff01; 地址&#xff1a;https://github.com/RichLiu1023/h5engine 這是一個比較有意思的h5渲染引擎&#xff…

計算機硬件選型報價,組裝電腦硬件該怎么選擇?這幾個硬件要舍得花錢,千萬別買錯了!...

原標題&#xff1a;組裝電腦硬件該怎么選擇&#xff1f;這幾個硬件要舍得花錢&#xff0c;千萬別買錯了&#xff01;組裝電腦是多硬件組合的產物&#xff0c;每一個硬件對于電腦的性能都是有影響的&#xff0c;影響的大小與電腦的硬件有直接關系&#xff0c;有些硬件就要舍得花…

2017 省賽選撥 想打架嗎?算我一個!所有人,都過來!(3) 遞推 斐波拉數列的應用...

想打架嗎&#xff1f;算我一個&#xff01;所有人&#xff0c;都過來&#xff01;(3) Submit Page Summary Time Limit: 2 Sec Memory Limit: 128 Mb Submitted: 28 Solved: 9 Description 現在《爐石傳說》這款卡牌游戲已經風靡全球。2015年加入環境的“…

UITableViewCell中cell重用機制導致內容重復的方法

UITableView繼承自UIScrollview,是蘋果為我們封裝好的一個基于scroll的控件。上面主要是一個個的UITableViewCell,可以讓UITableViewCell響應一些點擊事件&#xff0c;也可以在UITableViewCell中加入UITextField或者UITextView等子視圖&#xff0c;使得可以在cell上進行文字編輯…

高級會計師計算機考試中級,會計師需要計算機等級考試嗎

塵伴考證達人06-19TA獲得超過671個贊[color#000][font宋體][size3][alignleft]廣東省高級會計師評審職稱外語&#xff0c;執行《關于調整完善我省職稱外語政策的通知》(粵人發〔2018〕120號)[/align][alignleft]三、報考職稱外語考試的等級要求[b][size3](一)申報高教、科研、衛…

一 手游開發工具cocos2d-x editor初識

可學習的demo&#xff1a; 7個實戰項目 flappybird&#xff08;飛揚小鳥&#xff09;、popstar&#xff08;消滅星星&#xff09;、fruitninja&#xff08;水果忍者&#xff09;、2048&#xff08;數度消除&#xff09;。 moonwarriors&#xff08;月亮戰神&#xff09;、frui…

Provisioning Services 7.6 入門到精通系列之七:創建虛擬磁盤

在上一章節完成了主目標設備的準備&#xff0c;今天將揭曉如何通過映像向導創建虛擬磁盤。1.1 點擊開始菜單”映像向導”1.2 在映像向導點擊”下一步“1.3 輸入PVS服務器信息&#xff0c;下一步1.4 點擊”新建虛擬磁盤”1.5 輸入新虛擬磁盤的相關信息&#xff0c;下一步1.6 配置…

在使用多表的查詢顯示的時候 建議使用視圖

如果沒有查詢只是需要第一次顯示的話用linq表達式就可以了&#xff0c;如果還涉及到查詢的話&#xff0c;linq表達式就很麻煩了&#xff0c;我還不會。所以我們用視圖做查詢就方便很多了。轉載于:https://www.cnblogs.com/woshijishu3/p/4207567.html

大型網站技術架構03

永無止境&#xff1a;網站的伸縮性架構 1. 所謂網站的伸縮性是指不需要改變網站的軟硬件設計&#xff0c;僅僅通過改變部署的服務器數量就可以擴大或者縮小網站的服務能力。 2. 網站架構的伸縮性設計&#xff1a; 1). 不同功能進行物理分離實現伸縮性&#xff1a;通過增加服務器…

全國職業院校技能大賽軟件測試題目,我校喜獲2018全國職業院校技能大賽“軟件測試”賽項一等獎...

九江職院新聞網訊(信息工程學院)5月31日&#xff0c;從2018全國職業院校技能大賽傳來喜訊&#xff0c;由我校信息工程學院教師艾迪、朱虎平指導&#xff0c;學生郭星宏、賴閩、吳宗霖組成的競賽團隊&#xff0c;代表江西省在高職組“軟件測試”賽項中榮獲團體一等獎的佳績。為積…

兩個數組a[N],b[N],其中A[N]的各個元素值已知,現給b[i]賦值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];...

轉自&#xff1a;http://blog.csdn.net/shandianling/article/details/8785269 問題描述&#xff1a;兩個數組a[N]&#xff0c;b[N]&#xff0c;其中A[N]的各個元素值已知&#xff0c;現給b[i]賦值&#xff0c;b[i] a[0]*a[1]*a[2]…*a[N-1]/a[i]&#xff1b; 要求&#xff1a…

protobuf---messge嵌套get set

package test_namespace;message ChildMsg {optional string child 1; }message FatherMsg {optional string father 1; optional ChildMsg child_msg 2; } 或者 message FatherMsg {optional string father 1; message ChildMsg {optional string child 1;}optiona…

南方科技大學計算機交換生,國際合作 – 合作交流分類 – 南方科技大學生物醫學工程系...

2019年秋季學期本科生赴麻省理工交流學習項目申請須知本項目是根據南方科技大學與麻省理工簽訂的合作協議&#xff0c;約定我校每年將選派不超過6名學生前往麻省理工學院進行為期一年的交流學習&#xff0c;學生僅可在機械工程系內選擇課程。本批次將選拔優秀本科生于2019-2010…

利用VOIP電話通信服務,他騙得18億美元

VoIP電話服務公司TelexFree的CEO詹姆斯梅里爾承認他的公司是一個不折不扣的&#xff0c;擁有18億美元金字塔式的旁氏騙局公司。 沒想到VOIP技術也能成為詐騙犯罪的“工具” 本周一&#xff0c;在美國馬薩諸塞州的一個地方法院&#xff0c;詹姆斯梅里爾被認定有罪。并具有九項罪…

無鎖的環形隊列

#ifndef _RingQueue_H_ #define _RingQueue_H_ #include <memory.h> template<class T, unsigned int MAX_LEN 1024> class RingQueue { public://-----------------------------------------------------// 構造//---------------------------------------------…