【小夕精选】如何优雅而时髦的解决不均衡分类问题
之前小夕因項(xiàng)目需要研究了一小陣子的不均衡(文本)分類問題,不過沒有研究的太過深入,也沒有總結(jié)出一套成體系的處理思路。正好今天發(fā)現(xiàn)數(shù)據(jù)挖掘大佬「微調(diào)」在知乎上寫了一個(gè)言簡(jiǎn)意賅又很具有實(shí)際操作價(jià)值的回答,于是搬過來分享給大家啦~相關(guān)方向的小伙伴記得點(diǎn)擊文末閱讀原文關(guān)注「微調(diào)」大佬哦。
模型如何評(píng)價(jià)
先談?wù)勥@種極端的類別不平衡的評(píng)估問題,我們一般用的指標(biāo)有(前兩個(gè)是全局評(píng)估,最后一個(gè)是點(diǎn)評(píng)估):
ROC曲線下的面積(AUC_ROC)
mean Average Precesion(mAP),指的是在不同召回下的最大精確度的平均值
Precision@Rank k。假設(shè)共有n個(gè)點(diǎn),假設(shè)其中k個(gè)點(diǎn)是少數(shù)樣本時(shí)的Precision。這個(gè)評(píng)估方法在推薦系統(tǒng)中也常常會(huì)用。
選擇哪個(gè)評(píng)估標(biāo)準(zhǔn)需要取決于具體問題。而在上線前怎么確定你的模型已經(jīng)達(dá)標(biāo)?這個(gè)需要AB test,每個(gè)公司都有不同的標(biāo)準(zhǔn),很難一概而論。重點(diǎn)是新系統(tǒng)至少要比現(xiàn)有系統(tǒng)在某方面有了提升,而全新模型至少應(yīng)該符合從業(yè)者的基本預(yù)期。也要認(rèn)識(shí)到大部分情況下上線的模型都不可能是完美的,我的個(gè)人建議是可以利用「已有的監(jiān)督模型+人工」做主動(dòng)學(xué)習(xí)(active learning)。比如先上線一個(gè)不完美的模型,每次將模型預(yù)測(cè)中最不確定的部分(預(yù)測(cè)值在臨界點(diǎn)附近的樣本)交給人工驗(yàn)證,并重新訓(xùn)練逐步提高模型預(yù)測(cè)的精準(zhǔn)度。
如何解決問題
至于如何處理數(shù)據(jù)不平衡的問題,最傳統(tǒng)的思路還是使用過采樣和欠采樣等。相關(guān)資料大家看的比較多的是08年的Survey Paper [1],比較新和前沿的做法可以參考[2],可以至少讀一下Related Works部分了解一下這些年來常用的非平衡數(shù)據(jù)處理方法有哪些。比較科普的文章可以參考我的回答:
微調(diào):欠采樣(undersampling)和過采樣(oversampling)會(huì)對(duì)模型帶來怎樣的影響?
https://www.zhihu.com/question/269698662/answer/352279936
里面也介紹了一些常用的工具。去年其實(shí)也寫過一篇類似的文章,可以參考:
如何處理數(shù)據(jù)中的「類別不平衡」?
https://zhuanlan.zhihu.com/p/32940093
如果上述方法表現(xiàn)依然不好,還有幾個(gè)方法可供嘗試:
有監(jiān)督的集成學(xué)習(xí):可以先用采樣的方法建立k個(gè)平衡的訓(xùn)練集,每個(gè)訓(xùn)練集上單獨(dú)訓(xùn)練一個(gè)分類器,并對(duì)k個(gè)分類器結(jié)果取平均。一般在這種情況下,每個(gè)平衡訓(xùn)練集上都需要使用比較簡(jiǎn)單的分類器,如邏輯回歸。其實(shí)在實(shí)際使用中,這種方法不一定會(huì)比集成樹模型更好,可能還不如使用xgboost。但在復(fù)雜問題上多嘗試一些手段是好的,說不定有奇效。
無監(jiān)督的異常檢測(cè):異常檢測(cè)指的是從數(shù)據(jù)中找到那些異常值,比如你案例中的“廣告”。無監(jiān)督的異常檢測(cè)一般依賴于對(duì)于數(shù)據(jù)的假設(shè),比如廣告和正常的文章內(nèi)容很不相同,那么一種假設(shè)是廣告和正常文章間的歐式距離很大。無監(jiān)督異常檢測(cè)最大優(yōu)勢(shì)就是在不需要數(shù)據(jù)標(biāo)簽,如果在對(duì)數(shù)據(jù)假設(shè)正確時(shí)效果甚至可以比監(jiān)督學(xué)習(xí)更好,尤其是當(dāng)獲取標(biāo)簽成本很高時(shí)。具體的科普文章可以參考我的回答:
微調(diào):數(shù)據(jù)挖掘中常見的『異常檢測(cè)』算法有哪些?
https://www.zhihu.com/question/280696035/answer/417091151
「異常檢測(cè)」開源工具庫推薦
https://zhuanlan.zhihu.com/p/37132428
半監(jiān)督異常集成學(xué)習(xí):如果把1和2的思路結(jié)合起來,你可以試試半監(jiān)督的方法,具體做法可以參考[3]。簡(jiǎn)單而言,你可以現(xiàn)在原始數(shù)據(jù)集上使用多個(gè)無監(jiān)督異常方法來抽取數(shù)據(jù)的表示,并和原始的數(shù)據(jù)結(jié)合作為新的特征空間。在新的特征空間上使用集成樹模型,比如xgboost,來進(jìn)行監(jiān)督學(xué)習(xí)。無監(jiān)督異常檢測(cè)的目的是提高原始數(shù)據(jù)的表達(dá),監(jiān)督集成樹的目的是降低數(shù)據(jù)不平衡對(duì)于最終預(yù)測(cè)結(jié)果的影響。這個(gè)方法還可以和我上面提到的主動(dòng)學(xué)習(xí)結(jié)合起來,進(jìn)一步提升系統(tǒng)的性能。當(dāng)然,這個(gè)方法最大的問題是運(yùn)算開銷比較大,需要進(jìn)行深度優(yōu)化。
高維數(shù)據(jù)上的半監(jiān)督異常檢測(cè):考慮到文本文件在轉(zhuǎn)化后往往維度很高,可以嘗試一下最近的一篇KDD文章[4],主要是找到高維數(shù)據(jù)在低維空間上的表示,以幫助基于距離的異常檢測(cè)方法。
總結(jié)來看,我建議從以下順序嘗試:
直接在數(shù)據(jù)上嘗試有監(jiān)督的集成學(xué)習(xí)(方法1)
直接在數(shù)據(jù)上使用多種無監(jiān)督學(xué)習(xí),觀察哪一類算法的效果更好(方法2)
結(jié)合以上兩點(diǎn)(方法3)
如果以上方法都不管用,嘗試方法4
使用方法1, 3,4時(shí),可以加入主動(dòng)學(xué)習(xí)
如果以上方法均不奏效,最靠譜的還是找更多人做數(shù)據(jù)標(biāo)注,畢竟數(shù)據(jù)為王。從效果上看往往是「監(jiān)督學(xué)習(xí)>>半監(jiān)督學(xué)習(xí)>無監(jiān)督」,能用監(jiān)督就不要依賴無監(jiān)督。
數(shù)據(jù)挖掘項(xiàng)目的本質(zhì)就是試錯(cuò),所以很難有確定的答案。拋開準(zhǔn)確率不談,另外的重要因素包括系統(tǒng)的效率和耦合度。前者指的是運(yùn)算開銷,后者指的是設(shè)計(jì)與維護(hù)開銷,這些在設(shè)計(jì)方案時(shí)都要考慮到。最終上線的版本不一定是最強(qiáng)力的那個(gè),往往是最適合的那個(gè)。
參考文獻(xiàn)
[1] He, H. and Garcia, E.A., 2008. Learning from imbalanced data. IEEE Transactions on Knowledge & Data Engineering, (9), pp.1263-1284.
[2] Roy, A., Cruz, R.M., Sabourin, R. and Cavalcanti, G.D., 2018. A study on combining dynamic selection and data preprocessing for imbalance learning. Neurocomputing, 286, pp.179-192.
[3] Zhao, Y.; Hryniewicki, M.K. XGBOD: Improving Supervised Outlier Detection with Unsupervised Representation Learning. In Proceedings of the International Joint Conference on Neural Networks (IJCNN), Rio, Brazil, 8–13 July 2018.
[4] Pang, G., Cao, L., Chen, L. and Liu, H., 2018. Learning Representations of Ultrahigh-dimensional Data for Random Distance-based Outlier Detection. arXiv preprint arXiv:1806.04808.
總結(jié)
以上是生活随笔為你收集整理的【小夕精选】如何优雅而时髦的解决不均衡分类问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google | 创造Youtube单次
- 下一篇: 阿里P8架构师谈:java架构师面试技能