sklearn實戰-乳腺癌細胞數據挖掘( 博主親自錄製)html
(三)KS檢驗web
將KS檢驗應用於信用評級模型主要是爲了驗證模型對違約對象的區分能力,一般是在模型預測全體樣本的信用評分後,將全體樣本按違約與非違約分爲兩部分,而後用KS統計量來檢驗這兩組樣本信用評分的分佈是否有顯著差別。dom
兩條曲線算的是累計機率ide
計算各階段的差值post
最後算差值的最大值url
KS檢驗也經常使用來選擇有預測能力的單變量。就是經過某個單變量把樣本分紅兩組,看這兩組的樣本有關KS指標的大小來決定此變量的預測能力。spa
模型應該要能區別出違約戶和正常戶之間的差別,違約戶的評級分配應當不一樣於正常戶的評級分配。運用KS檢驗來驗證模型可否區別出違約戶與正常戶,當兩組樣本的累積相對次數分配很是接近,且差別爲隨機時,則兩組樣本的評級分配應爲一致;反之當兩組樣本的評級分配並不一致時,樣本累積相對次數分配的差別會很顯,以下圖所示:3d
KS檢驗模型區分能力code
對整體十等分,並按照違約率降序排序,計算每一等分中違約與正常百分比的累計分佈,繪製出二者差別
KS的檢驗步驟爲:
KS值越大,表示模型可以將正、負客戶區分開的程度越大。
一般來說,KS>0.2即表示模型有較好的預測準確性。
一、計算正常戶和違約戶在各評分階段下的累積比率
二、 計算各階段累積比率之差
三、 找出最大的累積比率之差,即爲KS
另外,下表爲KS值對應違約區別能力:
假設模型分數有0-1000分
分數分爲10個階段
一階段:0-100分
二階段:100-200分
三階段:200-300分
.........
十階段:900-1000分
計算每一個階段壞客戶累積佔比和好客戶累積佔比,例如第五階段,壞客戶累積佔比34%,好客戶累積佔比81%,差值47.4%,最大
47%超過閾值20%,模型區分能力很是強
ks即便顯著,分數段預測準確率也不必定高
假設檢驗的基本思想:
若對整體的某個假設是真實的,那麼不利於或者不能支持這一假設的事件A在一次試驗中是幾乎不可能發生的。若是事件A真的發生了,則有理由懷疑這一假設的真實性,從而拒絕該假設。
實質分析:
假設檢驗實質上是對原假設是否正確進行檢驗,所以檢驗過程當中要使原假設獲得維護,使之不輕易被拒絕;否認原假設必須有充分的理由。同時,當原假設被接受時,也只能認爲否認該假設的根據不充分,而不是認爲它絕對正確。
一、檢驗指定的數列是否服從正態分佈
藉助假設檢驗的思想,利用K-S檢驗能夠對數列的性質進行檢驗,看代碼:
from scipy.stats import kstest import numpy as np x = np.random.normal(0,1,1000) test_stat = kstest(x, 'norm')
首先生成1000個服從N(0,1)標準正態分佈的隨機數,在使用k-s檢驗該數據是否服從正態分佈,提出假設:x從正態分佈。
最終返回的結果,p-value=0.76584491300591395,比指定的顯著水平(假設爲5%)大,則咱們不能拒絕假設:x服從正態分佈。
這並非說x服從正態分佈必定是正確的,而是說沒有充分的證據證實x不服從正態分佈。所以咱們的假設被接受,認爲x服從正態分佈。
若是p-value小於咱們指定的顯著性水平,則咱們能夠確定的拒絕提出的假設,認爲x確定不服從正態分佈,這個拒絕是絕對正確的。
二、檢驗指定的兩個數列是否服從相同分佈
from scipy.stats import ks_2samp beta=np.random.beta(7,5,1000) norm=np.random.normal(0,1,1000) ks_2samp(beta,norm)
咱們先分別使用beta分佈和normal分佈產生兩個樣本大小爲1000的數列,使用ks_2samp檢驗兩個數列是否來自同一個樣本,提出假設:beta和norm服從相同的分佈。
最終返回的結果,p-value=4.7405805465370525e-159,比指定的顯著水平(假設爲5%)小,則咱們徹底能夠拒絕假設:beta和norm不服從同一分佈。
KS臨界值表
www.cust.edu.tw/mathmet/KS-critical.docx