天天看點

使用卡方分箱進行資料離散化

我們經常疑惑,有些算法例如邏輯回歸評分卡模組化時為什麼要用分箱技術。搞懂了離散化優點即可找到答案。

離散化(discretization):将定量資料轉化為定性資料的過程。

一些資料挖掘算法隻接受分類屬性(lvf、finco、樸素貝葉斯)。

當資料隻有定量特征時,學習過程通常效率較低且效果較差。

這種離散化方法使用合并方法。

相對類頻率應該在一個區間内相當一緻(否則應該分裂)

χ2 是用于檢驗兩個離散屬性在統計上獨立的假設的統計量度。

對于相鄰的兩個區間,如果 χ2 檢驗得出該類是獨立的區間,則應合并。如果 χ2 檢驗得出的結論是它們不是獨立的,即相對類别頻率的差異在統計上是顯着的,則兩個區間應保持獨立。

使用卡方分箱進行資料離散化

(卡方分布圖)

使用卡方分箱進行資料離散化

值可以計算如下:

使用卡方分箱進行資料離散化

計算每對相鄰區間的 χ2 值

合并具有最低 χ2 值的相鄰區間對

重複上述步驟,直到所有相鄰對的χ2值超過門檻值

門檻值:由顯着性水準和自由度決定 = 類數 -1

使用卡方分箱進行資料離散化

chi merge卡方分箱 的示例

chi merge 進行如下。最初,數值屬性 a 的每個不同值都被認為是一個區間。對每對相鄰區間進行 χ2 檢驗。具有最小 χ2 值的相鄰區間合并在一起,因為一對的低 χ 2 值表示相似的類分布。這個合并過程遞歸進行,直到滿足預定義的停止标準。

第1步

将資料集拆分為 2 個資料集并分别查找值。

資料集 1 → x,類

資料 集 2 → y,類

使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化

讓我們使用 iris 資料集并嘗試實施 chi merge 過程。

使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化
使用卡方分箱進行資料離散化

python scipy包有卡方檢驗函數

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.chi2_contingency.html

更多卡方檢驗代碼

此版本不用算出期望值,更加友善,參考的是2*2聯立表,自由度=1,critical value=2.7

使用卡方分箱進行資料離散化就為大家介紹到這裡。強調一下,并非所有算法都需要資料離散化處理。目前內建樹算法也很流行,例如xgboost,lightgbm,catboost,他們都不需要資料離散化處理。到底哪種方法最好,這個說不準,我通過多個項目測試,不同資料分布有不同結論!希望各位同學不要盲目迷信理論,自己多去做測試,多自我思考。

使用卡方分箱進行資料離散化就為大家介紹到這裡了,歡迎各位同學報名<python金融風控評分卡模型和資料分析微專業課>,學習更多相關知識

 https://edu.51cto.com/sd/f2e9b

使用卡方分箱進行資料離散化

版權聲明:文章來自公衆号(python風控模型),未經許可,不得抄襲。遵循cc 4.0 by-sa版權協定,轉載請附上原文出處連結及本聲明。