分类
在实际的应用中,对于一个而分类问题,我们通常会更关注其中的某一类。在建模前的数据转换时,也常常将我们更关注的类别转换成1。因此,对于预测结果进行评估时,关注点通常会聚焦于真实值或预测值为1的情况。
1. 混淆矩阵
image.png混淆矩阵常用来计算评价指标,有:
查准率 (精确率) = precision = TP/(TP+FP)
查全率(召回率) = recall = TP/(TP+FN)
在统计学中,伪阳性又被称为第一类型错误,而伪阴性被称为第二类型错误,因此,查准率通常被认为时衡量第一类型错误的指标,而查全率是衡量第二类型错误的指标。
从概率上来讲,预测值等于1时,真实值等于1的概率为查准率;真实值等于1时,预测值等于1的概率为查全率。即:
precision = P(y_i = 1| \hat {y_i} = 1)
recall = P(\hat {y_i} = 1 |y_i = 1 )
理想的情况是这两个指标都很高,但现实是残酷的,这两个指标通常存在着此消彼长的现象。
F1-score 综合考虑了预测结果的产准率和查全率面试一个比较好的评估指标:
F_1 = 2/(\frac{1}{precision} + \frac{1}{recall}) = 2\frac{precison * recall}{precision + recall}
对于某些偏重某一特定指标的场景,相应地定义指标F_{\beta}-score:
F_{\beta} = (1+\beta ^2)\frac{precison * recall}{precision + recall}
为了分清查准率变化时变化的来源,效仿查全率,定义真阳性率(TPR)和伪阳性率(FPR):
TPR = TP/(TP+FN)
FPR = FP/(FP+TN)
image.png注: 在ROC空间中,离左上角越近的点预测准确率越高。
2. 群体稳定性指标(population stability index)
psi = sum((实际占比-预期占比)/ln(实际占比/预期占比))
举个例子解释下,比如训练一个logistic回归模型,预测时候会有个概率输出p。你测试集上的输出设定为p1吧,将它从小到大排序后10等分,如0-0.1,0.1-0.2.......
现在你用这个模型去对新的样本进行预测,预测结果叫p2,按p1的区间也划分为10等分。
实际占比就是p2上在各区间的用户占比,预期占比就是p1上各区间的用户占比。
意义就是如果模型跟稳定,那么p1和p2上各区间的用户应该是相近的,占比不会变动很大,也就是预测出来的概率不会差距很大。
一般认为psi小于0.1时候模型稳定性很高,0.1-0.25一般,大于0.25模型稳定性差,建议重做。
3. 对数损失(Log loss)
亦被称为逻辑回归损失(Logistic regression loss)或交叉熵损失(Cross-entropy loss)。
对于二分类问题,设y∈{0,1}且p=Pr(y=1),则对每个样本的对数损失为:
L_{\log(y,p)} = -(y\log p + (1-y)\log(1-p))
可以很容易地将其扩展到多分类问题上。
L_{\log(Y_i,P_i)} = \Sigma y_ {i,k}\log {p_ {i,k}}
4. KS
KS(Kolmogorov-Smirnov):KS用于模型风险区分能力进行评估,
指标衡量的是好坏样本累计分部之间的差值。
好坏样本累计差异越大,KS指标越大,那么模型的风险区分能力越强。
KS的计算步骤如下:
- 计算每个评分区间的好坏账户数。
- 计算每个评分区间的累计好账户数占总好账户数比率(good%)和累计坏账户数占总坏账户数比率(bad%)。
- 计算每个评分区间累计坏账户占比与累计好账户占比差的绝对值(累计good%-累计bad%),然后对这些绝对值取最大值即得此评分卡的K-S值。
KS也可以理解成:
KS = Max(TPR-FPR)
网友评论