分類是機器學(xué)習(xí)最常見的問題之一,處理它的最佳方法是從分析和探索數(shù)據(jù)集開始,即從探索式數(shù)據(jù)分析(Exploratory Data Analysis,EDA)開始。除了生成盡可能多的數(shù)據(jù)見解和信息,它還用于查找數(shù)據(jù)集中可能存在的任何問題。在分析用于分類的數(shù)據(jù)集時,類別不平衡是常見問題之一。
什么是數(shù)據(jù)不平衡(類別不平衡)?
數(shù)據(jù)不平衡通常反映了數(shù)據(jù)集中類別的不均勻分布。例如,在信用卡欺詐檢測數(shù)據(jù)集中,大多數(shù)信用卡交易類型都不是欺詐,僅有很少一部分類型是欺詐交易,如此以來,非欺詐交易和欺詐交易之間的比率達(dá)到50:1。本文中,我將使用來自Kaggle的信用卡欺詐交易數(shù)據(jù)數(shù)據(jù)集,你可以從這里下載。
首先,我們先繪制類分布圖,查看不平衡情況。
如你所見,非欺詐交易類型數(shù)據(jù)數(shù)量遠(yuǎn)遠(yuǎn)超過欺詐交易類型。如果我們在不解決這個類別不平衡問題的情況下訓(xùn)練了一個二分類模型,那么這個模型完全是有偏差的,稍后我還會向你演示它影響特征相關(guān)性的過程并解釋其中的原因。
現(xiàn)在,我們來介紹一些解決類別不平衡問題的技巧,你可以在這里找到完整代碼的notebook。
重采樣(過采樣和欠采樣)
這聽起來很直接。欠采樣就是一個隨機刪除一部分多數(shù)類(數(shù)量多的類型)數(shù)據(jù)的過程,這樣可以使多數(shù)類數(shù)據(jù)數(shù)量可以和少數(shù)類(數(shù)量少的類型)相匹配。
對多數(shù)類進(jìn)行欠采樣
對數(shù)據(jù)集進(jìn)行欠采樣之后,我重新畫出了類型分布圖(如下),可見兩個類型的數(shù)量相等。
平衡數(shù)據(jù)集(欠采樣)
第二種重采樣技術(shù)叫過采樣,這個過程比欠采樣復(fù)雜一點。它是一個生成合成數(shù)據(jù)的過程,試圖學(xué)習(xí)少數(shù)類樣本特征隨機地生成新的少數(shù)類樣本數(shù)據(jù)。對于典型的分類問題,有許多方法對數(shù)據(jù)集進(jìn)行過采樣,最常見的技術(shù)是SMOTE(Synthetic Minority Over-sampling Technique,合成少數(shù)類過采樣技術(shù))。簡單地說,就是在少數(shù)類數(shù)據(jù)點的特征空間里,根據(jù)隨機選擇的一個K最近鄰樣本隨機地合成新樣本。
還記得我說過不平衡的數(shù)據(jù)會影響特征相關(guān)性嗎?讓我向您展示處理不平衡類問題前后的特征相關(guān)性。
重采樣之后:
請注意,現(xiàn)在特征相關(guān)性更明顯了。在解決不平衡問題之前,大多數(shù)特征并沒有顯示出相關(guān)性,這肯定會影響模型的性能。除了會關(guān)系到整個模型的性能,特征性相關(guān)性還會影響ML模型的性能,因此修復(fù)類別不平衡問題非常重要。
集成方法(采樣器集成)
在機器學(xué)習(xí)中,集成方法會使用多種學(xué)習(xí)算法和技術(shù),以獲得比單獨使用其中一個算法更好的性能(是的,就像一個民主投票系統(tǒng))。當(dāng)使用集合分類器時,bagging方法變得流行起來,它通過構(gòu)建多個分類器在隨機選擇的不同數(shù)據(jù)集上進(jìn)行訓(xùn)練。在scikit-learn庫中,有一個名叫“Bagging Classifier”的集成分類器,然而這個分類器不能訓(xùn)練不平衡數(shù)據(jù)集。當(dāng)訓(xùn)練不平衡數(shù)據(jù)集時,這個分類器將會偏向多數(shù)類,從而創(chuàng)建一個有偏差的模型。
為了解決這個問題,我們可以使用imblearn庫中的BalancedBaggingClassifier。它允許在訓(xùn)練集成分類器中每個子分類器之前對每個子數(shù)據(jù)集進(jìn)行重采樣。
因此,BalancedBaggingClassifier除了需要和Scikit Learn BaggingClassifier相同的參數(shù)以外,還需要2個參數(shù)sampling_strategy和replacement來控制隨機采樣器的執(zhí)行。
使用集合采樣器訓(xùn)練不平衡數(shù)據(jù)集
這樣,您就可以訓(xùn)練一個分類器來處理類別不平衡問題,而不必在訓(xùn)練前手動進(jìn)行欠采樣或過采樣。總之,每個人都應(yīng)該知道,建立在不平衡數(shù)據(jù)集上的ML模型會難以準(zhǔn)確預(yù)測稀有點和少數(shù)點,整體性能會受到限制。因此,識別和解決這些點的不平衡對生成模型的質(zhì)量和性能是至關(guān)重要的。
-
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132646 -
數(shù)據(jù)分析
+關(guān)注
關(guān)注
2文章
1449瀏覽量
34060
原文標(biāo)題:一文教你如何處理不平衡數(shù)據(jù)集(附代碼)
文章出處:【微信號:BigDataDigest,微信公眾號:大數(shù)據(jù)文摘】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論