label y 训练集测试集x_Adversarial validation-对抗验证| 一种解决训练集与测试集分布不一致的方法...
本文提綱如下:
- 地震無處不在
- Adversarial validation
- 對抗訓練-DANN
- 總結(jié)
地震無處不在
訓練集與測試的不一致問題是我們經(jīng)常面臨的問題,在互金領(lǐng)域,市場環(huán)境變化,準入策略,額度策略的調(diào)整,會導(dǎo)致訓練樣本在時間維度上存在差異,因此在利用大規(guī)模樣本,或者長期限樣本來訓練模型時,必然會存在訓練集與測試集(或者當前線上打分模型)產(chǎn)生偏差,這種現(xiàn)象在模型指標上的表現(xiàn)就是訓練集,驗證集上的KS/AUC想對較高,測試集上天然會存在decay的現(xiàn)象。面對這種情況,不能把原因單純的歸結(jié)為過擬合,而使勁地去改善這種表面的過擬合現(xiàn)象,也需要考慮上述人群變化的原因。
訓練集與測試集差異明顯的典型例子很容易發(fā)生在Kaggle比賽,或者國內(nèi)高水平的比賽上,比賽前期顯示的都是在公榜上成績,最后的評判的卻是的額外的私榜上,就會產(chǎn)生很大喜聞樂見的地震, shake up。如Kaggle比賽LANL Earthquake Prediction,在public Leaderboard中排名第一的,在private Leaderboard卻掉到了2734,而后面一大票老哥卻沖到了前排,上演數(shù)據(jù)世界的地震。
所以大佬們,總是提醒我們,trust local cv,但是在很長一段時間大佬卻沒有告訴我們?nèi)绾螛?gòu)造穩(wěn)定,測試集與驗證集一致的方法,而正是本篇要帶來的一種方法。
Adversarial validation
Adversarial validation,網(wǎng)上的翻譯是對抗驗證,但是當我看完內(nèi)容之后其實是沒有發(fā)現(xiàn)太明顯的對抗痕跡,還是高攀得起的,步驟如下:
如此,完成了local CV的構(gòu)建。有了上述的思路,可以做進一步的擴展(在可容忍的模型誤差范圍內(nèi)), 利用樣本分類模型,挑選與測試集相近的訓練集,做樣本的反向選擇,挑選合適訓練樣本進行模型訓練。至于還有其他應(yīng)用,同學們可以繼續(xù)探討。
對抗訓練-DANN
看完上述方法,確實很實用,至于效果嘛,筆者還沒在自己的業(yè)務(wù)數(shù)據(jù)上實驗,后期有了結(jié)果在進行補充(此坑比填),上述好像也沒有發(fā)生什么對抗,但是不要一看到對抗就陷入到GAN,生成對抗網(wǎng)絡(luò)的思維里面,似乎一提對抗就要有顯式一個生成器,一個判別器,兩者相愛相殺,共同提高。在2015年,就有一篇對抗訓練(而不是對抗生成)的文章,Domain-Adversarial Training of Neural Networks,就是從梯度翻轉(zhuǎn)(Gradient reversal layer)的角度來進行對抗訓練,如果希望深入學習這方面的東西的同學,可以檢索領(lǐng)域自適應(yīng), domain adaption相關(guān)的內(nèi)容,了解相關(guān)的思路,至于能否解決業(yè)務(wù)問題,還需要看場景。
還是以風險模型為例,如果一個公司要啟動一個新業(yè)務(wù)線,而針對的客群跟當前跑通的場景是不同的,人群差異較大,那么就面臨的業(yè)務(wù)任務(wù)啟動的問題,那么怎么高效的利用歷史積累的數(shù)據(jù)樣本呢,很容易想到遷移學習,而上述講到的領(lǐng)域自適應(yīng)是遷移學習中的一種,可以利用DANN框架進行對抗訓練,一個任務(wù)用于用于進行具體任務(wù)的訓練(對應(yīng)圖中的 label predictor), 而域分裂器(對應(yīng)圖中的domain classifier),其標簽就是用于區(qū)分樣本來源于哪個業(yè)務(wù)線,哪個客群等,通過對抗訓練使得在特征提取器部分能夠?qū)W習到多個客群的本質(zhì)特征,學習到共同特征,以至于域分類器陷入懵逼狀態(tài),安能辨我是雌雄,從而完成遷移學習,解決樣本不足的問題,在預(yù)測是只需要將提取的特征進入具體任務(wù)的分類網(wǎng)絡(luò)即可。
上述方法聽取來是有效,我以前也實驗過,對于模型還是有提升的,然而,這畢竟是一個思路,沒有具體的落地。
總結(jié)
上述兩種方法,其實是兩個不同的思路,只是剛好說到對抗,就聯(lián)想到了DANN。順便說一下,對抗訓練的思維,給我們開啟了一個新的模型訓練的思路,傳統(tǒng)的機器學習方法,重要的目的是根據(jù)目標函數(shù),盡力去擬合即可,使得損失最小,而對抗訓練是盡可能利用額外的信息,解決額外的一些任務(wù),我們常說,模型是很容易偷懶的,給它找個對手,一切都是為了它好。至于對抗訓練方面的內(nèi)容,又要挖坑了,此坑可填。
參考內(nèi)容:
Adversarial validation, part one?fastml.com總結(jié)
以上是生活随笔為你收集整理的label y 训练集测试集x_Adversarial validation-对抗验证| 一种解决训练集与测试集分布不一致的方法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kafka 脚本发送_NWPC消息平台:
- 下一篇: 金古桥机器人_《泽塔奥特曼》奥特曼憋屈了