更新時(shí)間:2020-09-14 來(lái)源:黑馬程序員 瀏覽量:
什么是類別不平衡問(wèn)題。其實(shí),在現(xiàn)實(shí)環(huán)境中,采集的數(shù)據(jù)(建模樣本)往往是比例失衡的。比如網(wǎng)貸數(shù)據(jù),逾期人數(shù)的比例是極低的(千分之幾的比例);奢侈品消費(fèi)人群鑒定等。
在這一節(jié)中,我們一起看一下,當(dāng)遇到數(shù)據(jù)類別不平衡的時(shí)候,我們?cè)撊绾翁幚?。在Python中,有Imblearn包,它就是為處理數(shù)據(jù)比例失衡而生的。
第三方包鏈接:https://pypi.org/project/imbalanced-learn/
創(chuàng)造數(shù)據(jù)集
查看各個(gè)標(biāo)簽的樣本
數(shù)據(jù)集可視化
可以看出樣本的三個(gè)標(biāo)簽中,1,2的樣本量極少,樣本失衡。下面使用imblearn進(jìn)行過(guò)采樣。
接下來(lái),我們就要基于以上數(shù)據(jù),進(jìn)行相應(yīng)的處理。
關(guān)于類別不平衡的問(wèn)題,主要有兩種處理方式:
過(guò)采樣方法
增加數(shù)量較少那一類樣本的數(shù)量,使得正負(fù)樣本比例均衡。
欠采樣方法
減少數(shù)量較多那一類樣本的數(shù)量,使得正負(fù)樣本比例均衡。
對(duì)訓(xùn)練集里的少數(shù)類進(jìn)行“過(guò)采樣”(oversampling),即增加一些少數(shù)類樣本使得正、反例數(shù)目接近,然后再進(jìn)行學(xué)習(xí)。
2.1.2 隨機(jī)過(guò)采樣方法
通過(guò)代碼實(shí)現(xiàn)隨機(jī)過(guò)采樣方法:
缺點(diǎn):
·對(duì)于隨機(jī)過(guò)采樣,由于需要對(duì)少數(shù)類樣本進(jìn)行復(fù)制來(lái)擴(kuò)大數(shù)據(jù)集,造成模型訓(xùn)練復(fù)雜度加大。
·另一方面也容易造成模型的過(guò)擬合問(wèn)題,因?yàn)殡S機(jī)過(guò)采樣是簡(jiǎn)單的對(duì)初始樣本進(jìn)行復(fù)制采樣,這就使得學(xué)習(xí)器學(xué)得的規(guī)則過(guò)于具體化,不利于學(xué)習(xí)器的泛化性能,造成過(guò)擬合問(wèn)題。
為了解決隨機(jī)過(guò)采樣中造成模型過(guò)擬合問(wèn)題,又能保證實(shí)現(xiàn)數(shù)據(jù)集均衡的目的,出現(xiàn)了過(guò)采樣法代表性的算法SMOTE算法。
SMOTE全稱是Synthetic Minority Oversampling即合成少數(shù)類過(guò)采樣技術(shù)。
SMOTE算法是對(duì)隨機(jī)過(guò)采樣方法的一個(gè)改進(jìn)算法,由于隨機(jī)過(guò)采樣方法是直接對(duì)少數(shù)類進(jìn)行重采用,會(huì)使訓(xùn)練集中有很多重復(fù)的樣本,容易造成產(chǎn)生的模型過(guò)擬合問(wèn)題。而SMOTE算法的基本思想:
代碼實(shí)現(xiàn):
直接對(duì)訓(xùn)練集中多數(shù)類樣本進(jìn)行“欠采樣”(undersampling),即去除一些多數(shù)類中的樣本使得正例、反例數(shù)目接近,然后再進(jìn)行學(xué)習(xí)。
缺點(diǎn):
隨機(jī)欠采樣方法通過(guò)改變多數(shù)類樣本比例以達(dá)到修改樣本分布的目的,從而使樣本分布較為均衡,但是這也存在一些問(wèn)題。對(duì)于隨機(jī)欠采樣,由于采樣的樣本集合要少于原來(lái)的樣本集合,因此會(huì)造成一些信息缺失,即將多數(shù)類樣本刪除有可能會(huì)導(dǎo)致分類器丟失有關(guān)多數(shù)類的重要信息。
官網(wǎng)鏈接:https://imbalanced-learn.readthedocs.io/en/stable/ensemble.html
猜你喜歡:
python人工智能之人臉識(shí)別綜合應(yīng)用與實(shí)踐