信用评分卡主要有三种(A卡、B卡、C卡):
- A卡:申请评分卡,侧重贷前,在客户获取期,建立信用风险评分,预测客户带来违约风险的概率大小;
- B卡:行为评分卡,侧重贷中,在客户申请处理期,建立申请风险评分模型,预测客户开户后一定时期内违约拖欠的风险概率,有效排除了信用不良客户和非目标客户的申请;
- C卡:催收评分卡,侧重贷后,在帐户管理期,建立催收评分模型,对逾期帐户预测催收策略反应的概率,从而采取相应的催收措施。
简单来讲,评分卡用分数来预测客户的好坏。当一个评分卡已经构建完成,并且有一组个人分数和其对应的好坏状态的数据时,我们想知道所构建的评分卡是否可靠?可靠程度如何?而这取决于如何去定义这个“好”字。一般有三种角度可以来评估:
- 评分卡分类划分的准确程度,如错误率、准确率、召回率、F1
- 评分卡的判别能力,评估评分卡将好人和坏人分离开的程度,如KS统计量、ROC曲线、GINI系数
- 评分卡概率预测的校准精度
令s是分类学习器预测的结果,可以是好人坏人这样的类别,也可以是一个概率值,大于多少才进一步判定为坏人,还可以是一个信用评分,大于多少才进一步判定为好人。至于是哪种跟我们选用的模型有关,不过目前逻辑回归和随机森林等都支持输出概率值或者信用评分。
从测度论的角度来看,模型评估的是预测变量和实际变量之间的相似度或距离。在这块有很多的指标,有统计检验的,有信息论的,也有概率论的,每个指标都有其优劣和适用场景。
因为是分类器,所以实际分类变量比较简单,肯定是因子型的离散变量,在评分卡中其分布就是pG 和pB。而预测变量的类型就不确定,不过没关系,我们统一考虑它的密度函数f(s)和分布函数F(s)。
当预测变量的阈值选好后,即每一个样本都被预测了,这时候预测变量也变成了与实际类别变量相同的离散变量,则预测类别变量和实际类别变量的混淆矩阵为:
实际坏人 | 实际好人 | |
---|---|---|
预测坏人 | TP(真正例) | FP(假反例) |
预测好人 | FN(假正例) | TN(真反例) |
要注意的是,此时预测变量虽然是离散的,但我们仍然可以用概率来表示混淆矩阵。设样本数为N,f(s|G)和f(s|B)分别为好人和坏人的条件密度函数,nG和nB分别表示总体中好人和坏人的数量,则上述的混淆矩阵可以表示为:
实际坏人 | 实际好人 | |
---|---|---|
预测坏人 | p(s ∈ 坏人|B) nB | p(s ∈ 坏人|G) nG |
预测好人 | p(s ∈ 好人|B) nB | p(s ∈ 好人|G) nG |
总体 | nB | nG |
接下来我们就可以定义和分析各种距离/指标啦。
1、分类学习器的性能度量
性能度量反映了任务需求,在对比不同的模型能力时,使用不同的性能度量往往会导致不同的评判结果;这意味者模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。
在预测任务中,给定样例集
1.1 准确率、召回率与F1
假定农夫拉来一车西瓜,我们用训练好的模型对这些西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误。但是若我们关心的是“挑出的西瓜中有多少比例是好瓜”,或者“所有好瓜中有多少比例被挑了出来”,那么错误率显然就不够用了。
对于二分类问题,可将样本根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形。分类结果的“混淆矩阵”如下表所示:
预测正例 | 预测反例 | |
---|---|---|
实际正例 | TP(真正例) | FN(假反例) |
实际反例 | FP(假正例) | TN(真反例) |
我们将准确率(查准率) 与 召回率(查全率)分别定义如下:
准确率和召回率是一对矛盾的度量。在垃圾邮件分类模型中,我们更加看重准确率,因为预测为垃圾邮件的实例中要尽可能少的出现正常邮件。而在生产线的次品判定模型中,我们更看重召回率,因为预测是正品的实例中要尽可能少的出现次品(这样需要召回的商品就少)。
将准确率作为y轴,召回率作为x轴,可以得到P-R曲线,其直观显示出分类学习期在样本集上的准确率、召回率。另外为综合考虑两个指标,我们有P和R的调和平均数,F1度量:
注:相对于几何平均数和算术平均数,调和平均数更注重较小者,且当各平均数相等时,调和平均数对应的P和R之间的差值相对更小。
在第三节中,我们还会介绍ROC曲线,其也是一种很好的性能度量。
1.2 代价敏感错误率与代价曲线
以二分类任务为例,我们可以设定一个“代价矩阵”。
预测正例 | 预测反例 | |
---|---|---|
实际正例 | 0 | cost1 |
实际反例 | cost2 | 0 |
令D+与D-分别代表样例集D的正例子集和反例子集,则可以定义“代价敏感错误率为”:
1.3 信息熵、条件熵、互信息
- 熵:随机变量X的熵被定义为:
如果实际类别变量中,好人的占比为80%,坏人的占比为20%,则实际类别变量的熵为:
H(Y)=-(0.8log0.8+0.2log0.2)=0.72
-
联合熵 和 条件熵:
两个随机变量的联合熵被定义为: -
相对熵(K-L散度):相对熵是两个随机分布之间距离的度量。在统计学中,它对应的是似然比的对数期望。相对上D(p||q)度量当真实分布为p而假定分布为q时的无效性。
-
互信息(信息增益):互信息是一个随机变量包含另一个随机变量信息量的度量,也是在给定另一随机变量知识的条件下,原随机变量不确定度的缩减量。
-
交叉熵:假设已知随机变量的真实分布为p,预测分布为q,可以构造平均描述长度为H(p)的码。但是如果使用分布q的编码,那么在平均意义上就需要H(p) + D(p||q)比特来描述这个随机变量。
也就是说交叉熵度量了从q到p还需要的信息量。交叉熵常用作部分分类模型(如逻辑回归算法)的损失函数(参考文章)
1.4 卡方距离
设N为样本数,fo和fe分别为观察频数和期望频数:
则卡方距离(卡方统计量)可以定义为:
注意到上式的最右边等价于:
而fo/N可以看成是联合分布的概率,fe/N可以看成是乘积分布的概率,又
所有我们有
从这个角度来看,卡方距离是互信息和相对熵结合下的一种近似。
1.5 方差分析、F-score
方差分析可以度量分组之间的期望差异
还没想好和测度之间的联系,待续。。。。
2、性能度量的实验估计方法
选择一个能在一定评判准则L下达到最优的函数:可以是使然函数,也可以是MSE,还可以是F1值、散度等各种评估指标。再选择一个评分函数s_D()使得:一个分类学习器最主要的目的在于预测新样本,所以更多的应该考虑它的泛化误差。无论是哪种评价指标,我们都应该应用在不同于训练样本之外的数据集上。
我们需要找到在样本上使得测量指标最大化的分类学习器。为了得到无偏估计,我们必须考察其在保留样本或检验样本V上的表现。通常我们会有足够充分的数据建立分类学习器,能够将数据分成训练样本和检验样本。否则,我们只能用一些标准的统计学习方法如交叉验证或bootstrap法来获得无偏估计。
注:当样本不足够充分时,D只能当成总体的一个抽样。此时通过交叉验证或者bootstrap法可以有效降低模型的泛化方差,同时也能充分利用好每一个数据,毕竟都来之不易。
2.1 留出法
''留出法''将数据集D划分成两部分,一部分为训练集:train_set,另一部分为测试集:test_set. 测试集不参与模型的训练,仅用于计算模型的泛化误差。一般来讲,训练集的占比为2/3-4/5.
留出法常用于比较多个分类模型的泛化误差能力,当我们要更好的估计单个分类模型的泛化误差时,特殊的,可以用"留一法"。即建立|D|个分类模型,其中每一个分类模型的测试集仅有一个。
2.2 交叉验证法
如k-fold,形成k个模型,将模型的平均值作为最终的分类结果
2.3 bootstrap法
每次有放回的抽样|D|个样本,这样大概有的样本不会被抽中,可以将他们作为测试集。
考虑到只有0.632的样本用于测量误差,我们有一个更稳定的误差估计:
3、判别能力的测量
这一节我们来判定评分卡区分好人和坏人的能力。需要清楚的是,这个判别能力并不是指概率阈值的选取问题,它评估的是评分卡是否能很明显的把好人和坏人区分开来,常用于判定单个评分卡是否满足实用要求或者从多个评分卡中选取判定能力最好的那个。
给定评分分数s或者评定概率,令f(s|G)、f(s|B)分别为好人与坏人子群体分数的条件概率密度函数(对应的F(s|G)、F(s|B)为分布函数)接下来的统计量将都是从概率的角度出发。
3.1 马氏距离
马氏量比较简单,它就是两个概率密度函数的众数之差/标准差3.2 信息比率、K-L散度和信息量
如果想考察预测变量区分好坏借款人的表现,我们可以用两个分布的期望之差:
一般情况 s 往往不是连续的,这时候我们可以把分数划分成很多个小区间来近似散度。假定有I个区间,每个区间i中有好人 gi 个、坏人 bi 个,且总共有 nG 个好人和 nB 个坏人。则我们用 gi / nG代替f(s|G),于是散度可以近似为(信息量,IV):
注意到上式并不是真正的K-L散度,设p和q是在x上的两个分布,则我们定义p和q的K-L散度(相对熵)为:
3.3 其他概率分布距离
K-L散度的坏处在于它是无界的。事实上K-L散度 属于更广泛的 f-divergence 中的一种。如果p和q被定义成空间中的两个概率分布,则 f 散度被定义为:
这其中常用的有:
-
卡方散度(f(t)=(t-1)2):
-
Hellinger distance( f(t)=(t1/2-1)2 ):
-
Total variation distance( f(t)=|t-1|/2 ):
除了f-divergence,还有一些不错的距离:
- 巴氏距离(Bhattacharyya Distance):
仔细观察,会发现,相对于Hellinger distance,Bhattacharyya Distance就是用ln(x) 替换x-1而已
MMD距离(Maximum mean discrepancy)
最大均值差异(Maximum mean discrepancy),度量在再生希尔伯特空间中两个分布的距离,是一种核学习方法。两个随机变量的距离为Wasserstein distance
3.4 KS统计量
散度与其相关的统计量都是为了测量好人分数函数和坏人分数函数期望值之间的差异。第二类判别能力的测量方法则强调这两类分数分布函数的差异。
我们将KS统计量定义如下:
KS值反映的判别能力没有一个确定的标准,经验上KS统计量至少要等于0.4才反应一个较好的判别能力。
KS统计量的缺点在于它描述的是在“最优区分分数”下的情形,但商业决策中需要一个相关或合适的临界分数。我们只能理解成,实际临界分数处的条件分布的距离比KS统计量小,换句话说,KS统计量仅是好坏距离或区分度的上限。
3.5 ROC曲线
信用评分中最常用的判别能力的度量工具是ROC(Receiver Operating Characteristic)曲线和与之很相似的CAP(Cumulative Accuracy profile)曲线。这些曲线下方的区域引出了两种判别能力的度量:Gini系数和准确率AR。
ROC曲线是好人条件分数相对于坏人条件分数的累计分布的图形。如下图,x轴代表注:在很多机器学习的书中,ROC曲线是通过混淆矩阵来定义的,本质上与上述定义是等价的。给定一个判定分数s,当分数大于s时,模型判定为好人,当分数小于s*时,模型判定为坏人。这样真正率(正样本预测为正的比例,此时坏人是正样本)TPR=F(s|B),假正率(负样本预测为正)FPR=F(s|G)。且用概率表示的混淆矩阵如下:
ROC曲线下的面积(Area under the ROC curve,简称AUROC或者AUC)可评价判别能力的大小。一般评分卡的AUROC通常介于0.5~1之间,且面积越大,判别能力越好。
我们更倾向于用范围0到1来标准化测量结果,0代表完全随机,1代表完美随机能力。此时我们可以将AUROC转换成Gini系数,其等于ROC曲线与对角线之间面积的两倍。
每个分数在ROC曲线上的点(F(s|G),F(s|B)),该点垂直投射到对角线上的点的横纵坐标相等。所以曲线上这点的垂直距离变成了|F(s|G)-F(s|B)|。很明显,KS统计量就是这个最大距离的最大值,而Gini系数是这个距离在整个曲线上积分的两倍,因此GINI<2KS。
另外可以证明GINI>KS,如果进一步放缩GINI系数,还可以证明GINI<2KS-(KS)2,于是我们有:
注:ROC曲线的绘制
在画ROC曲线和计算Gini系数时,分值大小并不重要,真正重要的是这些人分数的相对排序。将分数按升序排列,得到BGBBGGBGGG·······。依次将前n个样本预测为B即可得到ROC曲线。
3.6 CAP曲线
在市场营销文献中,有一个和ROC曲线很类似的方法叫做累积准确性(cumulative accuracy profile,CAP),或者成为提升曲线(lift curve)。与ROC曲线不同,它的横纵坐标不是F(s|G)和F(s|B),而是F(s)和F(s|B)。所以横坐标表示的是总体被拒绝的比例,纵坐标表示好人被拒绝的比例。
完美判别评分卡的CAP曲线会经过B(pB,1)点,其中 pB 是总体中坏人的比例。
就像ROC曲线和Gini系数一样,曲线到对角线的面积与完美判别到随机判别面积的比例可以整合CAP曲线包含的信息。这个比例成为准确率(accuracy rate,AR)
可以证明AR=GINI,但两个曲线并不一样。ROC曲线不需要指导原始总体的分布,而只看评分卡本身。但CAP曲线包含了总体的信息,随总体变化而变化。
注:可用数据集:
UCI澳大利亚信用卡数据、UCI德国信用卡数据、LendingClub数据集
操盘过程见文章:评分卡实践(先挖坑,待续)
参考文献
[1]. 机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
[2]. 消费信用模型:定价、利润与组合
[3]. 机器学习
[4]. 统计学习方法
[5]. 评分卡模型构建介绍
[6]. 信用评分的简单小结(ROC,IV,WOE)
[7]. 利用LendingClub数据建模
[8]. 知乎:分布的相似度(距离)用什么模型比较好?
[9] 概率分布之间的距离度量以及python实现