評分卡系列(三):分類學習器的評估


作者:JSong 時間:2018.01.14

評分卡可以用來預測客戶的好壞。當一個評分卡已經構建完成,並且有一組個人分數和其對應的好壞狀態的數據時,我們想知道所構建的評分卡是否可靠?可靠程度如何?而這取決於如何去定義這個“好”字。一般有三種角度可以來評估:

  • 評分卡分類划分的准確程度,如錯誤率、准確率、召回率、F1
  • 評分卡的判別能力,評估評分卡將好人和壞人分離開的程度,如KS統計量、ROC曲線、GINI系數
  • 評分卡概率預測的校准精度

為了后面討論簡單,我們假設模型輸出的是從0到1000的信用評分(用預測概率線性變換即可)。當選定好一個閾值 c 后,我們把分數 s 大於 c的判定為好人,小於 c 的判定為壞人。以我們在本系列第二篇文章中的結果為例,下圖是好人/壞人的密度函數和對應的ROC曲線。

閾值的選取標准可以按照ROC曲線中的KS統計量來選取,也可以按照最大的 F1 分數來。這里我們選用第一種方法,可以得到了下面的混淆矩陣:

預測壞人 預測好人
實際壞人 440(2.6%) 4373(25.5%)
實際好人 379(2.2%) 11990(69.8%)

我們將從概率測度的角度來考慮分類學習器的評估。信用評分S是一個標准的隨機變量, 令 f(s|G) 和 f(s|B) 分別是好人和壞人的條件概率密度函數,對應的分布函數依次是 F(s|G) 和F(s|B) 。當只有混淆矩陣時,S是離散的,在上面的例子中,對應的條件概率為:p(s=好人|G)=96.93%, p(s=壞人|G)=3.06%. 一個好的評分卡,其好人和壞人的條件概率分布之間的差異性肯定很大。

接下來我將從四個方面來評估分類學習器的性能

  • 一般的分類學習器的性能度量
  • 基於隨機變量密度函數的評估
  • 基於隨機變量分布函數的評估
  • 基於實驗的估計方法

我們先從一般的分類學習器的性能度量開始,此時因為因變量的類別數可能大於2,所以更多的是分類的准確度上來考量的。

1、一般的分類學習器的性能度量

在預測任務中,給定樣例集

\[D=[(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)] \]

其中 y_i 是示例 x_i 的真實標記。要評估學習器 f 的性能,就要把學習器預測結果 f(x) 與真實標記進行比較。

在回歸任務中,最常用的性能度量是“均方誤差”(mean squared eror,MSE)

\[E(f;D)=\int_{D}(f(x)-y)^2p(x)dx=\frac{1}{m}\sum_{i=1}^{m}(f(x_i)-y_i)^2 \]

在分類任務中,最常用的有錯誤率和精度。給定樣例集D,分類錯誤率可以定義為:

\[E(f;D)=\int_{D}\mathbb{I}(f(x)\neq\,y)p(x)dx=\frac{1}{m}\sum_{i=1}^{m}\mathbb{I}(f(x_i)\ \neq\ y_i) \]

精度則定義為

\[acc(f;D)=\int_{D}\mathbb{I}(f(x)=y)p(x)dx=\frac{1}{m}\sum_{i=1}^{m}\mathbb{I}(f(x_i)\ =\ y_i) \]

在評分模型中,精度的計算方法就是

\[acc=\frac{預測類別==實際類別的樣本數}{總樣本數} \]

1.1 准確率、召回率與F1

假定農夫拉來一車西瓜,我們用訓練好的模型對這些西瓜進行判別,顯然,錯誤率衡量了有多少比例的瓜被判別錯誤。但是若我們關心的是“挑出的西瓜中有多少比例是好瓜”,或者“所有好瓜中有多少比例被挑了出來”,那么錯誤率顯然就不夠用了。

對於二分類問題,可將樣本根據其真實類別與學習器預測類別的組合划分為真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四種情形。分類結果的 混淆矩陣 如下表所示:

預測正例 預測反例
實際正例 TP(真正例) FN(假反例)
實際反例 FP(假正例) TN(真反例)

我們將 准確率(P,查准率)召回率(R,查全率) 分別定義如下

\[P=\frac{TP}{TP+FP} \]

\[R=\frac{TP}{TP+FN} \]

准確率和召回率是一對矛盾的度量。在垃圾郵件分類模型中,我們更加看重准確率,因為預測為垃圾郵件的實例中要盡可能少的出現正常郵件。而在生產線的次品判定模型中,我們更看重召回率,因為預測是正品的實例中要盡可能少的出現次品(這樣需要召回的商品就少)。

將准確率作為y軸,召回率作為x軸,可以得到P-R曲線,其直觀顯示出分類學習期在樣本集上的准確率、召回率。另外為綜合考慮兩個指標,我們有P和R的調和平均數,F1度量

\[F1=\frac{2\times\text{P}\times\text{R}}{\text{P}+\text{R}} \]

有時候要調整准確率或者召回率的權重,這時候可以用加權后的F1度量

\[F1=\frac{(1+\beta)\times\text{P}\times\text{R}}{\beta\times\text{P}+\text{R}} \]

其中β>0度量了召回率相對准確率的重要性,β>1時召回率有更大影響。

注:相對於幾何平均數和算術平均數,調和平均數更注重較小者,且當各平均數相等時,調和平均數對應的P和R之間的差值相對更小。

在本文的評分模型中,准確率=440/(440+379)=53.7%, 召回率=440/(440+4373)=9.1%, F1=15.6%. P-ROC曲線是:

請忽略效果,我會在本系列的最后一篇文章中來提高模型效果。

1.2 代價敏感錯誤率與代價曲線

以二分類任務為例,我們可以設定一個“代價矩陣”。

預測正例 預測反例
實際正例 0 cost1
實際反例 cost2 0

\(D^+\)\(D^-\) 分別代表樣例集D的正例子集和反例子集,則可以定義“代價敏感錯誤率為 ”:

\[E(f;\text{cost})=\frac{1}{m}(\sum_{x_i\in\ D^{+}}\mathbb{I}(f(x_i)\ne\ y_i)\times\text{cost1}+\sum_{x_i\in\ D^{-}}\mathbb{I}(f(x_i)\neq\ y_i)\times\text{cost2}) \]

代價敏感錯誤率實現的效果與樣本不平衡中的上下采樣類似(可參考本公眾號的文章《講講樣本不平衡問題》),cost1 相對於cost2 越大,等價於正例被抽中的概率越大。所以該方法常用於樣本不平衡問題,在一些特定領域,可能比采樣的效果要好。

2、基於隨機變量密度函數的評估

如下圖,是兩組好人和壞人的條件概率密度函數圖,很明顯上圖更好,因為好人和壞人的信用評分分離的很好。這一節我們從兩個概率密度函數的差異性入手,分析分類學習期的性能評估方法。

在這之前,我們先介紹一下熵的概念,這在分類算法中很常見也很有用。

2.1 信息熵

先來看一道老鼠與毒葯的問題:

有100只一模一樣的瓶子,編號1-100。其中99瓶是水,一瓶是看起來像水的毒葯。只要老鼠喝下一小口毒葯,一天后則死亡。請問最少需要幾只老鼠才能在一天檢驗出哪個號碼瓶子里是毒葯?

我們可以用信息論來解決。在這個問題中,對於每一個瓶子而言,其是毒葯的概率都是1/100,要完全表示所有的可能性,我們需要用

\[\log_2 100 = 6.64 <7\,\mbox{(字節)} \]

至少7個字節來存儲,於是答案就是7只老鼠。這就是熵,熵是信息論中的基礎,用於度量隨機變量的不確定性程度。對於一般的事件 X(每種可能性發生的概率不一樣),我們有:

\[H(X)=-\sum_{x\in X} p(x)\log p(x) \]

這里畫了一張圖,用於表示一些基本的熵以及它們之間的關系。

從圖中可以看出

\[聯合熵 H(X,Y) = 熵 H(X) + 條件熵 H(Y|X) \]

\[= 條件熵 H(X|Y) + 互信息 I(X;Y) +條件熵 H(Y|X) \]

另外除了這四種熵,比較常用的還有 相對熵交叉熵

  • 相對熵(K-L散度)

相對熵是兩個隨機分布之間距離的度量。在統計學中,它對應的是似然比的對數期望。相對熵 D(p||q) 度量了當真實分布為 p 而假定分布為 q 時的無效性。

\[D(p||q)=\int\,p(x)\log\frac{p(x)}{q(x)}dx \]

相對熵總是非負的,注意到其並不對程,也不滿足三角不等式,所以嚴格來講,它並不能稱為“距離”,所以實際使用中,我們可以作對稱化處理:

\[D=D(p||q)+D(q||p)=\int(p(x)-q(x))\log\frac{p(x)}{q(x)}dx \]

另外一種改進方式是 JS散度(Jensen-Shannon)

\[JS(p||q)=\frac{1}{2}D_{KL}(p||\frac{p+q}{2})+\frac{1}{2}D_{KL}(q||\frac{p+q}{2}) \]

K-L散度是一個非常不錯的“距離”,在下一節我們還會繼續講這個指標,但是要注意K-L散度是無界的。

另外注意到互信息(信息增益)關於X和Y是對稱的,即H(X)-H(X|Y)=H(Y)-H(Y|X)。而且它與相對熵存在如下等價關系:

\[I(X;Y)=D(\ p(x,y)||p(x)p(y)\ ) \]

從該等價式可以看出,當X和Y之間幾乎相互獨立,即相互所包含的信息很少時,聯合分布p(x,y)與乘積分布p(x)p(y)之間的K-L距離相應的也很小。

  • 交叉熵

假設已知隨機變量的真實分布為p,預測分布為q,可以構造平均描述長度為 H ( p ) 的碼。但是如果使用分布q的編碼,那么在平均意義上就需要 H ( p ) + D(p||q)比特來描述這個隨機變量。

\[H(p,q)=-\int\,p(x)\log\,q(x)dx=H(p)+D(p||q) \]

也就是說交叉熵度量了從q到p還需要的信息量。交叉熵常用作部分分類模型(如邏輯回歸算法)的損失函數(詳見文章 一切從邏輯回歸開始 )

在我們的這個評分模型中,如果已經有了混淆矩陣,則可以直接計算相對熵:

\[D(f(s|G)||f(s|B))= \frac{11990}{12369}\cdot\log_2 \frac{11990\cdot 4813}{12369 \cdot 4373}+\frac{379}{12369}\cdot\log_2 \frac{379\cdot 4813}{12369 \cdot 440}=0.04 \]

如果還沒確定閾值,則有兩種方法來計算連續隨機變量的熵,一種是把模型輸出的分數作為 f(s|G) 和 f(s|B) 兩個隨機分布的抽樣結果,然后擬合出真實的分布,最后再用公式計算(實際算法中可以用 k近鄰算法來快速近似)。另一種方法就是離散化,將信用分數划分成幾個區間,然后計算信息量IV(見下一小節的介紹)。

它們的 Python 實現方法如下:

from reportgen.utils import entropy
from reportgen.utils import entropyc
from reportgen.utils import entropyd

# 基於混淆矩陣的方法
entropy.entropy(xp)#熵
# KL散度,沒有對稱化
entropy.kl_div(xp,yp) #此時p和q的長度得一致,且和為1
# 也可以用 scipy工具包
from scipy import stats
stats.entropy(xp) #熵
stats.entropy(xp,yp) #KL散度


# 基於信用評分,且連續化處理的方法
entropyc.entropy(xp)
# KL散度,沒有對稱化
entropyc.kl_div(xp,yp)

# 基於信用評分,且離散化處理的方法
entropyd.entropy(xp)
# KL散度,沒有對稱化
entropyd.kl_div(xp,yp)

2.2 KL 距離

我們還可以從另一個角度來推導出 KL 距離。

如果想考察預測變量區分好壞借款人的表現,我們可以用兩個分布的期望之差(類似於馬氏距離):

\[\int\ s\cdot(f(s|G)-f(s|B))ds \]

然而這個差並沒有考慮到某些 s 值的信息量遠高於其他的情況,於是我們可以用證據權重 WOE 來替換s:

\[D_{KL}=\int\ (f(s|G)-f(s|B))\log\left(\frac{f(s|G)}{f(s|B)}\right)\,ds \]

這被稱為對稱化后的 K-L散度 (Kullback–Leibler divergence),這里我們簡單的稱之為 KL 距離

一般情況 s 往往不是連續的,這時候我們可以把分數划分成很多個小區間來近似散度。假定有I個區間,每個區間i中有好人 \(g_i\) 個、壞人 \(b_i\) 個,且總共有 \(n_G\) 個好人和 \(n_B\) 個壞人。則我們用 \(g_i\) / \(n_G\) 代替 f(s|G),於是KL 距離可以近似為(信息量,IV):

\[IV=\sum_{i=1}^{I}[\frac{g_{i}}{n_G}-\frac{b_i}{n_B}]\log[\frac{g_in_B}{b_in_G}] \]

2.3 其他概率分布距離

K-L散度的不足之處在於它是無界的。事實上K-L散度 屬於更廣泛的 f-divergence (/wiki/F-divergence) 中的一種。如果p和q被定義成空間中的兩個概率分布,則 f 散度被定義為:

\[D_{f}(p||q)=\int\,f(\frac{p(x)}{q(x)})q(x)dx \]

很多常見的散度,例如 KL-divergence (/wiki/KL-divergence)、Hellinger distance (/wiki/Hellinger_distance)、和 total variation distance (/wiki/Total_variation_distance) 都是特殊的 f-divergence。下表給出了它們的對應函數關系:

這其中常用的有:

  • 卡方散度 :

\[f(t)=(t-1)^2 \]

\[D_{\mathcal{X}^2}(p||q)=\int\,\frac{(p(x)-q(x))^2}{q(x)}dx \]

這正好是卡方值,其中p(x)和q(x)分別是觀察頻數分布和期望頻數分布。

  • Hellinger distance

\[f(t)=(t^{1/2}-1)^2 \]

\[D_{\mathcal{H}}^2(p||q)=\frac{1}{2}\int[\sqrt{p(x)}-\sqrt{q(x)}\ ]^2dx=1-\int\sqrt{p(x)q(x)}dx \]

用測度論來看,它就是

\[D_{\mathcal{H}}(p||q)=\frac{\sqrt{2}}{2}||\sqrt{p(x)}-\sqrt{q(x)}||_2 \]

  • Total variation distance :

\[f(t)=\frac{|t-1|}{2} \]

\[D_{\delta}(p||q)=\frac{1}{2}\int|p(x)-q(x)|dx=\frac{1}{2}||p(x)-q(x)||_1 \]

除了f-divergence,還有一些不錯的距離:

  • 巴氏距離 (Bhattacharyya Distance):

\[D_{\mathcal{B}}(p||q)=-\log\ [\int\sqrt{p(x)q(x)}dx] \]

仔細觀察,會發現,相對於Hellinger distance,Bhattacharyya Distance就是用ln(x) 替換x-1而已

  • MMD 距離 (Maximum mean discrepancy)。MMD 距離即最大均值差異,度量在再生希爾伯特空間中兩個分布的距離,是一種核學習方法。兩個隨機變量的距離為

  • Wasserstein distance 。 詳見 /wiki/Wasserstein_metric

2.4 馬氏距離

馬氏量比較簡單,它就是兩個概率密度函數的眾數之差/標准差

\[D_M=|\frac{\mu_G-\mu_B}{\sigma}| \]

當好人和壞人的分布是正態分布且方差相等時,有

\[D=D_M^2 \]

2.5 卡方距離

設N為樣本數,fo和fe分別為觀察頻數和期望頻數:

\[fo=Pr(x=x_i,y=y_i)\cdot\,N \]

\[fe=Pr(x=x_i)\cdot\,Pr(x=y_j)\cdot\,N \]

卡方距離(卡方統計量) 可以定義為:

\[\mathcal{X}^2=\sum_{i,j}\frac{(fo-fe)^2}{fe} \]

注意到上式的最右邊等價於:

\[\frac{(fo-fe)^2}{fe}=(fo-fe)\times(\frac{fo}{fe}-1) \]

而fo/N可以看成是聯合分布的概率,fe/N可以看成是乘積分布的概率,又

\[fo/fe-1\approx\log(fo/fe) \]

所有我們有

\[\frac{\mathcal{X}^2}{N}=\int[p(x,y)-p(x)p(y)]\times[\frac{p(x,y)}{p(x)p(y)}-1]dxdy\approx\,D \]

從這個角度來看,卡方距離是聯合分布與乘積分布之間的相對熵的一種近似,也有點類似於互信息。

# reportgen
from reportgen.utils import chi2
chi2(X,y) # X可以是 DataFrame 數據,多個特征
# scipy
from scipy import stats
stats.chi2_contingency(fo)

3、基於隨機變量分布函數的評估

散度與其相關的統計量都是為了兩個隨機分布的密度函數之間的差異。這一節我們則介紹它們分布函數之間的差異。

3.1 KS 統計量

我們將KS統計量定義如下:

\[KS=\max_{s}(F(s|B)-F(s|G)) \]

KS統計量反映的判別能力沒有一個確定的標准,經驗上KS統計量至少要等於0.4才反應一個較好的判別能力。

KS統計量的缺點在於它描述的是在“最優區分分數”下的情形,但商業決策中需要一個相關或合適的臨界分數。我們只能理解成,實際臨界分數處的條件分布的距離比KS統計量小,換句話說,KS統計量僅是好壞距離或區分度的上限。

3.5 ROC (Receiver Operating Characteristi) 曲線

信用評分中最常用的判別能力的度量工具就是 ROC 曲線 和與之很相似的 CAP(Cumulative Accuracy profile)曲線。這些曲線下方的區域引出了兩種判別能力的度量:Gini系數和准確率AR。

ROC曲線是壞人條件概率分布函數 F(s|B) 相對於好人條件概率分布函數 F(s|B) 的圖形,如下圖所示。

\[F(s|G)=P(S\leq\ s|G) \]

\[F(s|B)=P(S\leq\ s|B) \]

如果一個模型的判別能力完美,那么存在一個分數 s_B ,其大於所有壞人的分數且小於所有好人的分數。此時ROC曲線會經過B點,即下圖中的點(0,1)。在另一種極端情形下,如果評分卡並不比隨機方式更好(也就是在每一個分數點上,低於這個分數的比例與好人比例相同),那么

\[F(s|G)=F(s|B) \]

即下圖中的虛線。

ROC曲線下的面積(Area under the ROC curve,簡稱AUROC或者AUC)可評價判別能力的大小。一般評分卡的AUROC通常介於 0.5~1 之間,且面積越大,判別能力越好。

\[\text{AUROC}=\int\ F(s|B)dF(s|G)=\int\ F(s|B)f(s|G)ds \]

有時候我們更傾向於用范圍0到1來標准化測量結果,0代表完全隨機,1代表完美隨機能力。此時我們可以將 AUROC 轉換成 Gini 系數,其等於 ROC 曲線與對角線之間面積的兩倍。

\[\text{GINI}=2\text{AUROC}-1=2\int(F(s|B)-F(s|G))dF(s|G)) \]

每個分數在ROC曲線上的點(F(s|G),F(s|B)),該點垂直投射到對角線上的點的橫縱坐標相等。所以曲線上這點的垂直距離變成了 |F(s|B)-F(s|G)|。很明顯

KS統計量就是這個距離的最大值

Gini系數 (/wiki/Gini_coefficient)是這個距離在整個曲線上積分的兩倍,因此 GINI<2KS。 另外可以證明GINI>KS,如果進一步放縮GINI系數,還可以證明GINI<2KS-(KS)^2,於是我們有:

\[\text{KS}<\text{GINI}<2\text{KS}-(\text{KS})^2 \]

注1:基於混淆矩陣定義的 ROC 曲線

在很多機器學習的書中,ROC曲線是通過混淆矩陣來定義的,縱軸是 真正率(True Positive Rate,正樣本中預測為正的比例),橫軸是 假正率 (False Positive Rate,負樣本中預測為正的比例):

\[TPR=\frac{TP}{TP+FN} \]

\[FPR=\frac{FP}{TN+FP} \]

可以證明,該定義本質上與上述基於密度函數的定義是等價的。

當給定閾值 s_c 后,分數大於 s_c 時,模型判定為好人,當分數小於 s_c 時,模型判定為壞人。。我們可以用分布函數重繪混淆矩陣(差一個總樣本數),如下圖

此時可以看出 真正率 TPR=F(s|B),假正率 FPR=F(s|G)。

注2:ROC曲線的繪制

在畫ROC曲線和計算Gini系數時,分值大小並不重要,真正重要的是這些人分數的相對排序。將分數按升序排列,得到BGBBGGBGGG·······。依次將前n個樣本預測為B即可得到ROC曲線。

它們的 python 實現方法如下:

from sklearn.metrics import roc_curve,auc
import matplotlib.pyplot as plt
fpr, tpr, thresholds=roc_curve(y,y_proba)
auc_score=auc(fpr,tpr)
fig,ax=plt.subplots()
ax.plot(fpr,tpr,label='AUC=%.5f'%auc_score)
ax.set_title('Receiver Operating Characteristic')
ax.plot([0, 1], [0, 1], '--', color=(0.6, 0.6, 0.6))
ax.legend()
fig.show()

3.6 CAP曲線

在市場營銷文獻中,有一個和 ROC 曲線很類似的方法叫做累積准確性(cumulative accuracy profile,CAP),或者成為 提升曲線 (lift curve)。與ROC曲線不同,它的橫縱坐標不是 F(s|G) 和 F(s|B),而是 F(s) 和 F(s|B)。所以橫坐標表示的是總體被拒絕的比例,縱坐標表示好人被拒絕的比例。

完美判別評分卡的 CAP 曲線會經過 B ( p_B, 1)點,其中 p_B 是總體中壞人的比例。

就像ROC曲線和Gini系數一樣,曲線到對角線的面積與完美判別到隨機判別面積的比例可以整合CAP曲線包含的信息。這個比例成為准確率(accuracy rate,AR)

\[\text{AR}=\frac{2}{1-p_B}(\int(F(s|B)f(s)ds-0.5)) \]

可以證明AR=GINI,但兩個曲線並不一樣。ROC曲線不需要指導原始總體的分布,而只看評分卡本身。但CAP曲線包含了總體的信息,隨總體變化而變化。

4、性能度量的實驗估計方法

一個分類學習器最主要的目的在於預測新樣本,所以更多的應該考慮它的泛化誤差。無論是哪種評價指標,我們都應該應用在不同於訓練樣本之外的數據集上。

選擇一個能在一定評判准則 L 下達到最優的函數:可以是似然函數,也可以是 MSE,還可以是 F1 值、散度等各種評估指標。再選擇一個評分函數 s_D( ) 使得:

\[\max_{s\in\ s_D}\mathcal{L}(s|D)=\mathcal{L}(s_D|D) \]

我們需要找到在樣本上使得測量指標最大化的分類學習器。為了得到無偏估計,我們必須考察其在保留樣本或檢驗樣本上的表現。通常我們會有足夠充分的數據建立分類學習器,能夠將數據分成訓練樣本和檢驗樣本。否則,我們只能用一些標准的統計學習方法如交叉驗證或 bootstrap 法來獲得無偏估計。

注:當樣本不足夠充分時,D只能當成總體的一個抽樣。此時通過交叉驗證或者bootstrap法可以有效降低模型的泛化方差,同時也能充分利用好每一個數據,畢竟都來之不易。

4.1 留出法

"留出法 " 將數據集D划分成兩部分,一部分為訓練集:train_set,另一部分為測試集:test_set. 測試集不參與模型的訓練,僅用於計算模型的泛化誤差。一般來講,訓練集的占比為
2/3-4/5.

留出法常用於比較多個分類模型的泛化誤差能力,當我們要更好的估計單個分類模型的泛化誤差時,特殊的,可以用 "留一法" 。即建立 |D| 個分類模型,其中每一個分類模型的測試集僅有一個。

4.2 交叉驗證法

如k-fold,形成k個模型,將模型的平均值作為最終的分類結果

\[\frac{\sum_{r=1}^{N}\mathcal{L}(s_{D^{c}_{r}}|D_{r})}{N} \]

4.3 bootstrap法

每次有放回的抽樣|D|個樣本,這樣大概有

\[\ln(1-\frac{1}{|D|})^{|D|}\approx\frac{1}{e}=0.368 \]

的樣本不會被抽中,可以將他們作為測試集。

\[\mathcal{L}(s_{D}|\mathcal{V})\approx\mathcal{L}(s_{D}|\mathcal{D})-\frac{\sum_{r=1}^{N}\mathcal{L}(s_{B_r}|\mathcal{B_r})-\mathcal{L}(s_{B_r}|\mathcal{B_r^c})}{N} \]

考慮到只有0.632的樣本用於測量誤差,我們有一個更穩定的誤差估計:

\[\mathcal{L}(s_{D}|\mathcal{V})\approx\sum_{r=1}0.632\mathcal{L}(s_{B_r}|\mathcal{B}_r^c)+0.368\mathcal{L}(s_{B_r}|\mathcal{B}_r) \]

python 實現方式如下:

from sklearn.linear_model import LogisticRegressionCV
from sklearn.model_selection import cross_val_score
lr = LogisticRegressionCV()
print(cross_val_score(lr, X, y,cv=10).mean())
#>>>0.7245

參考文獻

[1]. 機器學習之分類性能度量指標 : ROC曲線、AUC值、正確率、召回率,www.jianshu.com/p/c61ae11cc5f6

[2]. 消費信用模型:定價、利潤與組合

[3]. 周志華. 機器學習

[4]. 李航. 統計學習方法

[5]. 利用LendingClub數據建模,zhuanlan.zhihu.com/p/21550547

[6]. 知乎:分布的相似度(距離)用什么模型比較好?

[7]. 概率分布之間的距離度量以及python實現,www.cnblogs.com/denny402/p/7054950.html

評分卡文章系列:

1、評分卡系列(一):講講評分系統的構建

2、評分卡系列(二):特征工程

3、評分卡系列(三):分類學習期的評估


個人公眾號,文章首發於此,歡迎關注


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM