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