我們經常疑惑,有些算法例如邏輯回歸評分卡模組化時為什麼要用分箱技術。搞懂了離散化優點即可找到答案。
離散化(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版權協定,轉載請附上原文出處連結及本聲明。