車輛貸款違約預(yù)測 Top1(2021科大訊飛)

向AI轉(zhuǎn)型的程序員都關(guān)注了這個號??????
機器學(xué)習(xí)AI算法工程?? 公眾號:datayx
隨著監(jiān)管政策步入關(guān)鍵落地期,受合規(guī)監(jiān)管標(biāo)的限額影響,曾備受追捧的大額標(biāo)的逐漸消失,小額分散的車貸業(yè)務(wù)成為網(wǎng)貸平臺轉(zhuǎn)型的主要方向之一。車貸資產(chǎn)由于進(jìn)入門檻低、借款額度低、流動性高、限期短等優(yōu)點,但做好風(fēng)險防控依然是行業(yè)的主要問題之一。
國內(nèi)某貸款機構(gòu)就面臨了這樣的難題,該機構(gòu)的借款人往往拖欠還款或拒不還款,導(dǎo)致該機構(gòu)的不良貸款率居高不下。面對如此頭疼的問題,該機構(gòu)將部分貸款數(shù)據(jù)開放,誠邀大家?guī)椭麄兘L(fēng)險識別模型來預(yù)測可能違約的借款人(敏感信息已脫敏)。
任務(wù)
給定某機構(gòu)實際業(yè)務(wù)中的相關(guān)借款人信息,包含53個與客戶相關(guān)的字段,其中l(wèi)oan_default字段表明借款人是否會拖欠付款。任務(wù)目標(biāo)是通過訓(xùn)練集訓(xùn)練模型,來預(yù)測測試集中l(wèi)oan_default字段的具體值,即借款人是否會拖欠付款,以此為依據(jù),降低貸款風(fēng)險。
數(shù)據(jù)說明
總數(shù)據(jù)量超過25w,包含52個特征字段。




可以看到,這個做的是車貸違約預(yù)測問題,參賽選手們需要建立風(fēng)險識別模型來預(yù)測可能違約的借款人。數(shù)據(jù)量的話還是可以的,其中 訓(xùn)練集15w,測試集3w
包含52個特征字段,各個字段主辦方也是給了相應(yīng)的解釋
評估指標(biāo):F1 Score
所以,其實可以很快的寫出一個baseline來。
解題思路
這種偏數(shù)據(jù)挖掘的比賽的關(guān)鍵點在于如何基于對數(shù)據(jù)的理解抽象歸納出有用的特征,因此,我一開始做的時候,并沒有想著說去套各種高大上的模型,而是通過對數(shù)據(jù)的分析去構(gòu)造一些特征。如果不想往后看代碼的話,我在這一章節(jié)會簡單把我的整個方案講一下:
正負(fù)樣本分布:可以看到這道題的正負(fù)樣本比為 82:18 這樣,在風(fēng)控里面其實已經(jīng)屬于正負(fù)樣本分布較為平衡的數(shù)據(jù)了,所以我在比賽中,并沒有刻意的去往正負(fù)樣本不平衡這塊去做,有做了一些過采樣的嘗試,但效果反而不增反降
特征工程:
首先我一開始就發(fā)現(xiàn)有很多ID類的特征,然后我就基于這些ID類特征做了一些target encoding特征,這些簡單的特征 + 樹模型就已經(jīng)0.583了,能讓我前期一直處在Top 10;
而后,從業(yè)務(wù)角度構(gòu)造了一些諸如:主賬戶和二級賬戶的年利率特征(因為往往銀行的利率表現(xiàn)了其對用戶的信用預(yù)測);從數(shù)據(jù)分布角度對一些金額類的特征做了些分箱操作;再從特征本身的有效性和冗余角度出發(fā),剔除了一些毫無信息量的特征,比如貸款日期等。這時,我們可以做到0.587這樣的水平;
然后,在一次誤打誤撞的模型訓(xùn)練時,我誤把客戶ID放進(jìn)模型中去訓(xùn)練了,結(jié)果我發(fā)現(xiàn)似乎還對模型性能有一定提升?那我這時候的想法是:這一定是由于欺詐有些集中性導(dǎo)致的,黑產(chǎn)可能在借貸銀行(where)或借貸時間(when)上存在一定的集中性,而這種集中性一方面可以通過branch_id/supplier_id/manufacturer_id等反映出來,另一方面,本身客戶的customer_id也是可以體現(xiàn)時間上的集中性,因此,我又基于這個點構(gòu)造了近鄰欺詐特征,這時候我們就能做到0.589了;
模型選取:
正負(fù)樣本分布:可以看到這道題的正負(fù)樣本比為 82:18 這樣,在風(fēng)控里面其實已經(jīng)屬于正負(fù)樣本分布較為平衡的數(shù)據(jù)了,所以我在比賽中,并沒有刻意的去往正負(fù)樣本不平衡這塊去做,有做了一些過采樣的嘗試,但效果反而不增反降
特征工程:
首先我一開始就發(fā)現(xiàn)有很多ID類的特征,然后我就基于這些ID類特征做了一些target encoding特征,這些簡單的特征 + 樹模型就已經(jīng)0.583了,能讓我前期一直處在Top 10;
而后,從業(yè)務(wù)角度構(gòu)造了一些諸如:主賬戶和二級賬戶的年利率特征(因為往往銀行的利率表現(xiàn)了其對用戶的信用預(yù)測);從數(shù)據(jù)分布角度對一些金額類的特征做了些分箱操作;再從特征本身的有效性和冗余角度出發(fā),剔除了一些毫無信息量的特征,比如貸款日期等。這時,我們可以做到0.587這樣的水平;
然后,在一次誤打誤撞的模型訓(xùn)練時,我誤把客戶ID放進(jìn)模型中去訓(xùn)練了,結(jié)果我發(fā)現(xiàn)似乎還對模型性能有一定提升?那我這時候的想法是:這一定是由于欺詐有些集中性導(dǎo)致的,黑產(chǎn)可能在借貸銀行(where)或借貸時間(when)上存在一定的集中性,而這種集中性一方面可以通過branch_id/supplier_id/manufacturer_id等反映出來,另一方面,本身客戶的customer_id也是可以體現(xiàn)時間上的集中性,因此,我又基于這個點構(gòu)造了近鄰欺詐特征,這時候我們就能做到0.589了;
模型選取:
前期,我一直是用的LightGBM,然后也沒有很仔細(xì)的去調(diào)參(比如hyperopt/optuna等工具,我都沒有用),就很隨意(平平無奇的手動調(diào)參小天才)
后期,我開始嘗試其他的XGBoost/CatBoost/TabNet等模型,但是發(fā)現(xiàn)CatBoost和TabNet效果都不是很好,就沒有深入往下去鉆了(主要白天還是要上班的,因此精力有限,說是摸魚打比賽,但更準(zhǔn)確的說是 熬夜打比賽)
閾值選?。?/span>由于該題是用F1 Score作為評判標(biāo)準(zhǔn)的,因此,我們需要自己劃一個閾值,然后決定哪些樣本預(yù)測為正樣本,哪些樣本預(yù)測為負(fù)樣本。在嘗試了不同方案后,我們的方案基于oof的預(yù)測結(jié)果,選出一個在oof上表現(xiàn)最優(yōu)的閾值,此時在榜上的效果是最佳的(千分位的提升)
融合策略:最后選定了兩個模型來融合,一個是LightGBM,一個是XGBoost(哈哈哈,就很土有沒有),然后,直接按預(yù)測概率加權(quán)融合的話效果是比較一般的,而按照其ranking值分位點化之后再加權(quán)融合效果會更好。效果而言,單模LGB最優(yōu)是0.5892,XGB是在0.5872這邊,按照概率加權(quán)最優(yōu)是0.59011,按照排序加權(quán)最優(yōu)是0.59038
其實主要思路和方案,就如同上述文字所描述的了。但看起來總是干巴巴的,如果你還對代碼有興趣的話,可以繼續(xù)往下看。畢竟 Talk is Cheap, :)
?代碼詳解
全部代碼,數(shù)據(jù)集獲取方式:
關(guān)注微信公眾號 datayx? 然后回復(fù)?車貸?即可獲取。
特征工程
target encoding/mean encoding,這里要注意的是,為了防止過擬合,需要分折來做

年利率特征/分箱等特征:


近鄰欺詐特征(ID前后10個近鄰的欺詐概率,其實可以更多不同嘗試尋找最優(yōu)的近鄰數(shù),但精力有限哈哈)

最終我只選取了47維特征:

模型訓(xùn)練
LightGBM(十折效果更優(yōu))

XGBoost

模型融合與閾值選取

機器學(xué)習(xí)算法AI大數(shù)據(jù)技術(shù)
?搜索公眾號添加:?datanlp
長按圖片,識別二維碼
閱讀過本文的人還看了以下文章:
TensorFlow 2.0深度學(xué)習(xí)案例實戰(zhàn)
基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測
《基于深度學(xué)習(xí)的自然語言處理》中/英PDF
【全套視頻課】最全的目標(biāo)檢測算法系列講解,通俗易懂!
《美團機器學(xué)習(xí)實踐》_美團算法團隊.pdf
《深度學(xué)習(xí)入門:基于Python的理論與實現(xiàn)》高清中文PDF+源碼
《深度學(xué)習(xí):基于Keras的Python實踐》PDF和代碼
python就業(yè)班學(xué)習(xí)視頻,從入門到實戰(zhàn)項目
2019最新《PyTorch自然語言處理》英、中文版PDF+源碼
《21個項目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實踐詳解》完整版PDF+附書代碼
《深度學(xué)習(xí)之pytorch》pdf+附書源碼
PyTorch深度學(xué)習(xí)快速實戰(zhàn)入門《pytorch-handbook》
【下載】豆瓣評分8.1,《機器學(xué)習(xí)實戰(zhàn):基于Scikit-Learn和TensorFlow》
《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼
汽車行業(yè)完整知識圖譜項目實戰(zhàn)視頻(全23課)
李沐大神開源《動手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材
筆記、代碼清晰易懂!李航《統(tǒng)計學(xué)習(xí)方法》最新資源全套!
《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼
FashionAI服裝屬性標(biāo)簽圖像識別Top1-5方案分享
重要開源!CNN-RNN-CTC 實現(xiàn)手寫漢字識別
同樣是機器學(xué)習(xí)算法工程師,你的面試為什么過不了?
前海征信大數(shù)據(jù)算法:風(fēng)險概率預(yù)測
【Keras】完整實現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個項目,讓你掌握深度學(xué)習(xí)圖像分類
VGG16遷移學(xué)習(xí),實現(xiàn)醫(yī)學(xué)圖像識別分類工程項目
特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊
如何利用全新的決策樹集成級聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?
Machine Learning Yearning 中文翻譯稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在線識別手寫中文網(wǎng)站
中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學(xué)習(xí)與特征工程
不斷更新資源
深度學(xué)習(xí)、機器學(xué)習(xí)、數(shù)據(jù)分析、python
?搜索公眾號添加:?datayx??
