特徵工程之分箱
一般在建立分類模型時,需要對連續變數離散化,特徵離散化後,模型會更穩定,降低了模型過擬合的風險。比如在建立申請評分卡模型時用logsitic作為基模型就需要對連續變數進行離散化,離散化通常採用分箱法。
分箱的重要性及其優勢
- 離散特徵的增加和減少都很容易,易於模型的快速迭代;
- 稀疏向量內積乘法運算速度快,計算結果方便儲存,容易擴充套件;
- 離散化後的特徵對異常資料有很強的魯棒性:比如一個特徵是年齡>30是1,否則0。如果特徵沒有離散化,一個異常資料“年齡300歲”會給模型造成很大的干擾;
- 邏輯迴歸屬於廣義線性模型,表達能力受限;單變數離散化為N個後,每個變數有單獨的權重,相當於為模型引入了非線性,能夠提升模型表達能力,加大擬合;
- 離散化後可以進行特徵交叉,由M+N個變數變為M*N個變數,進一步引入非線性,提升表達能力;
- 特徵離散化後,模型會更穩定,比如如果對使用者年齡離散化,20-30作為一個區間,不會因為一個使用者年齡長了一歲就變成一個完全不同的人。當然處於區間相鄰處的樣本會剛好相反,所以怎麼劃分區間是門學問;
- 特徵離散化以後,起到了簡化了邏輯迴歸模型的作用,降低了模型過擬合的風險。
- 可以將缺失作為獨立的一類帶入模型。
- 將所有變數變換到相似的尺度上。
有監督分箱:
卡方分箱法(ChiMerge)
自底向上的(即基於合併的)資料離散化方法。
它依賴於卡方檢驗:具有最小卡方值的相鄰區間合併在一起,直到滿足確定的停止準則。
基本思想:
對於精確的離散化,相對類頻率在一個區間內應當完全一致。因此,如果兩個相鄰的區間具有非常類似的類分佈,則這兩個區間可以合併;否則,它們應當保持分開。而低卡方值表明它們具有相似的類分佈。
這裡需要注意初始化時需要對例項進行排序,在排序的基礎上進行合併。
卡方閾值的確定:
根據顯著性水平和自由度得到卡方值
自由度比類別數量小1。例如:有3類,自由度為2,則90%置信度(10%顯著性水平)下,卡方的值為4.6。
閾值的意義
類別和屬性獨立時,有90%的可能性,計算得到的卡方值會小於4.6。 大於閾值4.6的卡方值就說明屬性和類不是相互獨立的,不能合併。如果閾值選的大,區間合併就會進行很多次,離散後的區間數量少、區間大。
注:
1、ChiMerge演算法推薦使用0.90、0.95、0.99置信度,最大區間數取10到15之間.
2、也可以不考慮卡方閾值,此時可以考慮最小區間數或者最大區間數。指定區間數量的上限和下限,最多幾個區間,最少幾個區間。
3、對於類別型變數,需要分箱時需要按照某種方式進行排序。
最小熵法分箱
(1) 假設因變數為分類變數,可取值1,… ,J。令
(2) 令
無監督分箱法:
等距分箱
從最小值到最大值之間,均分為 N 等份, 這樣, 如果 A,B 為最小最大值, 則每個區間的長度為 W=(B−A)/N , 則區間邊界值為A+W,A+2W,….A+(N−1)W 。這裡只考慮邊界,每個等份裡面的例項數量可能不等。
等頻分箱
區間的邊界值要經過選擇,使得每個區間包含大致相等的例項數量。比如說 N=10 ,每個區間應該包含大約10%的例項。
以上兩種演算法的弊端
比如,等寬區間劃分,劃分為5區間,最高工資為50000,則所有工資低於10000的人都被劃分到同一區間。等頻區間可能正好相反,所有工資高於50000的人都會被劃分到50000這一區間中。這兩種演算法都忽略了例項所屬的型別,落在正確區間裡的偶然性很大。
聚類分箱
基於k均值聚類的分箱:k均值聚類法將觀測值聚為k類,但在聚類過程中需要保證分箱的有序性:第一個分箱中所有觀測值都要小於第二個分箱中的觀測值,第二個分箱中所有觀測值都要小於第三個分箱中的觀測值,等等。
我們對特徵進行分箱後,需要對分箱後的每組(箱)進行woe編碼和IV值的計算,通過IV值進行變數篩選後,然後才能放進模型訓練。