天天看點

風控模型優化細節介紹|含實操

作者:番茄風控大資料宣

随着疫情的放開,身邊的很多童鞋跟老師相繼陽了後又康複了。陽過後,是否還會重複感染,導緻“王重陽”。複陽的情況會存在,但比較少見。但以我們身邊的情況告知大家,的确在台灣的某些朋友(因為他們早些時間放開),的确有感染了兩次新館冠的。

咱們國内專家也說:也有可能是新冠病毒沒有活性的核酸片段在體内沒有清除幹淨而被檢測到。雖然有兩次陽的可能,但好在不會轉成危重症,而且一般也不具備傳染性。是以,即使陽過了,還是繼續防護,加強鍛煉身體,相信以我們自身的免疫力一定可以戰勝病毒。

在建立風控模型的過程中,我們最終的期望是擷取一個性能表現較優的模型,但在實際業務場景中,由于很多機器學習模型算法的參數較多,通過手動調參方式來優化模型不僅特别耗時,而且很難得到較為理想的結果。這種情況尤其是針對随機森林、XGBoost、LightGBM等算法模型,在模型訓練環節采用預設參數并不能得到較優模型,但為了提升模型效果,參數的不斷調優與測試往往是一個重要且必要的任務。本文将圍繞此類實際情況,對模型性能優化方面的參數自動化搜尋内容進行介紹,描述模型參數調優最常見的兩種搜尋政策,分别為網格搜尋與随機搜尋,具體描述将會結合實際案例來進行解讀分析。

我們先來了解下案例場景,模組化樣本資料共包含10000條樣本與10個特征,部分資料樣例如圖1所示,其中ID為樣本主鍵,X01~X10為特征變量,Y為目标變量(取值二分類1/0代表是否違約),場景具體需求是通過特征變量池,建立一個針對風控貸前環節的申請使用者違約預測模型。

風控模型優化細節介紹|含實操

編輯

添加圖檔注釋,不超過 140 字(可選)

圖1 樣本資料

根據以上執行個體資料,現采用XGBoost決策樹內建學習算法來實作模型的開發,一方面是XGBoost作為經典的樹模型在實際信貸風控應用中較廣,而且XGBoost算法的超參數較多,也符合本文要講解的多參數自動化調優的業務背景。

下面我們将模組化資料按照7:3比例随機拆分為訓練集與測試集,并采用算法的預設參數組合在訓練樣本集上來訓練拟合模型,同時通過測試樣本集上來評估模型的效果,具體實作過程與模型名額結果如圖2所示。

風控模型優化細節介紹|含實操

編輯切換為居中

添加圖檔注釋,不超過 140 字(可選)

圖2 模型訓練與評估

XGBoost模型的預設參數如圖3所示,在這樣輸入參數組合下的模型性能名額為accuracy=0.5373、AUC=0.5319(參見上圖模型評估print結果)。對于模型的參數調優往往是一個必然過程,而結合實際模組化經驗,圖3中的參數n_estimators(樹的數量)、max_depth(樹的深度)、learning_rate(學習率)等都是模型調參的主要對象。

風控模型優化細節介紹|含實操

編輯

添加圖檔注釋,不超過 140 字(可選)

圖3 XGBoost預設參數

接下來我們通過模型參數的自動搜尋方法來優化模型,先後介紹網格搜尋、随機搜尋的原理邏輯與實作過程,并以重要參數n_estimators(樹的數量)、max_depth(樹的深度)、learning_rate(學習率)為例,對前邊預設參數下的XGBoost違約預測模型進行性能優化。

1、網格搜尋

網格搜尋是将參數對象交叉形成的所有組合進行周遊,比如參數有3個且每個參數有3個取值,那麼對應有3*3*3=27種參數組合,網格搜尋是嘗試将所有組合完成測試與比較。這種方法由于輸入參數組合完整度較好,在實際應用中最為常見,在python中可以通過調用sklearn庫中GridSearchCV來實作,其中GridSearch代表網格搜尋,而CV代表交叉驗證(另一種優化模型政策,經常與參數搜尋結合應用)。

現對參數n_estimators、max_depth、learning_rate分别各取3種情況,這裡需要注意的是,最好将模型預設參數也放入其中(n_estimators=100、max_depth=6、learning_rate=0.3),便于最終的模型性能對比。這裡為了提高效率僅做示例,模型調優各參數的取值分布為:n_estimators={50,100,200},max_depth={3,6,10}、learning_rate={0.1,0.3,0.5}。針對模型參數調優的網格搜尋實作過程如圖4所示,最後通過best_params_輸出最優參數組合如圖5所示。

風控模型優化細節介紹|含實操

編輯

添加圖檔注釋,不超過 140 字(可選)

圖4 網格搜尋參數調優

風控模型優化細節介紹|含實操

編輯

添加圖檔注釋,不超過 140 字(可選)

圖5 網格搜尋最優參數

通過網格搜尋在預先給定的參數範圍内得到了最優參數後,然後将其重新入模在訓練資料集拟合模型,并在驗證資料集評估模型的性能效果,其過程與圖2一緻,隻是模型輸入參數進行了調整,具體如圖6所示。

風控模型優化細節介紹|含實操

編輯切換為居中

添加圖檔注釋,不超過 140 字(可選)

圖6 網格搜尋模型優化

從模型最終結果來看,調優後模型的accuracy(0.5610)、AUC(0.5395)與之前預設參數下模型的accuracy(0.5373)、AUC(0.5319)均有一定提升,說明網格搜尋對模型參數調優的有效性。

2、随機搜尋

随機搜尋是針對參數取值範圍,不需要嘗試所有可能的參數組合,而是從搜尋參數範圍内随機采樣進行測試,而且搜尋次數是可以通過參數自由指定的。随機搜尋與網格搜尋相比,效率更為快速,尤其是在參數較多且取值範圍較大的情況,随機搜尋表現更為高效,是以在類似機器學習樹模型參數調優的場景中也經常得到應用。随機搜尋在python中可以通過調用sklearn庫中RandomizedSearchCV來實作,其中RandomizedSearch代表随機搜尋,而CV代表交叉驗證。

現采用與網格搜尋同樣的參數範圍,通過随機搜尋方法來優化模型,具體實作過程如圖7所示,并将最優參數組合輸出如圖8所示。

風控模型優化細節介紹|含實操

編輯

添加圖檔注釋,不超過 140 字(可選)

圖7 随機搜尋參數調優

風控模型優化細節介紹|含實操

編輯

添加圖檔注釋,不超過 140 字(可選)

圖8 随機搜尋最優參數

通過随機搜尋在預先給定的參數範圍内得到了最優參數後,同樣在測試資料集上來驗證下效果,實作過程與結果如圖9所示

風控模型優化細節介紹|含實操

編輯切換為居中

添加圖檔注釋,不超過 140 字(可選)

圖9 網格搜尋模型優化

從模型最終結果來看,調優後模型的accuracy(0.5607)、AUC(0.5478)與之前預設參數下模型的accuracy(0.5373)、AUC(0.5319)均有一定提升,說明随機搜尋對模型參數調優也有較好的表現。

綜合以上内容,我們先後采用網格搜尋、随機搜尋兩種最常見的參數搜尋方法,對預設參數下模型的性能進行了優化,最後通過模型相關名額的對比(如圖10)也驗證了網格搜尋與随機搜尋的有效性,即模型的準确度和區分度都有一定的提升。

風控模型優化細節介紹|含實操

編輯

添加圖檔注釋,不超過 140 字(可選)

圖10 模型優化前後對比

當然,上圖展示的模型性能結果,雖然反映了網格搜尋、随機搜尋在模型參數調優的好處,但本文為了示範整個實作過程與效果,僅僅從模型參數中選擇了較為常見的3個參數(n_estimators、max_depth、learning_rate),且各參數的取值範圍隻有3種取值情況。如果将參數數量與取值類别的範圍擴大,模型性能優化後的效果會更為明顯。在機器學習模型調優的實際場景中,需要結合模型算法屬性、樣本資料情況、伺服器性能、參數重要程度等次元進行綜合考慮,适當選擇合理的參數範圍,以及參數優化的搜尋方法,進而實作模型應用效果的提升。

更多詳細内容,有興趣的童鞋可繼續關注:

第94期課程《風控煉丹爐—模型調參課》:

風控模型優化細節介紹|含實操

編輯切換為居中

添加圖檔注釋,不超過 140 字(可選)

...

~原創文章

繼續閱讀