1.介紹
? 隊(duì)員:@回頭是岸钧栖,@林蕭拯杠, @觀想,作者:@一休
2. 賽題背景
資金流動(dòng)性管理迄今仍是金融領(lǐng)域的經(jīng)典問題潭陪。在互聯(lián)網(wǎng)金融信貸業(yè)務(wù)中最蕾,單個(gè)資產(chǎn)標(biāo)的金額小且復(fù)雜多樣,對于擁有大量出借資金的金融機(jī)構(gòu)或散戶而言黎炉,資金管理壓力巨大壹粟,精準(zhǔn)地預(yù)測出借資金的流動(dòng)情況變得尤為重要。本次比賽以互聯(lián)網(wǎng)金融信貸業(yè)務(wù)為背景趁仙,以《現(xiàn)金流預(yù)測》為題,希望選手能夠利用我們提供的數(shù)據(jù)干奢,精準(zhǔn)地預(yù)測資產(chǎn)組合在未來一段時(shí)間內(nèi)每日的回款金額盏袄。
本賽題涵蓋了信貸違約預(yù)測、現(xiàn)金流預(yù)測等金融領(lǐng)域常見問題逛尚,同時(shí)又是復(fù)雜的時(shí)序問題和多目標(biāo)預(yù)測問題刁愿。希望參賽者利用聰明才智把互聯(lián)網(wǎng)金融的數(shù)據(jù)優(yōu)勢轉(zhuǎn)化為行業(yè)解決方案。
數(shù)據(jù)包含訓(xùn)練樣本滤钱、測試樣本、每個(gè)標(biāo)的的屬性表件缸、借款用戶基礎(chǔ)信息表、用戶畫像標(biāo)簽列表争剿、借款用戶操作行為日志表和用戶還款日志表五個(gè)部分痊末。
賽題的詳解和數(shù)據(jù)見:官網(wǎng)。
如失效關(guān)注公眾號:AI成長社,回復(fù):魔鏡杯 即可獲得
3.賽題理解
基于對賽題的分析以及金融風(fēng)控業(yè)務(wù)的理解疮丛,得到以下幾點(diǎn):
- 賽題重要性:準(zhǔn)確預(yù)測未來一段時(shí)期資產(chǎn)組合回款量。這能夠幫助互聯(lián)網(wǎng)金融企業(yè)更好的把控運(yùn)營節(jié)奏誊薄,進(jìn)行良性資金配置和流動(dòng)性管理,最大化的利用現(xiàn)有資金切心。
- 賽題目標(biāo):預(yù)測資產(chǎn)組合在未來一段時(shí)間內(nèi)每日的回款金額(但是我們無法預(yù)知資產(chǎn)組合的構(gòu)成)
基于以上分析片吊,決定在未知資產(chǎn)組合的情況下將原有的問題從宏觀和微觀兩個(gè)方面進(jìn)行挖掘,從微觀角度挖掘用戶的一些借貸習(xí)慣全谤;從宏觀挖掘公司每月每日資金的流入流出情況,來擬合最終的資產(chǎn)組合的回款情況认然,具體的結(jié)構(gòu)如下圖。
4. 特征工程
由于金融風(fēng)控領(lǐng)域?qū)δP吞卣饕笥泻軓?qiáng)的可解釋性卷员,在挖掘基本的特征時(shí)毕骡,我們都會考慮挖掘的特征最終的作用點(diǎn)。我們最終的特征有三部分來源挺峡,分別是基本信息特征、用戶瀏覽行為特征和用戶還款行為特征橱赠。
1.基本特征
基于時(shí)間過濾篩選出未穿越的基本時(shí)間特征,具體特征如下圖:
-
針對用戶屬性特征宰啦,刪除了cell_province,id_province,id_city三個(gè)看似很強(qiáng)的地域特征饼拍。這部分?jǐn)?shù)據(jù)存在缺失值,曾今嘗試過用id_province的對cell_province進(jìn)行填充师抄,id_city進(jìn)行分省份填充,但是最終線上結(jié)果沒有有直接刪除有效辆布,刪除操作線上提升大概200多分
##嘗試的填充代碼 data['cell_province'] = data['cell_province'].fillna(data['id_province']) data['id_city'] = data['id_city'].fillna(data['id_province'] + '000')
對age進(jìn)行分桶處理
在標(biāo)的屬性特征中添加月利率特征:原始數(shù)據(jù)提供的是年利率茶鉴,考慮到標(biāo)的期限有3,6,9,12月,因此改成月利率特征惭蹂,線上提升100左右
標(biāo)的還款日期特征:應(yīng)還款日期是在幾月份,幾號割粮,星期幾,線上提升200左右
-
用戶畫像特征: 對用戶畫像做TFIDF處理置尔,保留10維特征
Tfidf_vect = TfidfVectorizer(max_features=10, ngram_range=(1, 1), min_df=1) Tfidf_vect.fit(list(train['taglist']))
2.用戶瀏覽行為特征
- 時(shí)間段切分:將一天分為8個(gè)時(shí)間段氢伟,統(tǒng)計(jì)每個(gè)時(shí)間段用戶的操作天數(shù)及占比,凌晨和深夜操作的逾期概率更高
- 行為間隔頻度:將用戶行為序列的最大間隔天數(shù)和最小間隔天數(shù)取出谬盐,推測借款人粘性
3.用戶還款行為特征
- 歷史還款習(xí)慣(還款月粒度-33天):有的用戶喜歡還款日還款,有的喜歡提前一天還款飞傀,有的沒有固定時(shí)間,基于此采用統(tǒng)計(jì)特征表示(眾數(shù)砸烦、平均數(shù)、最大值幢痘、最小值、方差)
- 歷史還款習(xí)慣(自然月粒度-上旬中旬下旬):有的用戶喜歡在月初還款购岗,有的喜歡月末還款(可能與其工資日相關(guān))门粪,采用還款日期的眾數(shù)表示
- 歷史借款情況:用戶擁有標(biāo)的數(shù)量,用戶相鄰標(biāo)的間隔天數(shù)玄妈,用戶從注冊日到借款等待的天數(shù)
5 模型的設(shè)計(jì)
1.label設(shè)計(jì)
由于受到大小月份的影響,進(jìn)行適當(dāng)?shù)男拚艿埽渲?1表示借款當(dāng)天還款瞭郑,即, 32表示逾期鸭你,其余不存在的日期用0填充。最終的結(jié)果分布如下圖袱巨。修正后的label定義方式相比直接采用距離天數(shù)的定義方式,線上提升100多分场绿。
2.訓(xùn)練集的調(diào)整
統(tǒng)計(jì)數(shù)據(jù)發(fā)現(xiàn)2018年數(shù)據(jù)2月和3月的還款情況和其他月份有很大不同焰盗,逾期率更大咒林,分析可能是由于春節(jié)的原因,故將2018年的2月和3月作為線下驗(yàn)證集垫竞,然后將其余的數(shù)據(jù)作為線下訓(xùn)練集蛀序。這種方式驗(yàn)證集比直接隨機(jī)選取數(shù)據(jù)做驗(yàn)證集效果更好活烙,線上提升在150分左右。如果分拆成兩個(gè)模型重贺,分別是2月作為驗(yàn)證集和3月作為驗(yàn)證集,線上還能再提升50分左右檬姥,最終為了模型更簡單粉怕,沒有使用這種方案。
3.模型結(jié)構(gòu)
我們的模型分為兩個(gè)部分秉犹,微觀部分對應(yīng)用戶的一些特征,主要挖掘方向就是用戶的還款風(fēng)險(xiǎn)以及還款時(shí)間偏好崇堵,特征見上面的特征部分,模型使用的事lightgbm模型鸳劳。宏觀部分主要是分析公司每月也搓,每日的資金運(yùn)轉(zhuǎn)流通情況,統(tǒng)計(jì)分析自然天資金回流的概率傍妒,在微觀預(yù)測的基礎(chǔ)上調(diào)整回流日資金分配。最終線上得分5424分颤练。
優(yōu)點(diǎn):
- 有一定可解釋性,知道特征來源
- 可操作性比較強(qiáng)
- 模型穩(wěn)定患雇,切榜成績幾乎沒有波動(dòng)
4.loss 優(yōu)化
- 預(yù)期類別權(quán)重調(diào)整:考慮到風(fēng)控模型應(yīng)該是越來越好宇挫,即往后逾期率會變低,如下圖所示捞稿,基于此拼缝,訓(xùn)練模型時(shí)將逾期的類別適當(dāng)降低咧七,線上提升50任斋;
-
日期權(quán)重調(diào)整:統(tǒng)計(jì)分析月初的還款量較大,月底的還款量較小废酷,將每月月初的loss權(quán)重增到到1.12,月末的loss權(quán)重的loss減小到0.79墨辛。復(fù)賽線上單模型5623睹簇。
loss2針對該部分的代碼:
# 設(shè)置時(shí)間權(quán)重權(quán)重 train_data['sample_weight'] = 1.0 train_data.loc[(train_data['repay_date'] == '2018-01-01') | (train_data['repay_date'] == '2018-02-01') | (train_data['repay_date'] == '2018-03-01') | (train_data['repay_date'] == '2018-04-01') | (train_data['repay_date'] == '2018-05-01') | (train_data['repay_date'] == '2018-06-01') | (train_data['repay_date'] == '2018-07-01') | (train_data['repay_date'] == '2018-08-01') | (train_data['repay_date'] == '2018-09-01') | (train_data['repay_date'] == '2018-10-01') | (train_data['repay_date'] == '2018-11-01') | (train_data['repay_date'] == '2018-12-01') | (train_data['repay_date'] == '2019-01-01'), ['sample_weight']] = 1.124115183 # 每月1號 train_data.loc[(train_data['repay_date'] == '2018-01-31') | (train_data['repay_date'] == '2018-02-28') | (train_data['repay_date'] == '2018-03-31') | (train_data['repay_date'] == '2018-04-30') | (train_data['repay_date'] == '2018-05-31') | (train_data['repay_date'] == '2018-06-30') | (train_data['repay_date'] == '2018-07-31') | (train_data['repay_date'] == '2018-08-31') | (train_data['repay_date'] == '2018-09-30') | (train_data['repay_date'] == '2018-10-31') | (train_data['repay_date'] == '2018-11-30') | (train_data['repay_date'] == '2018-12-31') | (train_data['repay_date'] == '2019-01-31'), ['sample_weight']] = 0.79326 # 每月月底
6.總結(jié)
- 用組合目標(biāo)趨近于實(shí)際的目標(biāo):整個(gè)賽題的目標(biāo)是想預(yù)測資產(chǎn)組合的回款情況太惠,但是資產(chǎn)組合我們無法預(yù)知疲憋,通過微觀的標(biāo)的回款情況加上宏 觀的日回流情況來對實(shí)際目標(biāo)進(jìn)行趨近
- 對整體目標(biāo)進(jìn)行可解釋性的拆解有助于特征的設(shè)計(jì):將目標(biāo)拆解為用戶的信用風(fēng)險(xiǎn)、還款習(xí)慣以及整體的日回流趨勢嗽元,讓特征提取思路清晰可追溯
- 可進(jìn)行多目標(biāo)學(xué)習(xí)的嘗試:基于我們現(xiàn)有模型的整體架構(gòu)和思想喂击,可進(jìn)行多目標(biāo)學(xué)習(xí)的嘗試翰绊,這方面可以繼續(xù)挖掘和擴(kuò)展
7. 可深入探索模型
?
推薦閱讀:
如果出現(xiàn)出現(xiàn)圖片失效的情況請閱讀:https://mp.weixin.qq.com/s/0V0CkJ7HE-O8jp8g4GCeGA
- 基于lightgbm實(shí)現(xiàn)的二分類、多分類和回歸任務(wù)
- 基于xgboost實(shí)現(xiàn)的二分類监嗜、多分類和回歸任務(wù)
- 基于keras實(shí)現(xiàn)的二分類裁奇、多分類和回歸任務(wù)
- 基于pytorch實(shí)現(xiàn)的二分類、多分類和回歸任務(wù)
微信公號:AI成長社:ML/DL/CV的成長圣地刽肠。<img src="http://tva1.sinaimg.cn/large/007X8olVly1g7m25vtimfj3076076mxm.jpg" width = "80" height = "80" />