原文:http://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650718717&idx=1&sn=85038d7c906c135120a8e1a2f7e565ad
選自 SVDS
作者: TOM FAWCETT
機(jī)器之心編譯
參與:孫睿、吳攀、李亞洲
本文作者 Tom Fawcett 在機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的實(shí)踐應(yīng)用上已有 20 多年的研究歷史,曾就職于 Verizon 和惠普實(shí)驗(yàn)室(HP Labs)等機(jī)構(gòu),也曾在斯坦福大學(xué)語(yǔ)言和信息的研究中心從事過(guò)研究工作;現(xiàn)任 Silicon Valley Data Science 首席數(shù)據(jù)科學(xué)家兼 Machine Learning Journal 編輯,著有《Data Science for Business》一書。文中提到的論文可點(diǎn)擊「閱讀原文」下載。
如果你是機(jī)器學(xué)習(xí)課程的新手,那么你使用過(guò)的數(shù)據(jù)庫(kù)很大程度上都是非常簡(jiǎn)單的。其中一個(gè)原因就是,當(dāng)你構(gòu)建分類器時(shí),樣本類都是平衡的——也就是說(shuō),每個(gè)類中的樣本數(shù)量是大致相同的。在教學(xué)中,數(shù)據(jù)庫(kù)通常是凈化過(guò)的,這樣老師才能夠把注意力集中在教授特定算法或技巧上,而不被其它問(wèn)題干擾。一般情況下,你遇到的樣本類似下方的二維圖表,其中的點(diǎn)代表樣本、點(diǎn)的不同顏色(或形狀)代表類:
分類算法的目標(biāo)是嘗試學(xué)習(xí)出一個(gè)能夠分辨二者的分離器(分類器)。根據(jù)不同的數(shù)學(xué)、統(tǒng)計(jì)或幾何假設(shè),達(dá)成這一目標(biāo)的方法很多:
然而,當(dāng)你開(kāi)始面對(duì)真實(shí)的、未加工過(guò)的數(shù)據(jù)時(shí),你會(huì)馬上注意到,這些數(shù)據(jù)要嘈雜且不平衡得多。真實(shí)數(shù)據(jù)的散點(diǎn)圖看起來(lái)更像是這樣的:
最主要的問(wèn)題是這些類是不平衡的:藍(lán)點(diǎn)的數(shù)量遠(yuǎn)超紅點(diǎn)。
對(duì)于不平衡類的研究通常認(rèn)為「不平衡」意味著少數(shù)類只占 10% 到 20% 。而在現(xiàn)實(shí)中,數(shù)據(jù)庫(kù)甚至能夠比上面的例子更加不平衡。以下是一些例子:
每年,約 2% 的信用卡賬戶是偽造的 [1]。(多數(shù)的欺詐檢測(cè)領(lǐng)域是極其不平衡的)
針對(duì)某一病征的醫(yī)學(xué)篩查通常涵蓋了許多沒(méi)有此病征的人,以檢查出少數(shù)患者(例:美國(guó)的 HIV 感染率約為 0.4%)
每年,硬盤驅(qū)動(dòng)器故障的發(fā)生率約為 1%
在線廣告的轉(zhuǎn)化率在 10^-3 到 10^-6 的范圍區(qū)間內(nèi)
工廠的產(chǎn)品缺陷率一般在 0.1% 左右
以上的許多領(lǐng)域都是不平衡的,因?yàn)樗鼈兪潜晃曳Q為「大海撈針問(wèn)題」的那一類。在這種情況中,機(jī)器學(xué)習(xí)分類器要從龐大的負(fù)面(不相關(guān))樣本中,尋找少量的正面(相關(guān)的、值得注意的)樣本。
當(dāng)你遇到類似的問(wèn)題時(shí),使用傳統(tǒng)的算法將會(huì)面臨困難。傳統(tǒng)的算法通常是偏向數(shù)量占優(yōu)的類,因?yàn)樗鼈兊膿p失函數(shù)會(huì)試圖最優(yōu)化相關(guān)數(shù)量,例如錯(cuò)誤率,而沒(méi)有將數(shù)據(jù)分布納入考慮范圍內(nèi)。[2]在最壞的情況中,少數(shù)類樣本會(huì)被視為多數(shù)類的異常點(diǎn)而被忽略,然后學(xué)習(xí)算法將生成一個(gè)簡(jiǎn)單的分類器,并將所有樣本分類到多數(shù)類下。
這看起來(lái)像是一種不正常的行為,但它真的不是。事實(shí)上,如果你的目標(biāo)是最大化精確度(也可以說(shuō),最小化錯(cuò)誤率),這是一個(gè)完全可以接受的解決方案。但是,如果我們假設(shè)那極其少量的類的樣本更需要被分類,那么我們不得不更將謹(jǐn)慎,并采取更復(fù)雜的方法來(lái)解決問(wèn)題。
如果你正在被這樣的問(wèn)題困擾,并希望得到實(shí)用的解決建議,往下看。
注:這篇博文的重點(diǎn)是提供解決此類問(wèn)題的實(shí)用建議。然而,這并不是一個(gè)手把手教你的代碼教程。我的 Jupyter Notebooks (https://silicon-valley-data-science.github.io/learning-from-imbalanced-classes/ImbalancedClasses.html )中有我測(cè)試這些想法的記錄,但在這篇文章中,我將只解釋一些基本的想法和原則。
處理不平衡的數(shù)據(jù)
從不平衡數(shù)據(jù)中學(xué)習(xí),是一項(xiàng)已被研究了 20 年之久的問(wèn)題。它曾是許多論文、研討會(huì)、特別議程的主題(一項(xiàng)最近的調(diào)查就有大約 220 個(gè)引用)。人們嘗試了許多方法,但結(jié)果各不相同,所以至今沒(méi)有得到明晰的答案。當(dāng)數(shù)據(jù)科學(xué)家們第一次遇到這個(gè)問(wèn)題,他們往往會(huì)問(wèn):「如果我的數(shù)據(jù)是不平衡的,我該怎么做?」而這一問(wèn)題是沒(méi)有固定答案的,就像你問(wèn)「哪個(gè)學(xué)習(xí)算法是最好的」一樣:答案取決于數(shù)據(jù)。
由此,我列出了一些方法的大致總結(jié),它們是以困難程度排序的:
什么也不做。有時(shí)好運(yùn)就這樣降臨在你的頭上:你什么都不需要做。你可以使用所謂的自然(或分層)分布來(lái)進(jìn)行訓(xùn)練,有時(shí)不需任何修改就能正常運(yùn)行。
通過(guò)某些方法使得數(shù)據(jù)更加平衡:
對(duì)少數(shù)類進(jìn)行過(guò)采樣
對(duì)多數(shù)類進(jìn)行欠采樣
合成新的少數(shù)類
舍棄所有少數(shù)類,切換成一個(gè)異常檢測(cè)框架。
在算法層面之上(或之后):
調(diào)整類的權(quán)重(錯(cuò)誤分類成本)
調(diào)整決策閾值
使已有的算法對(duì)少數(shù)類更加敏感
構(gòu)造一個(gè)在不平衡數(shù)據(jù)上表現(xiàn)更好的全新算法。
題外話:評(píng)估方面的可做與不可做
首先我要小小地跑題一下。在討論如何用不平衡數(shù)據(jù)訓(xùn)練分類器之前,我們必須先探討一下如何正確評(píng)估。這是最重要的一點(diǎn),因?yàn)槿绻悴恢涝撊绾握_度量你的成果,你也就不能取得進(jìn)展。
- 不要使用準(zhǔn)確度(錯(cuò)誤率)來(lái)評(píng)估你的分類器!因?yàn)檫@方面存在兩個(gè)顯著的問(wèn)題。準(zhǔn)確度使用天真的 0.50 的閾值來(lái)確定所屬的類別,而當(dāng)類不平衡時(shí),這常常會(huì)出錯(cuò)。第二,分類準(zhǔn)確度基于對(duì)錯(cuò)誤的簡(jiǎn)單計(jì)數(shù),而你應(yīng)該對(duì)此有更深入的了解。你應(yīng)該知道哪些類在哪些地方(得分的頂端、底端還是整體)出現(xiàn)了混淆?如果你對(duì)這些概念還不太了解,推薦閱讀:http://www.svds.com/classifiers2/ 。你應(yīng)該使用一個(gè) ROC 曲線、準(zhǔn)確度召回曲線(precision-recall curve)、Lift 曲線或利潤(rùn)(收益)曲線(profit (gain) curve)對(duì)分類器的表現(xiàn)進(jìn)行可視化。
ROC 曲線
Precision-recall curve
不要在你的分類器中使用困難的分類(標(biāo)簽)(使用 score[3]或 predict)。而是應(yīng)該使用 proba 或 predict_proba 進(jìn)行概率估計(jì)。
當(dāng)你得到概率估計(jì)之后,不要盲目地使用 0.50 的決策閾值來(lái)區(qū)分類別。應(yīng)該再檢查表現(xiàn)曲線之后再自己決定使用哪個(gè)閾值(下一節(jié)會(huì)談到更多)。因?yàn)檠芯空咴煺娴厥褂昧?0.5 作為截止線,所以早期的一些論文中出現(xiàn)了很多錯(cuò)誤。
不管你是用什么做訓(xùn)練的,你總是應(yīng)該在你的分類器將要運(yùn)行其上的自然的(分層的)分布上進(jìn)行測(cè)試。參考:sklearn.cross_validation.StratifiedKFold
不使用概率估計(jì)你也可能能夠成功,但如果你需要它們,要使用校準(zhǔn)。(參考:sklearn.calibration.CalibratedClassifierCV)
上面的兩幅二維圖總是比單純的數(shù)字所包含的信息更豐富,如果你需要單純的數(shù)字指標(biāo),下面這幾個(gè)可以很好地對(duì)應(yīng)準(zhǔn)確度:
ROC 曲線下的面積(AUC)是一個(gè)很好的一般統(tǒng)計(jì)。它等于一個(gè)隨機(jī)的正面樣本將得到比一個(gè)隨機(jī)的負(fù)面樣本更高排名的概率。
F1 分?jǐn)?shù)是(F1 Score)是準(zhǔn)確度(precision)和召回率(recall)的調(diào)和平均值。它常被用于尋找聚合度量(aggregate measure)時(shí)的文本處理中。
Cohen’s Kappa 系數(shù)是一種評(píng)估統(tǒng)計(jì),其考慮了偶然預(yù)期的協(xié)議的多少。
過(guò)采樣(oversampling)和欠采樣(undersampling)
最簡(jiǎn)單的方法只需要對(duì)處理步驟進(jìn)行一點(diǎn)點(diǎn)修改,并簡(jiǎn)單地涉及到調(diào)整樣本集直到它們達(dá)到平衡。過(guò)采樣會(huì)隨機(jī)復(fù)制少數(shù)樣例以增大它們的規(guī)模。欠采樣則隨機(jī)地少采樣主要的類。一些數(shù)據(jù)科學(xué)家(天真地)認(rèn)為過(guò)采樣更好,因?yàn)槠鋾?huì)得到更多的數(shù)據(jù),而欠采樣會(huì)將數(shù)據(jù)丟掉。但請(qǐng)記住復(fù)制數(shù)據(jù)不是沒(méi)有后果的——因?yàn)槠鋾?huì)得到復(fù)制出來(lái)的數(shù)據(jù),它就會(huì)使變量的方差表面上比實(shí)際上更小。而過(guò)采樣的好處是它也會(huì)復(fù)制誤差的數(shù)量:如果一個(gè)分類器在原始的少數(shù)類數(shù)據(jù)集上做出了一個(gè)錯(cuò)誤的負(fù)面錯(cuò)誤,那么將該數(shù)據(jù)集復(fù)制五次之后,該分類器就會(huì)在新的數(shù)據(jù)集上出現(xiàn)六個(gè)錯(cuò)誤。相對(duì)地,欠采樣會(huì)讓獨(dú)立變量(independent variable)的方差看起來(lái)比其實(shí)際的方差更高。
因?yàn)樗羞@些原因,不同的機(jī)器學(xué)習(xí)文獻(xiàn)在過(guò)采樣、欠采樣和使用自然分布之間也做出了不同的選擇。
大部分機(jī)器學(xué)習(xí)軟件包都可以進(jìn)行簡(jiǎn)單的采樣調(diào)整。R 中的 unbalanced中實(shí)現(xiàn)了很多專用于不平衡數(shù)據(jù)集的采樣技術(shù),scikit-learn.cross_validation 也有一些基本的采樣算法。
Wallace 等人的貝葉斯論證
Wallace、Small、Brodley 和 Trikalinos 的論文《Class Imbalance, Redux》中提出的關(guān)于類不平衡(class imbalance)的理論論證和使用建議可能是這方面做得最好的[4]。他們支持對(duì)多數(shù)類進(jìn)行欠采樣。他們的論證是數(shù)學(xué)的且徹底的,但這里我只給出他們用來(lái)證明自己觀點(diǎn)的一個(gè)例子。
他們認(rèn)為兩個(gè)類必須在一些解釋變量的一些分布的尾部能明顯區(qū)分開(kāi)。假設(shè)你有兩個(gè)帶有單個(gè)獨(dú)立變量 x 的類。其中每個(gè)類都是由標(biāo)準(zhǔn)差為 1 的高斯分布生成的。類 1 的均值是 1,類 2 的均值是 2. 我們?nèi)我獾貙㈩?2 定為多數(shù)類。它們看起來(lái)是這樣:
給定一個(gè) x 值,你會(huì)使用什么閾值來(lái)確定其來(lái)自哪一個(gè)類?很顯然這兩者之間最好的分割線是它們的中點(diǎn) x=1.5,如下圖中間的豎線所示:如果新樣本 x 的值低于 1.5,那它可能屬于類 1,否則其屬于類 2。在從樣本中進(jìn)行學(xué)習(xí)時(shí),我們期望在 1.5 處的分辨分割線是我們將會(huì)得到的結(jié)果;而且如果這兩個(gè)類是平衡的的話,那么這就會(huì)接近于我們應(yīng)該得到的結(jié)果。x 軸上的點(diǎn)表示從每個(gè)分布中生成的樣本。
但我們已經(jīng)說(shuō)過(guò)類 1 是少數(shù)類,所以假設(shè)我們從其中得到了 10 個(gè)樣本,而從類 2 得到了 50 個(gè)樣本。那我們就很可能學(xué)習(xí)到一個(gè)有所偏移的隔離線,就像這樣:
為了匹配少數(shù)類,我們可以通過(guò)欠采樣多數(shù)類來(lái)做到更好。問(wèn)題是我們所學(xué)習(xí)到的隔離線將具有較高的可變性(因?yàn)闃颖靖〉模缦滤荆ㄟ@里展示了 10 個(gè)樣本,得到了 10 條豎線):
所以最后還要使用 bagging 來(lái)講這些分類器結(jié)合起來(lái)。整個(gè)流程看起來(lái)是這樣:
這種技術(shù)還沒(méi)有在 Scikit-learn 中實(shí)現(xiàn),盡管已經(jīng)有一個(gè)名叫 blagging.py (balanced bagging)的文件可用——實(shí)現(xiàn)了一個(gè) BlaggingClassifier,可以平衡聚合(aggregation)之前的自舉樣本(bootstrapped samples)。
基于臨近的方法(Neighbor-based approaches)
過(guò)采樣和欠采樣都隨機(jī)選擇要調(diào)整的樣本的比例。其它方法則仔細(xì)地檢測(cè)實(shí)例空間(instance space)和決定在它們的鄰域(neighborhood)上做什么。
比如說(shuō), Tomek link 是指相反分類中實(shí)例的配對(duì),這些相反分類之間是最為臨近的。換句話說(shuō),它們是整體上非常接近的相反實(shí)例對(duì)。
Tomek 的算法可以尋找這樣的配對(duì),并移除配對(duì)中的多數(shù)實(shí)例。其中的思想是要明確少數(shù)類和多數(shù)類之間的界線,從而使少數(shù)類的區(qū)域更明顯。下圖給出了一個(gè)簡(jiǎn)單的 Tomek Link 移除的例子。R 包中的 unbalanced 能實(shí)現(xiàn) Tomek Link 移除,另外還有很多專用于不平衡數(shù)據(jù)集的采樣技術(shù)也可以。Scikit-learn 沒(méi)有做這件事的內(nèi)置模塊,但也有一些獨(dú)立的包可用(如:TomekLink:https://github.com/ojtwist/TomekLink)。
合成新樣本:SMOTE 及其衍生技術(shù)
研究的另一項(xiàng)技術(shù)不涉及對(duì)樣本的重采樣(resampling),而是合成新的樣本。這種方法最好的例子是 Chawla 的 SMOTE(Synthetic Minority Oversampling TEchnique:合成少數(shù)類過(guò)采樣技術(shù))系統(tǒng)。其思想是通過(guò)在已有的樣本間插值來(lái)創(chuàng)造新的少數(shù)類樣本。這項(xiàng)技術(shù)的大概過(guò)程如下圖所示。和前面一樣,假設(shè)我們有一個(gè)多數(shù)類樣本集和一個(gè)少數(shù)類樣本集:
SMOTE 取得了普遍的成功并衍生出了很多變體、擴(kuò)展和對(duì)不同概念的學(xué)習(xí)算法的適配。SMOTE 及其變體封裝在 R 語(yǔ)言的 unbalanced 包和 Python 中的 UnbalancedDataset 包中。
這里還要指出 SMOTE 的一個(gè)重大限制。因?yàn)樗窃谙∮械臉颖局g插值,所以它只能生成可用樣本范圍內(nèi)的樣本——永遠(yuǎn)不會(huì)生成例外的樣本。形式上,SMOTE 只能填入已有少數(shù)類樣本的凸包(Convex Hull)中,但不能創(chuàng)造在少數(shù)類樣本域之外的新樣本。
調(diào)整類的權(quán)重
許多機(jī)器學(xué)習(xí)工具包都有調(diào)整類的「重要性」的方法。比如 Scikit-learn 有許多可以使用可選的 class_weight 參數(shù)(可以設(shè)置成大于 1)的分類器。這里有一個(gè)直接從 scikit-learn 文檔中引用的例子,展示了將少數(shù)類的權(quán)重增加為 10 倍時(shí)的效果。黑色實(shí)線是使用默認(rèn)設(shè)置(所有類權(quán)重相等)時(shí)得到的分割邊界,而虛線則是少數(shù)類(紅色)的 class_weight 參數(shù)改變到 10 倍時(shí)的效果。
如你所見(jiàn),少數(shù)類的重要程度增加了(它的誤差被認(rèn)為比其它類的誤差的成本更高),分離的超平面(hyperplane)得到調(diào)整以降低損失。
應(yīng)該指出的是調(diào)整類的重要性通常只能影響類的誤差(假陰性(False Negatives),如果少數(shù)類是陽(yáng)性的話)成本。它會(huì)調(diào)整一個(gè)分離的平面并借此降低這些誤差。當(dāng)然,如果該分類器在訓(xùn)練集誤差上沒(méi)有錯(cuò)誤,那也就不需要調(diào)整,所以調(diào)整類權(quán)重可能就沒(méi)有效果。
更進(jìn)一步
這篇文章集中于相對(duì)簡(jiǎn)單的、方便的從不平衡數(shù)據(jù)中學(xué)習(xí)分類器的方式。大部分這些都涉及到在應(yīng)用標(biāo)準(zhǔn)學(xué)習(xí)算法之前或之后對(duì)數(shù)據(jù)進(jìn)行調(diào)整。這里還有一些其它方法值得一提。
新算法
從不平衡類進(jìn)行學(xué)習(xí)一直是機(jī)器學(xué)習(xí)使用每年引入的新算法進(jìn)行研究的一個(gè)領(lǐng)域。在總結(jié)之前,我先提幾個(gè)看起來(lái)有希望的算法進(jìn)展。
在 2014 年,Goh 和 Rudin 發(fā)表了論文《Box Drawings for Learning with Imbalanced Data》[5],該論文介紹了兩種從樣本偏斜的數(shù)據(jù)中學(xué)習(xí)的新算法。這些算法意圖圍繞少數(shù)類樣本集群創(chuàng)建「box」:
他們的目標(biāo)是開(kāi)發(fā)出對(duì)少數(shù)類的一個(gè)簡(jiǎn)明、智能的表征。他們的方程式會(huì)懲罰 box 的數(shù)量,而懲罰則被用作是一種正則化的形式。
他們介紹了兩種算法,一個(gè)(Exact Boxes)使用混合整數(shù)程序提供精確但相當(dāng)昂貴的解決方案;另一個(gè)(Fast Boxes) 使用一個(gè)更快的集群方法生成初始 box,而后進(jìn)行精煉。實(shí)驗(yàn)結(jié)果表明在大量測(cè)試數(shù)據(jù)集上,兩種算法都表現(xiàn)相當(dāng)好。
前面我提到解決不平衡問(wèn)題的一種方法是丟棄少數(shù)類樣本,把它當(dāng)成單獨(dú)分類(或異常檢測(cè))問(wèn)題。近期的一項(xiàng)異常檢測(cè)技術(shù)在該問(wèn)題上表現(xiàn)驚人。Liu、Ting 和 Zhou 介紹了一項(xiàng)名為 Isolation Forests 的技術(shù),識(shí)別數(shù)據(jù)中異常的方式是通過(guò)學(xué)習(xí)隨機(jī)森林,然后測(cè)量將每個(gè)特定數(shù)據(jù)點(diǎn)孤立所需的決策分類的平均值。結(jié)果得到的值能被用于計(jì)算每個(gè)數(shù)據(jù)點(diǎn)的異常得分,這個(gè)得分可被解釋為樣本所屬少數(shù)類的似然度。的確,作者們使用高度不平衡的數(shù)據(jù)測(cè)試了他們的系統(tǒng),并報(bào)告出了很好的結(jié)果。由 Bandaragoda、Ting、Albrecht、Liu 和 Wells 繼而完成的一篇論文介紹的 Nearest Neighbor Ensembles 是類似的思路,而且能夠解決 Isolation Forests 的一些短板。
購(gòu)買或者創(chuàng)造更多數(shù)據(jù)
本文的最后一部分的重點(diǎn)是在默認(rèn)給定不平衡數(shù)據(jù)并且需要解決該不平衡的情況下的不平衡類的問(wèn)題。在一些情況下,比如 Kaggle 競(jìng)賽,你會(huì)被給定固定的數(shù)據(jù)集,不能再要更多的數(shù)據(jù)。
但你可能面臨一個(gè)相關(guān)的、更難的問(wèn)題:你在少數(shù)類數(shù)據(jù)上沒(méi)有足夠的樣本。上面的介紹的技術(shù)沒(méi)有一個(gè)可行,你該怎么做?
現(xiàn)實(shí)中,你可以購(gòu)買或者創(chuàng)建一些領(lǐng)域中的少數(shù)類的樣本。這是機(jī)器學(xué)習(xí)領(lǐng)域也正在研究的一個(gè)領(lǐng)域。如果少數(shù)類數(shù)據(jù)需要人們進(jìn)行可靠的標(biāo)記,一個(gè)常用方法是通過(guò) Mechanical Turk 這樣的服務(wù)眾包出去。人類標(biāo)記的可靠性可能是一個(gè)問(wèn)題,但也有將人類標(biāo)記與可靠性優(yōu)化結(jié)合起來(lái)的研究。最后,Claudia Perlich 在她的演講(All The Data and Still Not Enough)中給出了一些例子:如何通過(guò)使用替代變量或問(wèn)題(surrogate variable or problems)修正數(shù)據(jù)缺乏或者沒(méi)有數(shù)據(jù)的問(wèn)題,或者如何使用代理和隱變量使看起來(lái)不可能的問(wèn)題變得可能。與之相關(guān)的還有遷移學(xué)習(xí)(transfer learning)的方法:將在一個(gè)問(wèn)題上學(xué)習(xí)到的結(jié)果遷移到另一個(gè)帶有稀少樣本的問(wèn)題上,參看論文《Machine learning for targeted display advertising: Transfer learning in action》。
資源和拓展閱讀
這里有數(shù)個(gè)說(shuō)明不平衡學(xué)習(xí)不同方面的 Jupyter notebooks 可用:
一個(gè)說(shuō)明高斯采樣的(sampled Gaussians)的 notebook 是在 Gaussians.ipynb:https://github.com/silicon-valley-data-science/learning-from-imbalanced-classes/blob/master/Gaussians.ipynb
一個(gè) Wallace 方法的簡(jiǎn)單實(shí)現(xiàn) blagging.py:https://github.com/silicon-valley-data-science/learning-from-imbalanced-classes/blob/master/blagging.py。這是 sklearn 現(xiàn)有的 bagging 實(shí)現(xiàn)的簡(jiǎn)單交叉,特別是./sklearn/ensemble/bagging.py.
使用這一方法的一個(gè) notebook 在 ImbalancedClasses.ipynb (https://github.com/silicon-valley-data-science/learning-from-imbalanced-classes/blob/master/ImbalancedClasses.ipynb)是開(kāi)放的。它可裝載于數(shù)個(gè)領(lǐng)域,并且在不同分布下與其他方法進(jìn)行了 blagging 對(duì)比。
在 MATLAB 上 Box Drawings 的源代碼:http://web.mit.edu/rudin/www/code/BoxDrawingsCode.zip
基于 R 語(yǔ)言的 Isolation Forests 源代碼:https://sourceforge.net/projects/iforest/
參考文獻(xiàn):
Natalie Hockham makes this point in her talk Machine learning with imbalanced data sets, which focuses on imbalance in the context of credit card fraud detection.
By definition there are fewer instances of the rare class, but the problem comes about because the cost of missing them (a false negative) is much higher.
The details in courier are specific to Python’s Scikit-learn.
“Class Imbalance, Redux”. Wallace, Small, Brodley and Trikalinos. IEEE Conf on Data Mining. 2011.
Box Drawings for Learning with Imbalanced Data.” Siong Thye Goh and Cynthia Rudin. KDD-2014, August 24–27, 2014, New York, NY, USA.
“Isolation-Based Anomaly Detection”. Liu, Ting and Zhou. ACM Transactions on Knowledge Discovery from Data, Vol. 6, No. 1. 2012.
“Efficient Anomaly Detection by Isolation Using Nearest Neighbour Ensemble.” Bandaragoda, Ting, Albrecht, Liu and Wells. ICDM-2014