舉個例子,在極端情況下,在總體為1000的樣本,若中有999個樣本標記為a類,有1個樣本標記為b類。則很明顯,a類與b類的樣本數偏差極大。一般認為當類別比例超過4:1時,則認為類別不均衡。
主要分為以下這兩種方式: 1.從資料集入手改變樣本分佈,降低不平衡程度 2.從學習演算法入手,修改演算法來適應不平衡的分類問題。且方式1更為簡單。
重取樣
重取樣方法是通過增加稀有類訓練樣本數的上取樣 (up-sampling)和減少大類樣本數的下取樣(down-samplings)使不平衡的樣本分佈變得比較平衡,從而提高分類器對稀有類的識別率 .
對於小樣本來說上取樣更合適
最原始的上取樣方法是複製稀有類的樣本 , 但是這樣做容易導致過學習, 並且對提高稀有類識 別率沒有太大幫助 .較高階的上取樣方法則採用一些啟發式技巧 , 有選擇地複製稀有類樣本 , 或者生成新的稀有類樣本。chawla等人提出的smote演算法是一種簡單有效的上取樣方法,該方法首先為每個稀有類樣本隨機選出幾個鄰近樣本,並且在該樣本與這些鄰近的樣本的連線上隨機取點,生成無重複的新的稀有類樣本。還有一些其他的方法,如新增隨機雜訊,還有一些其他的研究,具體可以看相關**。
這裡有smote演算法的多個不同語言的實現版本:
* python: unbalanceddataset模組提供了smote演算法的多種不同實現版本,以及多種重取樣演算法。
* r: dmwr package。
* weka: smote supervised filter。
但是上取樣方法並不增加任何新的資料 , 只是重複一些樣本或增加一些 人工生成的稀有類樣本 , 增加了訓練時間 .更危險的是 ,上取樣複製某些稀有類樣本 , 或者在它周圍生成新的稀有類樣本,使得分類器過分注重這些樣本,導致過學習.上取樣不能從本質上解決稀有類樣 本的稀缺性和資料表示的不充分性 。
//需要安裝imblearn庫,在此之前需要更新scipy等包的版本。imblearn所依賴包的版本如下:
機器學習分類問題中 訓練資料類別不均衡怎麼解決
碰到樣本資料類別不均衡怎麼辦?如果有 10000個樣例,做二分類,9990條資料 都屬於 正類1,如果不處理的話 全部結果為 1,準確率也為 99 但這顯然不是想要的結果。碰到這樣樣本很不平衡的樣例,應該怎樣做。def down sample df df1 df df label 1 正例df2 d...
機器學習中的類別不均衡問題
類別不均衡 指在分類演算法中,不同樣本類別的比例懸殊比較大,會對演算法的學習過程造成重大干擾。比如 乙個二分類的問題上,有1000個樣本,其中5個正樣本,995個負樣本,在這種情況下,演算法只需將所有的樣本 為負樣本,那麼它的精度也可以達到99.5 雖然結果的精度很高,但它依然沒有價值,因為這樣的學...
機器學習中分類問題
regression與線性回歸 linear regression 線性回歸 linear regression 損失函式 loss function 我們要找到最好的權重 引數 怎麼去衡量 最好 定義損失函式 最小化損失函式 梯度下降 gradient descend 逐步最小化損失函式的過程 如...