1. 程式人生 > >特徵工程之分箱

特徵工程之分箱

一般在建立分類模型時,需要對連續變數離散化,特徵離散化後,模型會更穩定,降低了模型過擬合的風險。比如在建立申請評分卡模型時用logsitic作為基模型就需要對連續變數進行離散化,離散化通常採用分箱法。

分箱的重要性及其優勢

  1. 離散特徵的增加和減少都很容易,易於模型的快速迭代;
  2. 稀疏向量內積乘法運算速度快,計算結果方便儲存,容易擴充套件;
  3. 離散化後的特徵對異常資料有很強的魯棒性:比如一個特徵是年齡>30是1,否則0。如果特徵沒有離散化,一個異常資料“年齡300歲”會給模型造成很大的干擾;
  4. 邏輯迴歸屬於廣義線性模型,表達能力受限;單變數離散化為N個後,每個變數有單獨的權重,相當於為模型引入了非線性,能夠提升模型表達能力,加大擬合;
  5. 離散化後可以進行特徵交叉,由M+N個變數變為M*N個變數,進一步引入非線性,提升表達能力;
  6. 特徵離散化後,模型會更穩定,比如如果對使用者年齡離散化,20-30作為一個區間,不會因為一個使用者年齡長了一歲就變成一個完全不同的人。當然處於區間相鄰處的樣本會剛好相反,所以怎麼劃分區間是門學問;
  7. 特徵離散化以後,起到了簡化了邏輯迴歸模型的作用,降低了模型過擬合的風險。
  8. 可以將缺失作為獨立的一類帶入模型。
  9. 將所有變數變換到相似的尺度上。

有監督分箱:

卡方分箱法(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。令pij表示第i個分箱內因變數取值為j的觀測的比例,i=1,…,k,j=1,…,J;那麼第i個分箱的熵值為Jj=0pij×logpij。如果第i個分箱內因變數各類別的比例相等,即p11=p12=p1J=1/J,那麼第i個分箱的熵值達到最大值;如果第i個分箱內因變數只有一種取值,即某個pij等於1而其他類別的比例等於0,那麼第i個分箱的熵值達到最小值。

(2) 令ri表示第i個分箱的觀測數佔所有觀測數的比例;那麼總熵值為ki=0Jj=0(pij×logpij)。需要使總熵值達到最小,也就是使分箱能夠最大限度地區分因變數的各類別。

無監督分箱法:

等距分箱

  從最小值到最大值之間,均分為 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值進行變數篩選後,然後才能放進模型訓練。