分類是機(jī)器學(xué)習(xí)最常見的問題之一,處理它的最佳方法是從分析和探索數(shù)據(jù)集開始,即從探索式數(shù)據(jù)分析(Exploratory Data Analysis,EDA)開始。除了生成盡可能多的數(shù)據(jù)見解和信息,它還用于查找數(shù)據(jù)集中可能存在的任何問題。在分析用于分類的數(shù)據(jù)集時(shí),類別不平衡是常見問題之一。
什么是數(shù)據(jù)不平衡(類別不平衡)?
數(shù)據(jù)不平衡通常反映了數(shù)據(jù)集中類別的不均勻分布。例如,在信用卡欺詐檢測(cè)數(shù)據(jù)集中,大多數(shù)信用卡交易類型都不是欺詐,僅有很少一部分類型是欺詐交易,如此以來,非欺詐交易和欺詐交易之間的比率達(dá)到50:1。本文中,我將使用來自Kaggle的信用卡欺詐交易數(shù)據(jù)數(shù)據(jù)集,你可以從這里下載。
首先,我們先繪制類分布圖,查看不平衡情況。

如你所見,非欺詐交易類型數(shù)據(jù)數(shù)量遠(yuǎn)遠(yuǎn)超過欺詐交易類型。如果我們?cè)诓唤鉀Q這個(gè)類別不平衡問題的情況下訓(xùn)練了一個(gè)二分類模型,那么這個(gè)模型完全是有偏差的,稍后我還會(huì)向你演示它影響特征相關(guān)性的過程并解釋其中的原因。
現(xiàn)在,我們來介紹一些解決類別不平衡問題的技巧,你可以在這里找到完整代碼的notebook。
重采樣(過采樣和欠采樣)

這聽起來很直接。欠采樣就是一個(gè)隨機(jī)刪除一部分多數(shù)類(數(shù)量多的類型)數(shù)據(jù)的過程,這樣可以使多數(shù)類數(shù)據(jù)數(shù)量可以和少數(shù)類(數(shù)量少的類型)相匹配。
對(duì)多數(shù)類進(jìn)行欠采樣
對(duì)數(shù)據(jù)集進(jìn)行欠采樣之后,我重新畫出了類型分布圖(如下),可見兩個(gè)類型的數(shù)量相等。

平衡數(shù)據(jù)集(欠采樣)
第二種重采樣技術(shù)叫過采樣,這個(gè)過程比欠采樣復(fù)雜一點(diǎn)。它是一個(gè)生成合成數(shù)據(jù)的過程,試圖學(xué)習(xí)少數(shù)類樣本特征隨機(jī)地生成新的少數(shù)類樣本數(shù)據(jù)。對(duì)于典型的分類問題,有許多方法對(duì)數(shù)據(jù)集進(jìn)行過采樣,最常見的技術(shù)是SMOTE(Synthetic Minority Over-sampling Technique,合成少數(shù)類過采樣技術(shù))。簡單地說,就是在少數(shù)類數(shù)據(jù)點(diǎn)的特征空間里,根據(jù)隨機(jī)選擇的一個(gè)K最近鄰樣本隨機(jī)地合成新樣本。
還記得我說過不平衡的數(shù)據(jù)會(huì)影響特征相關(guān)性嗎?讓我向您展示處理不平衡類問題前后的特征相關(guān)性。
重采樣之后:
請(qǐng)注意,現(xiàn)在特征相關(guān)性更明顯了。在解決不平衡問題之前,大多數(shù)特征并沒有顯示出相關(guān)性,這肯定會(huì)影響模型的性能。除了會(huì)關(guān)系到整個(gè)模型的性能,特征性相關(guān)性還會(huì)影響ML模型的性能,因此修復(fù)類別不平衡問題非常重要。
集成方法(采樣器集成)
在機(jī)器學(xué)習(xí)中,集成方法會(huì)使用多種學(xué)習(xí)算法和技術(shù),以獲得比單獨(dú)使用其中一個(gè)算法更好的性能(是的,就像一個(gè)民主投票系統(tǒng))。當(dāng)使用集合分類器時(shí),bagging方法變得流行起來,它通過構(gòu)建多個(gè)分類器在隨機(jī)選擇的不同數(shù)據(jù)集上進(jìn)行訓(xùn)練。在scikit-learn庫中,有一個(gè)名叫“Bagging Classifier”的集成分類器,然而這個(gè)分類器不能訓(xùn)練不平衡數(shù)據(jù)集。當(dāng)訓(xùn)練不平衡數(shù)據(jù)集時(shí),這個(gè)分類器將會(huì)偏向多數(shù)類,從而創(chuàng)建一個(gè)有偏差的模型。
為了解決這個(gè)問題,我們可以使用imblearn庫中的BalancedBaggingClassifier。它允許在訓(xùn)練集成分類器中每個(gè)子分類器之前對(duì)每個(gè)子數(shù)據(jù)集進(jìn)行重采樣。
因此,BalancedBaggingClassifier除了需要和Scikit Learn BaggingClassifier相同的參數(shù)以外,還需要2個(gè)參數(shù)sampling_strategy和replacement來控制隨機(jī)采樣器的執(zhí)行。
使用集合采樣器訓(xùn)練不平衡數(shù)據(jù)集
這樣,您就可以訓(xùn)練一個(gè)分類器來處理類別不平衡問題,而不必在訓(xùn)練前手動(dòng)進(jìn)行欠采樣或過采樣。總之,每個(gè)人都應(yīng)該知道,建立在不平衡數(shù)據(jù)集上的ML模型會(huì)難以準(zhǔn)確預(yù)測(cè)稀有點(diǎn)和少數(shù)點(diǎn),整體性能會(huì)受到限制。因此,識(shí)別和解決這些點(diǎn)的不平衡對(duì)生成模型的質(zhì)量和性能是至關(guān)重要的。
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8553瀏覽量
136928 -
數(shù)據(jù)分析
+關(guān)注
關(guān)注
2文章
1516瀏覽量
36208
原文標(biāo)題:一文教你如何處理不平衡數(shù)據(jù)集(附代碼)
文章出處:【微信號(hào):BigDataDigest,微信公眾號(hào):大數(shù)據(jù)文摘】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何理解矢量測(cè)量中“平衡”與“不平衡
基于主動(dòng)學(xué)習(xí)不平衡多分類AdaBoost改進(jìn)算法
手把手教你解決-深度學(xué)習(xí)訓(xùn)練數(shù)據(jù)不平衡問題
三相電壓不平衡產(chǎn)生原因_三相電壓不平衡的治理措施
三相不平衡有哪些處理方法
為什么三相變頻電源出現(xiàn)不平衡?如何處理?
教你如何處理不平衡數(shù)據(jù)集
評(píng)論