從金融風(fēng)控實(shí)戰(zhàn)中學(xué)到的經(jīng)驗(yàn)

這個(gè)比賽來(lái)自于這里
https://kesci.com/apps/home_log/index.html#!/competition/56cd5f02b89b5bd026cb39c9/content/0


1、數(shù)據(jù)清洗

加載數(shù)據(jù)的方法:
data = pd.read_csv(filename,encoding="gb1830")

原始數(shù)據(jù)中會(huì)有噪聲,如果不做任何處理直接應(yīng)用胎撇,回拉偏模型荆几。

對(duì)缺失值的多維度處理

對(duì)于征信系統(tǒng)來(lái)說(shuō),用戶提供的信息越完整快毛,用戶可信度越高义锥,所以我們會(huì)很看重?cái)?shù)據(jù)中的缺失值。
對(duì)于其它的場(chǎng)景可以具體處理盛险。瞄摊、

首先,觀察數(shù)據(jù)缺失值的情況苦掘,包括橫向和縱向兩個(gè)方向觀察换帜。

panda中的方法
datafram.isnull().sum(axis=1) 每一行記錄有幾個(gè)缺失字段
datafrme.isnull().sum() 從列的維度進(jìn)行觀察,每一列有多少個(gè)記錄是缺失值

對(duì)于缺失值比例非常高的列鹤啡,其實(shí)可以直接刪除惯驼。
對(duì)于缺失比例不高的列,而且如果是類別型的列递瑰,可以直接把缺失當(dāng)作一個(gè)類別填充進(jìn)來(lái)祟牲,比如用-1填充。

df['colname'].fillna(-1)

如果是數(shù)值型的列抖部,我們可以用中位數(shù)等方法填充说贝。

按行統(tǒng)計(jì)每個(gè)樣本缺失屬性的個(gè)數(shù),然后按照缺失數(shù)量進(jìn)行排序慎颗。并給每個(gè)樣本一個(gè)序號(hào)乡恕。然后以序號(hào)作為橫坐標(biāo),以缺失值個(gè)數(shù)作為縱坐標(biāo)畫出一個(gè)散點(diǎn)圖俯萎。

對(duì)于訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)都是這樣操作几颜,于是畫出兩個(gè)散點(diǎn)圖。

盡量保證訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)上缺失值的分布模式是一樣的

觀察這兩個(gè)散點(diǎn)圖的形狀讯屈,有助于比較測(cè)試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)的缺失值的模式是否一樣蛋哭。

對(duì)于其中明顯不一樣的部分,也就是說(shuō)在訓(xùn)練數(shù)據(jù)中沒(méi)有能夠反應(yīng)這些測(cè)試樣本的測(cè)試集涮母,所以訓(xùn)練出來(lái)的模型也可能不能很好的應(yīng)用到這部分測(cè)試數(shù)據(jù)上谆趾。這部分訓(xùn)練數(shù)據(jù)可以作為離群點(diǎn)數(shù)據(jù)剔除。

對(duì)于變化幅度不大的列可以剔除

對(duì)于數(shù)值型特征叛本,通過(guò)計(jì)算列的方差沪蓬,來(lái)看屬性值的波動(dòng)情況。對(duì)于哪些非常小的列来候,可以剔除跷叉。

datafram.var()

對(duì)離群點(diǎn)的剔除方法

繼續(xù)尋找離群點(diǎn),由于離群點(diǎn)的異常特征可能來(lái)自于多個(gè)維度的組合营搅,我們除了根據(jù)樣本中缺失屬性的個(gè)數(shù)剔除掉一些離群點(diǎn)云挟。還可以這個(gè)做。

用xgboost得到特征的重要度转质,取前面最重要的n個(gè)特征园欣,然后重點(diǎn)觀察樣本在這些特征上的缺失值個(gè)數(shù),如果大于一定數(shù)量比如一半休蟹,也把這些樣本作為離群點(diǎn)剔除沸枯。這也是一個(gè)合理的假設(shè)日矫,既然這些特征最重要,但是你的記錄卻在這些特征上缺少關(guān)鍵數(shù)據(jù)绑榴,當(dāng)然做出來(lái)的模型會(huì)不可靠哪轿。

這個(gè)地方可以畫一個(gè)條形圖來(lái)可視化。

get_fscore

文本處理

比如大小寫統(tǒng)一變成小寫翔怎,去掉多余的空格缔逛。盡量讓相同含義的文本統(tǒng)一,不如省份統(tǒng)一都不帶省字樣姓惑。

dataframe['colname'].unique() 查看列上的值


2、特征工程

地理信息處理

在原始數(shù)據(jù)中按脚,記錄了用戶的省市信息于毙。屬于類別型變量,對(duì)這種變量最常用的做法就是One-hot encoding辅搬。但是這樣以來(lái)會(huì)得到很高維的稀疏特征唯沮。尤其是GBDT這種tree base的模型,這么多稀疏特征會(huì)讓運(yùn)行性能非常慢堪遂。

于是介蛉,作者在one-hot 基礎(chǔ)上加上了特征選擇。

從統(tǒng)計(jì)的角度做特征(處理省份信息)

這種方法是對(duì)那些取值比較少的類別型變量溶褪,肉眼可以觀察的過(guò)來(lái)的币旧,比如對(duì)省份直轄市,最多也不過(guò)就32個(gè)猿妈。

具體的做法是分層統(tǒng)計(jì)數(shù)據(jù)分布吹菱,其實(shí)就是看看哪些省市的違約率特別高,對(duì)于這些特別高的省份彭则,我們單獨(dú)提出來(lái)作為一個(gè)屬性鳍刷。
比如統(tǒng)計(jì)出四川、湖北俯抖、北京特別高输瓜。

于是可以構(gòu)建三個(gè)二值特征,是否四川用戶芬萍、是否湖北用戶尤揣、是否北京用戶。這樣就用了三個(gè)one-hot變量取代了原來(lái)n多的one-hot變量柬祠。

借助xgboost篩選(處理城市信息)

對(duì)于地級(jí)市這樣的特征芹缔,可能會(huì)有成百上千中看可能取值,這時(shí)再用基于統(tǒng)計(jì)的方法就觀察不過(guò)來(lái)了瓶盛。

這時(shí)我們就采用one-hot + xgboost的方法最欠。
比如地級(jí)市這一列示罗,one-hot之后得到400個(gè)二值屬性。我們就在這400個(gè)二值屬性上是用xgboost芝硬,然后得到特征的重要性蚜点。然后去最重要的城市做二值變量。

這一步其實(shí)就相當(dāng)于數(shù)據(jù)降維

添加城市等級(jí)

比如一線城市是1拌阴,二線城市是2绍绘,三線城市是3。

添加經(jīng)緯度

光有省市信息并不能體現(xiàn)更多的信息〕僭撸現(xiàn)在我們引入經(jīng)緯度陪拘,考慮地理上較勁的城市,違約率可能差不多纤壁,所以引入這部分信息左刽。最終結(jié)果有千分之幾的提升。

城市特征向量化

比如酌媒,對(duì)于數(shù)據(jù)集中的記錄按照城市計(jì)數(shù)欠痴,然后做個(gè)等值離散化。
也就是某個(gè)城市落在什么樣的人口區(qū)間秒咨,只不過(guò)是用樣本中的記錄數(shù)來(lái)作為人口屬性喇辽。

更多的思考

比如,數(shù)據(jù)中有兩個(gè)城市列雨席,可能一個(gè)是出生城市菩咨,一個(gè)是工作城市。我們可以看看這兩個(gè)城市是否一樣陡厘,并作為一個(gè)特征加進(jìn)來(lái)旦委。

總之,如何引入更多的特征雏亚,取決于對(duì)于數(shù)據(jù)業(yè)務(wù)的理解缨硝。

成交時(shí)間處理

類別型編碼

特征組合

gbdt做特征組合是有兩種方式
其一:就是得到樹的所有葉子節(jié)點(diǎn)結(jié)果
其二:根據(jù)特征重要度,這里用的方法

在這個(gè)案例中罢低,作者用xgboost得到原始記錄中特征的重要性查辩,然后對(duì)于其中topn 重要的特征兩兩組合得到更多(7000+)特征,然后對(duì)這7000個(gè)組合特征單獨(dú)訓(xùn)練模型网持。訓(xùn)練后又可以得到組合特征的重要程度宜岛。然后從中提取top500個(gè)組合特征,把這些組合特征加回到原始的特征中功舀。
在這個(gè)案例中萍倡,作者選擇待組合的特征都是數(shù)值型的,于是作者分別用了 兩兩相除的運(yùn)算辟汰,然后取出top500列敲,然后再做兩兩相乘取對(duì)數(shù)阱佛,又取出top200,把這700個(gè)都加回到原始特征體系中戴而。

當(dāng)然凑术,并不一定必須加回到原始特征體系,也可以就使用組合特征去做模型所意。


3淮逊、特征選擇

特征選擇至少可以有三種方法:
根據(jù)一些指標(biāo),比如Person相關(guān)系數(shù)(衡量變量之間的線性相關(guān)性)
正則化方法(L1)
基于模型的特征重要性排序(xgboost)扶踊,這里用的就是這個(gè)方法

用Xgboost的重要度排序

其實(shí)特征選擇和特征工程是交叉在一起進(jìn)行的泄鹏。


4、類別不平衡的處理

也是有三種方式:
代價(jià)敏感學(xué)習(xí)
上采樣(oversampling)
把多的類別拆成n份秧耗,每一份和少的一類做一個(gè)模型出來(lái)备籽,最后n個(gè)模型投票。有點(diǎn)類似bagging绣版。

代價(jià)敏感學(xué)習(xí)

修改損失函數(shù)

上采樣


5、模型融合

參考Blending歼疮。
作者用了一個(gè)LR杂抽、一個(gè)gbdt、SVC

保證模型結(jié)果穩(wěn)定
只是為了gbdt的穩(wěn)定韩脏,作者通過(guò)對(duì)參數(shù)加入微小擾動(dòng)生成30個(gè)gbdt缩麸,然后用折30個(gè)gbdt的輸出的平均值作為整個(gè)gbdt的平均值,這么做只是希望gbdt模型的輸出更穩(wěn)定赡矢,這個(gè)思想可以用于所有算法

然后把這三個(gè)模型用blend方法做融合杭朱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吹散,隨后出現(xiàn)的幾起案子弧械,更是在濱河造成了極大的恐慌,老刑警劉巖空民,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刃唐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡界轩,警方通過(guò)查閱死者的電腦和手機(jī)画饥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)浊猾,“玉大人抖甘,你說(shuō)我怎么就攤上這事『鳎” “怎么了衔彻?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵薇宠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我米奸,道長(zhǎng)昼接,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任悴晰,我火速辦了婚禮慢睡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铡溪。我一直安慰自己漂辐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布棕硫。 她就那樣靜靜地躺著髓涯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哈扮。 梳的紋絲不亂的頭發(fā)上纬纪,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音滑肉,去河邊找鬼包各。 笑死,一個(gè)胖子當(dāng)著我的面吹牛靶庙,可吹牛的內(nèi)容都是我干的问畅。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼六荒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼护姆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起掏击,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤卵皂,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后砚亭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渐裂,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年钠惩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柒凉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡篓跛,死狀恐怖膝捞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弦赖,我是刑警寧澤褪那,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站渴杆,受9級(jí)特大地震影響林艘,放射性物質(zhì)發(fā)生泄漏盖奈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一狐援、第九天 我趴在偏房一處隱蔽的房頂上張望钢坦。 院中可真熱鬧,春花似錦啥酱、人聲如沸爹凹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)禾酱。三九已至,卻和暖如春绘趋,著一層夾襖步出監(jiān)牢的瞬間颤陶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工陷遮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滓走,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓拷呆,卻偏偏與公主長(zhǎng)得像闲坎,于是被迫代替她去往敵國(guó)和親疫粥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茬斧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容