機器學習作為數(shù)據(jù)分析的一種重要技術(shù)手段,正成為一家企業(yè)實現(xiàn)數(shù)據(jù)智能的關(guān)鍵,通過學術(shù)界和工業(yè)界對模型和算法的不斷優(yōu)化,通用的模型在部分領域的分類準確度已經(jīng)超越了人類的水平。但是在信息化和智能化的道路上產(chǎn)生的自然數(shù)據(jù)往往將有用的信息掩藏較深,面對這樣未經(jīng)科學方法預先處理的數(shù)據(jù)即便是強大的神經(jīng)網(wǎng)絡都難以給出正確的決策,因此在機器學習中數(shù)據(jù)往往扮演著很重要的角色。
我們實踐獲得的需求中發(fā)現(xiàn)數(shù)據(jù)不均衡是實際分析數(shù)據(jù)時最常見的問題之一,接下來的篇幅中就和大家聊一聊數(shù)據(jù)集不均衡的問題給大家一些實際分析數(shù)據(jù)的一些建議和啟發(fā)。
問題的定義
數(shù)據(jù)不均衡是指在待分析的數(shù)據(jù)中,不同類別的樣本數(shù)量的比例失調(diào)的現(xiàn)象。這種現(xiàn)象高頻的出現(xiàn)在實際生產(chǎn)和需求中。例如:
1.在信用卡欺詐的案件中,欺詐大約只占據(jù)信用卡業(yè)務中2%的比例。
2.電力公司在檢查偷電漏電的事件中,發(fā)生的概率只有4.1%。
3.通過對硬件I/O口的監(jiān)控實現(xiàn)判斷硬件的工作狀態(tài),通常硬件發(fā)生故障的概率不足0.5%。
類似于上述情況的現(xiàn)象在生產(chǎn)環(huán)境中還會有很多,并且通常在這樣的問題中我們的關(guān)注點主要集中在數(shù)量較少的那一方。在這樣的數(shù)據(jù)中我們將較少的那一方稱為正樣本。一個常用的描述描述數(shù)據(jù)不均衡程度的指標IR(Imbalance Ratio)如下:
nMaj?分子(Majority)是多數(shù)樣本的數(shù)量,nMin?分母(Minority)是少量樣本的數(shù)量,通常大家會很自然的認為IR的數(shù)值越大分類器就越難從中學習并正確的分類正樣本。然而數(shù)據(jù)的分類的效果其實和IR的值沒有明顯的依賴關(guān)系。
下圖中展示了三種擁有同樣IR值的數(shù)據(jù),對于圖a這樣的分布獨立的數(shù)據(jù)集基本不需要任何額外的處理方法就能使得分類器很好的將正樣本和負樣本區(qū)分開。
在圖b中正樣本和負樣本完全均勻的重合在一起,這樣的數(shù)據(jù)集無論采用什么策略來處理數(shù)據(jù)得到的最好的結(jié)果都只是分出一半的正樣本,同時損失一半負樣本的精度。
圖c中正樣本和負樣本只有部分使重合的,在這種情況下如果采用合適的策略處理數(shù)據(jù)是可以將正樣本正確的區(qū)分出來同時保證負樣本的精度不會下降太多,在接下來提出的方法主要針對c圖所處的條件下。
解決方法
在數(shù)據(jù)不均衡的場景中并沒有什么固定的方法或者對所有情況都適用的策略,采取什么策略一切都得依據(jù)真實數(shù)據(jù)來定,更普遍的情況是在數(shù)據(jù)上嘗試不同的方法最后根據(jù)科學的評估指標選取一種或者幾種策略。基本考慮的幾個思路的方向是采用一些策略使得正負樣本更加均衡,調(diào)整不同類別的權(quán)重,在訓練模型時對少量的樣本施加更大的懲罰等。這些策略大體分為兩個層面,分別是數(shù)據(jù)層面和算法層面,接下來展開討論。
數(shù)據(jù)層面的策略
1.欠采樣和過采樣
過采樣就是簡單隨機復制少數(shù)類別的樣本,使得最終的數(shù)量和多數(shù)類別均衡。欠采樣就是隨機抽取數(shù)量較多類別的樣本,使得最終的樣本均衡。方法雖然簡單但是也是最直接有效的辦法。此處需要避開一個誤區(qū),有的讀者可能認為欠采樣是減少樣本這樣會減少正樣本的有效信息而過采樣不會產(chǎn)生這種情況,實際條件下真實數(shù)據(jù)中都會存在噪聲,復制少量樣本進行填充也會將噪聲更多的引入也會影響分類器的決策。
2.構(gòu)造新的樣本
由于隨機過采樣只是簡單復制樣本的策略來增加少數(shù)類樣本,這樣的方法容易產(chǎn)生一些模型過擬合的問題,使得模型學到的特征依賴數(shù)據(jù)分布而不夠泛化,于是提出了一些分析少數(shù)類別樣本并通過已有的樣本合成新數(shù)據(jù)添加入數(shù)據(jù)集訓練的方法。比較有代表性的是SMOTE(Synthetic Minority Oversampling Technique),算法原理如下:
(1)對于少數(shù)類中每一個樣本X,以歐氏距離為標準計算它到少數(shù)類樣本集?Smin?中所有樣本的距離,得到其k近鄰。
(2)根據(jù)樣本不平衡比例設置一個采樣比例以確定采樣倍率N,對于每一個少數(shù)類樣本,X從其k近鄰中隨機選擇若干個樣本,假設選擇的近鄰為
(3)對于每一個隨機選出的近鄰?,分別與原樣本按照如下的公式構(gòu)建新的樣本。
降采樣和過采樣都會具有一定自身的局限性,降采樣有概率遺失一些重要的數(shù)據(jù)信息,過采樣會引使得數(shù)據(jù)自身的噪聲放大,同時有風險產(chǎn)生模型過擬合,使用時需要結(jié)合實際數(shù)據(jù),并使用科學的評估指標選擇時候具體數(shù)據(jù)的處理方法和降采樣和過采樣的比例
算法層面的策略
在算法層面大體有以下的幾種思路:1.通過不均衡的數(shù)據(jù)集指定特殊的模型訓練策略。2.對現(xiàn)有的模型和決策方法引入代價敏感學習。3.改變思路將分類任務變?yōu)橐粋€無監(jiān)督的異常點檢測任務。
接下來針對這三個方向做詳細說明。
1.采用特殊的訓練策略
(1)在訓練神經(jīng)網(wǎng)絡時,假定多數(shù)類別樣本是少數(shù)類別樣本的N倍,在進行隨機梯度下降優(yōu)化時,遇到少數(shù)類別的樣本可以將該樣本重復訓練N次。
(2)假定少數(shù)類有m個樣本,對多數(shù)類樣本聚成N個簇,從這N個簇中心點的周圍抽出m個樣本,并將其與少數(shù)類混合,這樣就得到N個均衡的數(shù)據(jù)集,通過訓練得到N個分類器,將這N個分類器的決策結(jié)果以投票的方式(少數(shù)服從多數(shù))產(chǎn)生最終的分類。
(3)訓練三個分類器分別用C1、C2、C3表示,首先使得第一個分類器的輸出固定為多數(shù)類,之后將C1分錯的樣本提出,同時從分對的樣本中等量的隨機抽取樣本合成新的訓練集合D1,使用D1訓練C2,接著在將C2分錯數(shù)據(jù)和等量分對的數(shù)據(jù)打亂后合成集合D2,再使用D2訓練C3。最后采樣投票的方式產(chǎn)生決策結(jié)果,即只有當C2和C3的決策結(jié)果全為正樣本時結(jié)果才為正樣本,其他情況下為負樣本。
2.代價敏感學習
代價敏感學習(Cost-sensitive learning)的啟發(fā)來自分類問題中,錯誤的分類對現(xiàn)實造成的結(jié)果是不相同的,例如:在醫(yī)學診斷中將一陽性病例確診為陰性,和將陰性確診為陽性造成的后果是不一樣的。如何將現(xiàn)實中的后果轉(zhuǎn)化成一種代價反饋給模型,這就是代價敏感學習的研究內(nèi)容,通常代價被描述為一個代價矩陣如下所示:
通常情況下C00和C11位置表示分對結(jié)果所有代價為0,C01表示將第0類錯分為第1類的代價,C10表示第1類錯分為第0類的代價。從模型學習的角度出發(fā)學者們針對不同的分類器都提出了代價敏感的版本,例如:決策樹的代價敏感剪枝、代價敏感深度置信網(wǎng)絡、代價敏感支持向量機。還有基于模型的分類結(jié)果對最終的分類做代價敏感的后處理,和基于代價對訓練樣本施加權(quán)重,來獲得代價敏感的模型。
(1)基于代價學習的AdaCost模型
AdaCost是AdaBoost的代價敏感版本,AdaBoost的算法流程主要流程如下:
?
為訓練樣本的權(quán)重初始化,m為樣本的個數(shù)
? 之后循環(huán)訓練個基礎分類器,在第t輪中?
?為本次訓練的基礎分類器,??為該輪基礎分類器分類的錯誤的概率(如果該概率大于0.5則表示此分類器沒有任何效果就會退出循環(huán)),利用
計算出該分類器占最后決策的比重
。
? 使
用來更新下一輪數(shù)據(jù)的樣本的權(quán)重。
? 最后使用訓練的T個分類器和T個決策系數(shù) ,得出最終的分類結(jié)果。
了解了AdaBoost的原理后,任務就是要將代價系數(shù)??也加入到下一輪的樣本權(quán)重的決策上,所以修改如下公式:
改為
就產(chǎn)生了AdaCost算法。
(2)訓練模型時為樣本增加代價系數(shù)可以使得分類的界限更加明確如下圖所示是沒有代價系數(shù)模型(左圖)和增加代價系數(shù)(右圖)的分類效果:
圖中展示黑色和白色兩種類別的分類效果,可以看出左圖展示的模型分類使得類別分類的界限更加明確。
(3)同樣可以使用代價矩陣中的代價系數(shù)去合理的選取不同分類器最終的決策閾值使得區(qū)分出更加重要的決策結(jié)果,優(yōu)化的原理公式為:
其中 P(j|X)表示樣本x被分類器分為j類的概率,C(i,j)表示代價矩陣中的系數(shù)。
代價敏感學習實質(zhì)是一種思想和指導方法,可以將其應用在從數(shù)據(jù)選取到模型訓練的各個階段,每一種方法針對不同數(shù)據(jù)集的效果都可能會產(chǎn)生不等的差距,需要不斷嘗試在實際應用時科學評判不同的策略和算法.
在實際的應用中對于處理不平衡數(shù)據(jù)集的方法仍然還有很多,在面對實際數(shù)據(jù)時還有很多數(shù)據(jù)處理上的問題,需要大量的算法去嘗試和解決,在偶數(shù)的LittleBoy自動化機器學習平臺中已經(jīng)集成了大量的數(shù)據(jù)預處理、模型訓練、數(shù)據(jù)可視化的算法和工具,簡化了數(shù)據(jù)分析和數(shù)據(jù)智能的門檻,歡迎讀者來體驗。
本文首發(fā)自公號“偶數(shù)科技”第一時間了解更多信息歡迎關(guān)注哦~