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