python评分卡建模-卡方分箱
今天主要給大家講講卡方分箱算法ChiMerge。先給大家介紹一下經常被提到的卡方分布和卡方檢驗是什么。
一、卡方分布
卡方分布(chi-square distribution, χ2-distribution)是概率統計里常用的一種概率分布,也是統計推斷里應用最廣泛的概率分布之一,在假設檢驗與置信區間的計算中經常能見到卡方分布的身影。
卡方分布的定義如下:
若k個獨立的隨機變量Z1, Z2,..., Zk 滿足標準正態分布 N(0,1) , 則這k個隨機變量的平方和:
為服從自由度為k的卡方分布,記作:
或者記作
。
二、卡方檢驗
χ2檢驗是以χ2分布為基礎的一種假設檢驗方法,主要用于分類變量之間的獨立性檢驗。
其基本思想是根據樣本數據推斷總體的分布與期望分布是否有顯著性差異,或者推斷兩個分類變量是否相關或者獨立。
一般可以設原假設為 :觀察頻數與期望頻數沒有差異,或者兩個變量相互獨立不相關。
實際應用中,我們先假設原假設成立,計算出卡方的值,卡方表示觀察值與理論值間的偏離程度。
卡方值的計算公式為:
其中A為實際頻數,E為期望頻數。卡方值用于衡量實際值與理論值的差異程度,這也是卡方檢驗的核心思想。
卡方值包含了以下兩個信息:
1.實際值與理論值偏差的絕對大小。 2.差異程度與理論值的相對大小。
上述計算的卡方值服從卡方分布。根據卡方分布,卡方統計量以及自由度,可以確定在原假設成立的情況下獲得當前統計量以及更極端情況的概率p。如果p很小,說明觀察值與理論值的偏離程度大,應該拒絕原假設。否則不能拒絕原假設。
三、卡方檢驗實例
某醫院對某種病癥的患者使用了A,B兩種不同的療法,結果如表1,問兩種療法有無差別?
表1 兩種療法治療卵巢癌的療效比較
組別
有效
無效
合計
有效率(%)
A組
19
24
43
44.2
B組
34
10
44
77.3
合計
53
34
87
60.9
可以計算出各格內的期望頻數。
第1行1列: 43×53/87=26.2
第1行2列: 43×34/87=16.8
第2行1列: 44×53/87=26.8
第2行2列: 4×34/87=17.2
先建立原假設:A、B兩種療法沒有區別。根據卡方值的計算公式,計算:
算得卡方值=10.01。
得到卡方值以后,接下來需要查詢卡方分布表來判斷p值,從而做出接受或拒絕原假設的決定。
首先我們明確自由度的概念:自由度k=(行數-1)*(列數-1)。 這里k=1.然后看卡方分布的臨界概率表,我們可以用如下代碼生成:
import numpy as np
from scipy.stats import chi2
import pandas as pd
# chi square distribution
percents = [ 0.95, 0.90, 0.5,0.1, 0.05, 0.025, 0.01, 0.005]
df =pd.DataFrame(np.array([chi2.isf(percents, df=i) for i in range(1, 30)]))
df.columns = percents
df.index =df.index+1
pd.set_option('precision', 3)
df
查表自由度為1,p=0.05的卡方值為3.841,而此例卡方值10.01>3.841,因此 p < 0.05,說明原假設在0.05的顯著性水平下是可以拒絕的。也就是說,原假設不成立。
四、ChiMerge分箱算法
ChiMerge卡方分箱算法由Kerber于1992提出。
它主要包括兩個階段:初始化階段和自底向上的合并階段。
1.初始化階段:
首先按照屬性值的大小進行排序(對于非連續特征,需要先做數值轉換,比如轉為壞人率,然后排序),然后每個屬性值單獨作為一組。
2.合并階段:
(1)對每一對相鄰的組,計算卡方值。
(2)根據計算的卡方值,對其中最小的一對鄰組合并為一組。
(3)不斷重復(1),(2)直到計算出的卡方值都不低于事先設定的閾值,或者分組數達到一定的條件(如最小分組數5,最大分組數8)。
值得注意的是,小編之前發現有的實現方法在合并階段,計算的并非相鄰組的卡方值(只考慮在此兩組內的樣本,并計算期望頻數),因為他們用整體樣本來計算此相鄰兩組的期望頻數。
下圖是著名的鳶尾花數據集sepal-length屬性值的分組及相鄰組的卡方值。最左側是屬性值,中間3列是class的頻數,最右是卡方值。這個分箱是以卡方閾值1.4的結果。可以看出,最小的組為[6.7,7.0),它的卡方值是1.5。
如果進一步提高閾值,如設置為4.6,那么以上分箱還將繼續合并,最終的分箱如下圖:
卡方分箱除了用閾值來做約束條件,還可以進一步的加入分箱數約束,以及最小箱占比,壞人率約束等。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的python评分卡建模-卡方分箱的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 数据挖掘建模之常见概率分布总结
- 下一篇: 【采用】机器学习在金融大数据风险建模中的
