02 特征工程 - 數(shù)據(jù)不平衡

01 特征工程 - 概念

數(shù)據(jù)清洗過程:

PS:工作中可能遇到的最大的問題是數(shù)據(jù)不均衡。
怎么去解決的? 上采樣、下采樣、SMOTE算法。
解決的效果如何? 有一點(diǎn)點(diǎn)改進(jìn),但不是很大。
事實(shí)上確實(shí)如此,很多時候即使用了上述算法對采樣的數(shù)據(jù)進(jìn)行改進(jìn),但是結(jié)果反而可能更差。在業(yè)界中,對數(shù)據(jù)不均衡問題的處理確實(shí)是一件比較頭疼的問題。最好的處理方法還是:盡可能去獲得更多的那些類別比較少的數(shù)據(jù)。


數(shù)據(jù)不平衡概念

在實(shí)際應(yīng)用中,數(shù)據(jù)往往分布得非常不均勻,也就是會出現(xiàn)“長尾現(xiàn)象”,即:絕大多數(shù)的數(shù)據(jù)在一個范圍/屬于一個類別,而在另外一個范圍或者另外一個類別中,只有很少的一部分?jǐn)?shù)據(jù)。那么這個時候直接使用機(jī)器學(xué)習(xí)可能效果會不太少,所以這個時候需要我們進(jìn)行一系列的轉(zhuǎn)換操作。

而在采樣過程中修改樣本的權(quán)重,一般做的比較少。

數(shù)據(jù)不平衡解決方案一

設(shè)置損失函數(shù)的權(quán)重,使得少數(shù)類別數(shù)據(jù)判斷錯誤的損失大于多數(shù)類別數(shù)據(jù)判斷錯誤的損失,即當(dāng)我們的少數(shù)類別數(shù)據(jù)預(yù)測錯誤的時候,會產(chǎn)生一個比較大的損失值,從而導(dǎo)致模型參數(shù)往讓少數(shù)類別數(shù)據(jù)預(yù)測準(zhǔn)確的方向偏。可以通過scikit-learn中的class_weight參數(shù)來設(shè)置權(quán)重。

數(shù)據(jù)不平衡解決方案二

下采樣/欠采樣(under sampling):從多數(shù)類中隨機(jī)抽取樣本從而減少多數(shù)類別樣本數(shù)據(jù),使數(shù)據(jù)達(dá)到平衡的方式。

PS:比如本來樣本正負(fù)例的比例是100:1,一般使用下采樣將數(shù)據(jù)比例控制到4:1就是極限了。如果強(qiáng)行將正負(fù)例的比例控制到1:1,會損失很多樣本的特性,使得模型效果還不如100:1的訓(xùn)練結(jié)果。

集成下采樣/欠采樣:采用普通的下采樣方式會導(dǎo)致信息丟失,所以一般采用集成學(xué)習(xí)和下采樣結(jié)合的方式來解決這個問題;主要有兩種方式:

1、EasyEnsemble
采用不放回的數(shù)據(jù)抽取方式抽取多數(shù)類別樣本數(shù)據(jù),然后將抽取出來的數(shù)據(jù)和少數(shù)類別數(shù)據(jù)組合訓(xùn)練一個模型;多次進(jìn)行這樣的操作,從而構(gòu)建多個模型,然后使用多個模型共同決策/預(yù)測。

2、BalanceCascade
利用Boosting這種增量思想來訓(xùn)練模型;先通過下采樣產(chǎn)生訓(xùn)練集,然后使用Adaboost算法訓(xùn)練一個分類器;然后使用該分類器多對所有的大眾樣本數(shù)據(jù)進(jìn)行預(yù)測,并將預(yù)測正確的樣本從大眾樣本數(shù)據(jù)中刪除;重復(fù)迭代上述兩個操作,直到大眾樣本數(shù)據(jù)量等于小眾樣本數(shù)據(jù)量。


擴(kuò)展一個技巧:
如果參加一個比賽,我們會在模型訓(xùn)練的時候?qū)?shù)據(jù)分成訓(xùn)練集開發(fā)集。模型提交后,比賽方會提供測試集對結(jié)果進(jìn)行預(yù)測。
一般來說我們訓(xùn)練集上的模型評分會在86 ~ 88%左右,開發(fā)集上的評分為82 ~ 84%,但是到了實(shí)際的測試集上,模型評分可能只有72%左右。
技巧來了:
1、一般來說測試集的數(shù)據(jù)是不帶標(biāo)簽的,但是測試集依然有特征X。
2、我們都不考慮訓(xùn)練集和測試集的目標(biāo)Y,人為創(chuàng)建一列目標(biāo)值Z,將訓(xùn)練集中的Z都設(shè)為0,將測試集的目標(biāo)Z都設(shè)為1。
3、尋找測試集的X和Z之間的映射。
4、根據(jù)這個X和Z之間的映射,使用訓(xùn)練集中的X預(yù)測Z,結(jié)果肯定是組0,1向量。
5、將預(yù)測值為1的數(shù)據(jù)提出來,作為我的開發(fā)集(用來驗(yàn)證我們模型的數(shù)據(jù)集合),剩下預(yù)測為0的數(shù)據(jù)作為訓(xùn)練集。在這個基礎(chǔ)上對我的訓(xùn)練數(shù)據(jù)進(jìn)行調(diào)優(yōu)。

這是一個在不做任何特征的情況下對模型調(diào)優(yōu)的一個技巧,一般可以將模型在真實(shí)環(huán)境中的評分提高一點(diǎn)點(diǎn)。大概72%提高到74%左右。

為什么?實(shí)際上我們做訓(xùn)練的目的是為了找一找比賽中人家提供給我們的訓(xùn)練數(shù)據(jù)和真實(shí)數(shù)據(jù),哪些長得比較像。將更像真實(shí)測試數(shù)據(jù)的樣本放到開發(fā)集中作為調(diào)參的標(biāo)準(zhǔn),從而能夠提高最終的評分。雖然沒有什么科學(xué)依據(jù),但是確實(shí)比較有效,不登大雅之堂。


數(shù)據(jù)不平衡解決方案三

Edited Nearest Neighbor(ENN): 對于多數(shù)類別樣本數(shù)據(jù)而言,如果這個樣本的大部分k近鄰樣本都和自身類別不一樣,那我們就將其刪除,然后使用刪除后的數(shù)據(jù)訓(xùn)練模型。

數(shù)據(jù)不平衡解決方案四

Repeated Edited Nearest Neighbor(RENN): 對于多數(shù)類別樣本數(shù)據(jù)而言,如果這個樣本的大部分k近鄰樣本都和自身類別不一樣,那我們就將其刪除重復(fù)性的進(jìn)行上述的刪除操作,直到數(shù)據(jù)集無法再被刪除后,使用此時的數(shù)據(jù)集據(jù)訓(xùn)練模型。

數(shù)據(jù)不平衡解決方案五

Tomek Link Removal: 如果兩個不同類別的樣本,它們的最近鄰都是對方,也就是A的最近鄰是B,B的最近鄰也是A,那么A、B就是Tomek Link。將所有Tomek Link中多數(shù)類別的樣本刪除。然后使用刪除后的樣本來訓(xùn)練模型。

\color{red}{以上是對多數(shù)類別的樣本進(jìn)行刪除}


\color{red}{下面是對少數(shù)類別的樣本進(jìn)行擴(kuò)充}

數(shù)據(jù)不平衡解決方案六

過采樣/上采樣(Over Sampling):和欠采樣采用同樣的原理,通過抽樣來增加少數(shù)樣本的數(shù)目,從而達(dá)到數(shù)據(jù)平衡的目的。一種簡單的方式就是通過有放回抽樣,不斷的從少數(shù)類別樣本數(shù)據(jù)中抽取樣本,然后使用抽取樣本+原始數(shù)據(jù)組成訓(xùn)練數(shù)據(jù)集來訓(xùn)練模型;不過該方式比較容易導(dǎo)致過擬合一般抽樣樣本不要超過50%。

過采樣/上采樣(Over Sampling):因?yàn)樵谏喜蓸舆^程中,是進(jìn)行是隨機(jī)有放回的抽樣,所以最終模型中,數(shù)據(jù)其實(shí)是相當(dāng)于存在一定的重復(fù)數(shù)據(jù),為了防止這個重復(fù)數(shù)據(jù)導(dǎo)致的問題,我們可以加入一定的隨機(jī)性,也就是說:在抽取數(shù)據(jù)后,對數(shù)據(jù)的各個維度可以進(jìn)行隨機(jī)的小范圍變動,eg: (1,2,3) --> (1.01, 1.99, 3);通過該方式可以相對比較容易的降低上采樣導(dǎo)致的過擬合問題。

數(shù)據(jù)不平衡解決方案七

采用數(shù)據(jù)合成的方式生成更多的樣本,該方式在小數(shù)據(jù)集場景下具有比較成功的案例。常見算法是SMOTE算法,該算法利用小眾樣本在特征空間的相似性來生成新樣本。

比如:給少數(shù)樣本編號,1~100;將1、2樣本連起來,取他們的中點(diǎn)(期望),作為一個新的樣本。以此類推,最后可以新生成50個樣本。用這種算法一次可以提高50%的樣本量。

數(shù)據(jù)不平衡解決方案八

對于正負(fù)樣本極不平衡的情況下,其實(shí)可以換一種思路/角度來看待這個問題:可以將其看成一分類(One Class Learning)或者異常檢測(Novelty Detection)問題,在這類算法應(yīng)用中主要就是對于其中一個類別進(jìn)行建模,然后對所有不屬于這個類別特征的數(shù)據(jù)就認(rèn)為是異常數(shù)據(jù),經(jīng)典算法包括:One Class SVM、IsolationForest等。

03 特征工程 - 特征轉(zhuǎn)換 - 分詞、Jieba分詞

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內(nèi)容