![]()
GitHub上有個(gè)項(xiàng)目,作者把三年前自己寫的信用評(píng)分模型代碼翻出來,發(fā)現(xiàn)當(dāng)初連變量關(guān)系都沒搞懂就敢上線。這帖子現(xiàn)在成了風(fēng)控新人的必讀——不是因?yàn)樗喔呒?jí),而是它記錄了一個(gè)產(chǎn)品經(jīng)理轉(zhuǎn)型數(shù)據(jù)科學(xué)家時(shí),那些沒人教、只能硬踩的坑。
作者說,他花了整整三年,才在一次真實(shí)的信貸評(píng)分項(xiàng)目里,真正理解變量關(guān)系分析的價(jià)值。
這篇指南的核心就一件事:用Python做特征選擇時(shí),怎么判斷兩個(gè)變量之間到底有沒有關(guān)系、關(guān)系有多強(qiáng)。聽起來基礎(chǔ)?但Kaggle上那些"拿來即用"的教程,恰恰跳過了這一步。
為什么變量關(guān)系分析是風(fēng)控模型的"體檢報(bào)告"
信用評(píng)分模型有兩個(gè)核心目標(biāo)。一是找出最能解釋違約現(xiàn)象的變量,二是砍掉冗余特征、降低維度。但很多人直接跳到最后一步——扔給XGBoost讓它自己選。
作者早期就是這么干的。結(jié)果模型里混進(jìn)了和目標(biāo)毫無(wú)關(guān)系的變量,上線后表現(xiàn)詭異,回查才發(fā)現(xiàn)是預(yù)處理階段漏了關(guān)鍵檢驗(yàn)。
變量關(guān)系分析相當(dāng)于給建模流程做體檢:既能提前鎖定大概率保留的特征,也能暴露流程漏洞。比如某個(gè)變量和違約率毫無(wú)關(guān)聯(lián),卻出現(xiàn)在最終模型里,這說明前面的特征篩選環(huán)節(jié)出了問題。
這篇指南聚焦三類關(guān)系:連續(xù)變量vs連續(xù)變量、連續(xù)變量vs分類變量、分類變量vs分類變量。所有分析都在訓(xùn)練集上完成,且前提是已經(jīng)完成了異常值和缺失值處理——作者特別強(qiáng)調(diào),臟數(shù)據(jù)會(huì)嚴(yán)重扭曲統(tǒng)計(jì)量和可視化結(jié)果。
連續(xù)變量:別只看相關(guān)系數(shù),分布形狀會(huì)騙人
![]()
兩個(gè)連續(xù)變量的關(guān)系,新手第一反應(yīng)是皮爾遜相關(guān)系數(shù)。但作者提醒:線性相關(guān)只是眾多關(guān)系形態(tài)中的一種。
他建議的組合拳是:散點(diǎn)圖+相關(guān)系數(shù)+斯皮爾曼等級(jí)相關(guān)。皮爾遜對(duì)異常值極度敏感,斯皮爾曼更穩(wěn)健。如果兩者差異很大,說明數(shù)據(jù)分布有偏或者存在極端值——這時(shí)候得先回去檢查清洗步驟。
一個(gè)實(shí)操細(xì)節(jié):風(fēng)控場(chǎng)景里,收入與違約率的關(guān)系往往不是線性的。低收入群體違約率高,中等收入穩(wěn)定,高收入群體可能因?yàn)檫^度授信再次出現(xiàn)違約高峰。這種U型關(guān)系,皮爾遜系數(shù)可能接近零,但分組后的箱線圖會(huì)暴露真相。
作者提供的GitHub代碼里,用Seaborn的jointplot疊加核密度估計(jì),一眼就能看出分布形態(tài)是否對(duì)稱、是否存在明顯的子群體。
連續(xù)vs分類:選對(duì)檢驗(yàn)方法,p值才有意義
這是風(fēng)控最常見的場(chǎng)景:年齡、收入、負(fù)債比(連續(xù))vs 是否違約(二分類)。
新手容易犯的錯(cuò)誤是直接用t檢驗(yàn)比較兩組均值。但違約群體的收入分布通常右偏嚴(yán)重,方差也不齊,違反t檢驗(yàn)的前提假設(shè)。作者推薦Mann-Whitney U檢驗(yàn)作為非參數(shù)替代,或者直接用Kruskal-Wallis檢驗(yàn)處理多分類目標(biāo)。
可視化方面,小提琴圖比箱線圖更能展示分布形狀。作者代碼里的一個(gè)技巧:把違約和非違約群體的核密度曲線疊加,用透明度區(qū)分,重疊區(qū)域一目了然。
關(guān)鍵判斷標(biāo)準(zhǔn)不是p值是否小于0.05,而是效應(yīng)量(effect size)。大樣本下,微小的差異也能顯著,但對(duì)模型預(yù)測(cè)價(jià)值有限。作者建議結(jié)合Cohen's d或Cliff's delta來量化實(shí)際差異幅度。
![]()
分類變量vs分類變量:卡方檢驗(yàn)的隱藏前提
性別、學(xué)歷、職業(yè)類別與違約標(biāo)簽的關(guān)系分析,卡方檢驗(yàn)是標(biāo)配。但作者指出一個(gè)常被忽略的點(diǎn):期望頻數(shù)小于5的單元格不能超過20%,否則卡方近似失效。
風(fēng)控?cái)?shù)據(jù)里,高學(xué)歷違約樣本往往稀少,容易觸發(fā)這個(gè)條件。這時(shí)候Fisher精確檢驗(yàn)更可靠,或者用似然比卡方(likelihood ratio chi-square)作為替代。
關(guān)聯(lián)強(qiáng)度的度量,Cramér's V比卡方值本身更直觀,取值0-1,便于跨特征比較。作者代碼里封裝了一個(gè)函數(shù),自動(dòng)輸出檢驗(yàn)結(jié)果、效應(yīng)量和熱力圖,把列聯(lián)表可視化成交叉頻率矩陣。
一個(gè)風(fēng)控特有的細(xì)節(jié):某些分類變量的順序其實(shí)有意義,比如學(xué)歷(小學(xué)<中學(xué)<大學(xué))。這時(shí)候用Spearman相關(guān)或者把類別編碼為數(shù)值后再分析,可能比純名義變量處理更有效。作者建議先畫馬賽克圖(mosaic plot),人工判斷是否存在單調(diào)趨勢(shì)。
從"跑通代碼"到"理解業(yè)務(wù)":作者留的開放問題
指南最后沒有給標(biāo)準(zhǔn)答案,而是拋了一個(gè)作者自己還在琢磨的問題:變量關(guān)系分析的兩個(gè)目標(biāo)——解釋力和降維——在風(fēng)控場(chǎng)景里經(jīng)常沖突。
高度相關(guān)的變量(比如月收入和月還款額)從降維角度該刪一個(gè),但從解釋角度,兩者對(duì)審批人員的決策意義完全不同。刪哪個(gè)?作者的傾向是保解釋力,因?yàn)轱L(fēng)控模型的最終用戶是信審專員,他們需要清晰的拒絕理由。
GitHub代碼里,作者留了一個(gè)TODO注釋:實(shí)現(xiàn)一個(gè)函數(shù),自動(dòng)標(biāo)記"統(tǒng)計(jì)冗余但業(yè)務(wù)不可合并"的變量對(duì),供人工復(fù)核。這個(gè)功能他還沒寫完。
如果你也在用Python做信用評(píng)分,你會(huì)怎么處理這種沖突——讓模型性能優(yōu)先,還是讓審批邏輯優(yōu)先?作者的代碼倉(cāng)庫(kù)在持續(xù)更新,最新一次commit是三天前,標(biāo)題是"add business rule override for highly correlated features"。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.