不平衡数据处理
常用的分類算法一般假設(shè)不同類的比例是均衡的,現(xiàn)實生活中經(jīng)常遇到不平衡的數(shù)據(jù)集,比如廣告點擊預(yù)測(點擊轉(zhuǎn)化率一般都很小)、商品推薦(推薦的商品被購買的比例很低)、信用卡欺詐檢測等等。
對于不平衡數(shù)據(jù)集,一般的分類算法都傾向于將樣本劃分到多數(shù)類,體現(xiàn)在整體的準(zhǔn)確率很高。
但對于極不均衡的分類問題,比如僅有1%的人是壞人,99%的人是好人,最簡單的分類就是將所有人都劃分為好人,都能得到99%的準(zhǔn)確率,顯然這樣的分類并沒有提供任何的信息。
處理不平衡數(shù)據(jù),可以從兩方面考慮:
一是改變數(shù)據(jù)分布,從數(shù)據(jù)層面使得類別更為平衡;
二是改變分類算法,在傳統(tǒng)分類算法的基礎(chǔ)上對不同類別采取不同的加權(quán)方式,使得更看重少數(shù)類。
本文主要從數(shù)據(jù)的角度出發(fā),主要方法為采樣,分為欠采樣和過采樣以及對應(yīng)的一些改進(jìn)方法。
一、欠采樣
隨機(jī)欠采樣
減少多數(shù)類樣本數(shù)量最簡單的方法便是隨機(jī)剔除多數(shù)類樣本,可以事先設(shè)置多數(shù)類與少數(shù)類最終的數(shù)量比例,在保留少數(shù)類樣本不變的情況下,根據(jù)比例隨機(jī)選擇多數(shù)類樣本。
優(yōu)點:操作簡單,只依賴于樣本分布,不依賴于任何距離信息。
缺點:會丟失一部分多數(shù)類樣本的信息,無法充分利用已有信息。
Tomek links方法
首先來看一些定義。假設(shè)樣本點
首先來看一些定義。
假設(shè)樣本點xi和xj屬于不同的類別,d(xi,xj)表示兩個樣本點之間的距離。
稱(xi,xj)為一個Tomek link對,如果不存在第三個樣本點xl使得d(xl,xi)<d(xi,xj)或者d(xl,xj)<d(xi,xj)成立。
容易看出,如果兩個樣本點為Tomek link對,則其中某個樣本為噪聲(偏離正常分布太多)或者兩個樣本都在兩類的邊界上。
下圖是對Tomek link對的直觀解釋(其中加號為少數(shù)類,減號為多數(shù)類):A、B、C中的樣本在兩類的邊界上,D、E中的多數(shù)類樣本均為噪聲。
Tomek link對一般有兩種用途:
欠采樣:將Tomek link對中屬于多數(shù)類的樣本剔除。
數(shù)據(jù)清洗:將Tomek link對中的兩個樣本都剔除。
NearMiss方法
NearMiss方法是利用距離遠(yuǎn)近剔除多數(shù)類樣本的一類方法,實際操作中也是借助kNN,總結(jié)起來有以下幾類:
NearMiss-1:在多數(shù)類樣本中選擇與最近的3個少數(shù)類樣本的平均距離最小的樣本。
NearMiss-2:在多數(shù)類樣本中選擇與最遠(yuǎn)的3個少數(shù)類樣本的平均距離最小的樣本。
NearMiss-3:對于每個少數(shù)類樣本,選擇離它最近的給定數(shù)量的多數(shù)類樣本。
NearMiss-1和NearMiss-2方法的描述僅有一字之差,但其含義是完全不同的:NearMiss-1考慮的是與最近的3個少數(shù)類樣本的平均距離,是局部的;NearMiss-2考慮的是與最遠(yuǎn)的3個少數(shù)類樣本的平均距離,是全局的。
NearMiss-1方法得到的多數(shù)類樣本分布也是“不均衡”的,它傾向于在比較集中的少數(shù)類附近找到更多的多數(shù)類樣本,而在孤立的(或者說是離群的)少數(shù)類附近找到更少的多數(shù)類樣本,原因是NearMiss-1方法考慮的局部性質(zhì)和平均距離。
NearMiss-3方法則會使得每一個少數(shù)類樣本附近都有足夠多的多數(shù)類樣本,顯然這會使得模型的精確度高、召回率低。
論文中有對這幾種方法的比較,得到的結(jié)論是NearMiss-2的效果最好,不過這也是需要綜合考慮數(shù)據(jù)集和采樣比例的不同造成的影響。
二、過采樣
隨機(jī)過采樣
與欠采樣對應(yīng),增加少數(shù)類樣本數(shù)量最簡單的方法便是隨機(jī)復(fù)制少數(shù)類樣本,可以事先設(shè)置多數(shù)類與少數(shù)類最終的數(shù)量比例,在保留多數(shù)類樣本不變的情況下,根據(jù)ratio隨機(jī)復(fù)制少數(shù)類樣本。
在使用的過程中為了保證所有的少數(shù)類樣本信息都會被包含,可以先完全復(fù)制一份全量的少數(shù)類樣本,再隨機(jī)復(fù)制少數(shù)類樣本使得數(shù)量比例滿足給定的ratio。
優(yōu)點:操作簡單,只依賴于樣本分布,不依賴于任何距離信息,屬于非啟發(fā)式方法。
缺點:重復(fù)樣本過多,容易造成分類器的過擬合。
SMOTE
SMOTE全稱為Synthetic Minority Over-sampling Technique,主要思想來源于手寫字識別:對于手寫字的圖片而言,旋轉(zhuǎn)、扭曲等操作是不會改變原始類別的(要排除翻轉(zhuǎn)和180度大規(guī)模旋轉(zhuǎn)這類的操作,因為會使得“9”和“6”的類別發(fā)生變化),因而可以產(chǎn)生更多的樣本。
SMOTE的主要思想也是通過在一些位置相近的少數(shù)類樣本中生成新樣本達(dá)到平衡類別的目的,由于不是簡單地復(fù)制少數(shù)類樣本,因此可以在一定程度上避免分類器的過度擬合。具體如下圖:
其算法流程如下:
設(shè)置向上采樣的倍率為N,即對每個少數(shù)類樣本都需要產(chǎn)生對應(yīng)的N個少數(shù)類新樣本。
對少數(shù)類中的每一個樣本x,搜索得到其k(通常取5)個少數(shù)類最近鄰樣本,并從中隨機(jī)選擇N個樣本,記為y1,y2,…,yN(可能有重復(fù)值)。
構(gòu)造新的少數(shù)類樣本rj=x+rand(0,1)∗(yj−x),其中rand(0,1)表示區(qū)間(0,1)內(nèi)的隨機(jī)數(shù)。
Borderline SMOTE
原始的SMOTE算法對所有的少數(shù)類樣本都是一視同仁的,但實際建模過程中發(fā)現(xiàn)那些處于邊界位置的樣本更容易被錯分,因此利用邊界位置的樣本信息產(chǎn)生新樣本可以給模型帶來更大的提升。Borderline SMOTE便是將原始SMOTE算法和邊界信息結(jié)合的算法。它有兩個版本:Borderline SMOTE-1和Borderline SMOTE-2。
Borderline SMOTE-1算法流程:
1 記整個訓(xùn)練集合為T,少數(shù)類樣本集合為P,多數(shù)類樣本集合為N。對P中的每一個樣本xi,在整個訓(xùn)練集合T中搜索得到其最近的m個樣本,記其中少數(shù)類樣本數(shù)量為mi。
3對DANGER中的每一個樣本點,采用普通的SMOTE算法生成新的少數(shù)類樣本。
Borderline SMOTE-2和Borderline SMOTE-1是很類似的,區(qū)別是在得到DANGER集合之后,對于DANGER中的每一個樣本點xi:
Borderline SMOTE-1:從少數(shù)類樣本集合P中得到k個最近鄰樣本,再隨機(jī)選擇樣本點和xi作隨機(jī)的線性插值產(chǎn)生新的少數(shù)類樣本。(和普通SMOTE算法流程相同)
Borderline SMOTE-2:從少數(shù)類樣本集合P和多數(shù)類樣本集合N中分別得到k個最近鄰樣本Pk和Nk。設(shè)定一個比例α,在Pk中選出α比例的樣本點和xi作隨機(jī)的線性插值產(chǎn)生新的少數(shù)類樣本,方法同Borderline SMOTE-1;在Nk中選出1−α比例的樣本點和xi作隨機(jī)的線性插值產(chǎn)生新的少數(shù)類樣本,此處的隨機(jī)數(shù)范圍選擇的是(0,0.5),即使得產(chǎn)生的新的樣本點更靠近少數(shù)類樣本。
下圖可以幫助我們直觀理解Borderline SMOTE的基本想法。考慮最近的m=5個樣本:
對于A而言,最近的5個樣本均屬于多數(shù)類樣本,認(rèn)為A為噪聲點,在其附近產(chǎn)生少數(shù)類樣本會使得噪聲的影響更大
對于C而言,最近的5個樣本中有3個屬于少數(shù)類樣本,2個屬于多數(shù)類樣本,此類樣本是不容易被錯分的,認(rèn)為C為安全點
對于B而言,最近的5個樣本中有2個屬于少數(shù)類樣本,3個屬于多數(shù)類樣本,此類樣本容易被錯分,認(rèn)為B處于少數(shù)類的邊界上,加入危險集
最終只會對B這類的樣本點做SMOTE操作
三、綜合采樣
目前為止我們使用的重采樣方法幾乎都是只針對某一類樣本:對多數(shù)類樣本欠采樣,對少數(shù)類樣本過采樣。也有人提出將欠采樣和過采樣綜合的方法,解決樣本類別分布不平衡和過擬合問題,本部分介紹其中的兩個例子:SMOTE+Tomek links和SMOTE+ENN。
SMOTE+Tomek links
SMOTE+Tomek links方法的算法流程非常簡單:
利用SMOTE方法生成新的少數(shù)類樣本,得到擴(kuò)充后的數(shù)據(jù)集T
剔除T中的Tomek links對。
普通SMOTE方法生成的少數(shù)類樣本是通過線性差值得到的,在平衡類別分布的同時也擴(kuò)張了少數(shù)類的樣本空間,產(chǎn)生的問題是可能原本屬于多數(shù)類樣本的空間被少數(shù)類“入侵”(invade),容易造成模型的過擬合。
Tomek links對尋找的是那種噪聲點或者邊界點,可以很好地解決“入侵”的問題。
下圖紅色加號為SMOTE產(chǎn)生的少數(shù)類樣本,可以看到,紅色樣本“入侵”到原本屬于多數(shù)類樣本的空間,這種噪聲數(shù)據(jù)問題可以通過Tomek links很好地解決。
由于第一步SMOTE方法已經(jīng)很好地平衡了類別分布,因此在使用Tomek links對的時候考慮剔除所有的Tomek links對(而不是只剔除Tomek links對中的多數(shù)類)。
SMOTE+ENN
SMOTE+ENN方法和SMOTE+Tomek links方法的想法和過程都是很類似的:
利用SMOTE方法生成新的少數(shù)類樣本,得到擴(kuò)充后的數(shù)據(jù)集T。
對T中的每一個樣本使用kNN(一般k取3)方法預(yù)測,若預(yù)測結(jié)果和實際類別標(biāo)簽不符,則剔除該樣本。
總結(jié)
- 上一篇: dubbo源码阅读-配置(三)之注解配置
- 下一篇: 【硬件】Realtek RTL9210固