特徵選擇:分別用IV值和隨機森林進行特徵選擇。再用【演算法實踐】中的7個模型(邏輯回歸、SVM、決策樹、隨機森林、GBDT、XGBoost和LightGBM),進行模型評估。

用隨機森林做特徵選擇

在我們做特徵工程時,當我們提取完特徵後,可能存在並不是所有的特徵都能分類起到作用的問題,這個時候就需要使用特徵選擇的方法選出相對重要的特徵用於構建分類器。此外,使用特徵選擇這一步驟也大大減少了訓練的時間,而且模型的擬合能力也不會出現很大的降低問題。

隨即森林自帶「feature_importances_」屬性,可以計算出每個特徵的重要性。

from sklearn.ensemble import RandomForestClassifier
import numpy as np

trainy = data_last.status
trainx = data_last.drop(["status"],axis=1)

forest = RandomForestClassifier(n_estimators=1000, random_state=0,n_jobs=1)
forest.fit(trainx, trainy)
importance = forest.feature_importances_#得到每個特徵的重要度,是一個一維數組

importance表示每個特徵的重要度,是一個一維數組,將其變為dataframe,然後降序處理。

importance_data = pd.DataFrame(importance,columns=["importance"])
importance_data = importance_data.sort_values("importance",ascending=False)

取重要性大於等於0.01的特徵,生成新的訓練數據trainx_1。

importance_1 = importance_data[importance_data.importance>=0.01]
trainx_1 = trainx.iloc[:,importance_1.index]

用IV值進行特徵篩選

IV,全稱是Information Value,中文意思是信息價值,或者信息量,用來衡量一個變數的預測能力。

在對自變數進行篩選的過程中,當變數有數百個時,不會把變數直接放到模型中去進行擬合訓練,而是會用一些方法,從幾百個自變數中挑選一些出來重要變數,放進模型,形成入模變數列表。

挑選入模變數需要考慮的因素很多,比如:變數的預測能力,變數之間的相關性,變數的簡單性(容易生成和使用),變數的強壯性(不容易被繞過),變數在業務上的可解釋性(被挑戰時可以解釋的通)等等。但是,其中最主要和最直接的衡量標準是變數的預測能力。

需要一些具體的量化指標來衡量每個自變數的預測能力,並根據這些量化指標的大小,來確定哪些變數進入模型。IV就是這樣一種指標,可以用來衡量自變數的預測能力。類似的指標還有信息增益、基尼係數等等。

WOE

計算IV值需要用到WOE,即weight of evidence,翻譯為證據權重。

變數分箱

然而,在計算WOE和IV值之前,需要對變數進行分箱。

變數分箱

在建模中,變數分箱(binning)是對連續變數離散化(discretization)的一種稱呼。分箱一般有常用的等距分段、等深分段、最優分段。

其中等距分段(Equval length intervals)是指分段的區間是一致的,比如年齡以十年作為一個分段;等深分段(Equal frequency intervals)是先確定分段數量,然後令每個分段中數據數量大致相等;最優分段(Optimal Binning)又叫監督離散化(supervised discretizaion),使用遞歸劃分(Recursive Partitioning)將連續變數分為分段,背後是一種基於條件推斷查找較佳分組的演算法(Conditional Inference Tree)。

參考資料:

Python評分卡建模-卡方分箱(1)?

mp.weixin.qq.com圖標Python評分卡建模—卡方分箱(2)之代碼實現?

mp.weixin.qq.com
圖標
https://blog.csdn.net/bitcarmanlee/article/details/52279907?

blog.csdn.net

https://blog.csdn.net/bear507/article/details/86726962?

blog.csdn.net


推薦閱讀:

相關文章