真实类别 | 预测为正例 | 预测为反例 |
---|---|---|
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
1 | # 混淆矩阵 |
准确率、错误率、召回率、查准率
名称 | 公式 | 说明 |
---|---|---|
准确率(Accuracy) | TP+TNTP+TN+FP+FN | 预测正确的比例 |
错误率(Error) | FP+FNTP+TN+FP+FN | 预测错误的比例 |
召回率/查全率(Recall) | TPTP+FN | 真正例被预测正确的比例。有多少好瓜被选出来 |
精确率/查准率(Precision) | TPTP+FP | 预测为正例中正确的比例。预测为的好瓜的类别中有多少好瓜 |
1 | '''准确率、召回率、f分数''' |
P-R曲线与平衡点
一般来说, 查准率高的时候,召回率偏低;召回率高的时候,查准率往往降低。以西瓜问题为例:查准率指的是所有预测为好瓜的西瓜中,真正的好瓜所占的比例;召回率指的是真正的好瓜中,有多少好瓜被挑出来了。如果所有西瓜都预测为好瓜则召回率为1,但是查准率就会降低因为所有坏瓜也预测为了好瓜。
1 | '''准确率与召回率曲线''' |
P-R曲线
以查准率P为纵轴,召回率R为横轴作图,就得到了查准率-召回率曲线,称为“P-R曲线”。 。对于一个排序模型来说,其P-R曲 线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本, 小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。 整条P-R 曲线是通过将阈值从高到低移动而生成的,左边的阈值较高,右边的阈值较低。
y轴−查准率(精确率)P=TPTP+FPx轴−查全率(召回率)R=TPTP+FN在比较两个模型的性能时,如果一个学习器的P-R曲线被另外一个学习器P-R曲线包住,那么后者的性能优于前者(此时后者的查全率跟查准率都高于前者),如上图,A的性能优于C,B的性能也优于C;如果两个学习器的曲线有交叉点(如A和B),那么难以断定两个学习器性能的优劣,只能在具体的查准率或者查全率条件下进行比较。
举例计算
假设有4个样本,样本的标签分别为 0,1,0,1;模型的预测概率分别为0.1,0.35,0.4,0.8;
label | 0 | 1 | 0 | 1 |
---|---|---|---|---|
pred | 0.1 | 0.35 | 0.4 | 0.8 |
阈值 | 0.1 | 0.35 | 0.4 | 0.8 |
那么在阈值分别取0.1,0.35,0.4,0.8的时候。分别判断出每个pred
是TP/FP/TN/FP
中的哪个,进而得出当前阈值下的R
和P
,也就是(Recall, Precision)
这一P-R曲线图上的点;对于所有阈值都计算相应的(Recall, Precision)
,则得到完整的ROC曲线上的几个关键点。
阈值 | 样本1 | 样本2 | 样本3 | 样本4 | precision=TPTP+FP | recall=TPTP+FN |
---|---|---|---|---|---|---|
0.1 | FP | TP | FP | TP | 0.5 | 22+0=1 |
0.35 | TN | TP | FP | TP | 23 | 22+0=1 |
0.4 | TN | FN | FP | TP | 0.5 | 11+1=0.5 |
0.8 | TN | FN | TN | TP | 1 | 11+1=0.5 |
平衡点(BEP-》Break-Even Point)
如果两个学习器的P-R曲线有交叉点(如A和B),那么通过平衡点或者F1度量断定两个学习器性能的优劣
平衡点(Break-Even Point,简称BEP)指得是“P=R”时候的取值,如上图,C的的BEP是0.64,。基于BEP的比较,可以认为学习器A优于B。
F1指数与Fβ指数
正如上文所述,Precision和Recall指标有时是此消彼长的,即精准率高了,召回率就下降,在一些场景下要兼顾精准率和召回率,最常见的方法就是F1指数与Fβ指数。
F1指数
F1指数实际为查准率和召回率的调和平均数。例如小明跑步10公里,前面5公里用了1小时,后面5公里用了2小时,其平均速度为10v=(51+52)
1F1=12(1P+1R)Fβ指数
对于特定的应用场景,查准率和查全率的重视度是不一样的。例如在追捕逃犯时,希望尽可能的不遗漏逃犯,因此查全率较为重要;而在搜索引擎的搜索过程中,希望给用户精准的搜索信息,因此查准率更为重要。F1度量的更一般形式——Fβ,修改了路程
1Fβ=11+β2(1P+β2R)β=R/P ,其中β值越大召回率越重要,β值越小查准率越重要。β值为两者重要性的比例
G-mean指数
G-mean是正例的召回率与负例的召回率的综合指标。与F1的比较:在数据平衡度不是很大的情况下,F1和G-mean可以作为较好的评测指标,但是当训练样本很不平衡时,G-mean更好。
G−mean=√TPTP+FN×TNTN+FP=√查全率(召回率)真正例×查全率(召回率)真负例ROC曲线与AUC
1 | '''ROC与AUC''' |
ROC曲线
真正例率指的是真实正例中有多少被预测为正例,假正例率指的是真实反例中有多少被预测为正例。可以看出TPR和Recall的形式是一样的,就是查全率了,FPR就是1-负例的召回率。如果所有西瓜都预测为好瓜则查全率为1,但是假正例率也会升高因为所有坏瓜也预测为了好瓜。
y轴−真正例率TPR=TPTP+FN=正例的召回率=预测为正且的正样本数实际为正的样本数x轴−假正例率FPR=FPTN+FP=1−TNTN+FP=1−负例的召回率=预测为正的负样本数实际的负样本数以真正例率TPR为纵轴,假正例率FPR为横轴作图,就得到了“ROC曲线”。 。对于一个排序模型来说,其ROC曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本, 小于该阈值的结果判定为负样本,此时返回结果对应的真正例率和假正例率。 整条ROC曲线是通过将阈值从高到低移动而生成的,左边的阈值较高,右边的阈值较低。
举例计算
假设有4个样本,样本的标签分别为 0,1,0,1;模型的预测概率分别为0.1,0.35,0.4,0.8;
label | 0 | 1 | 0 | 1 |
---|---|---|---|---|
pred | 0.1 | 0.35 | 0.4 | 0.8 |
阈值 | 0.1 | 0.35 | 0.4 | 0.8 |
那么在阈值分别取0.1,0.35,0.4,0.8的时候。分别判断出每个pred
是TP/FP/TN/FP
中的哪个,进而得出当前阈值下的TPR
和FPR
,也就是(FPR, TPR)
这一ROC曲线图上的点;对于所有阈值都计算相应的(FPR, TPR)
,则得到完整的ROC曲线上的几个关键点。
阈值 | 样本1 | 样本2 | 样本3 | 样本4 | TPR=TPTP+FN | FPRFPTN+FP |
---|---|---|---|---|---|---|
0.1 | FP | TP | FP | TP | 22+0=1 | 20+2=1 |
0.35 | TN | TP | FP | TP | 22+0=1 | 11+1=0.5 |
0.4 | TN | FN | FP | TP | 11+1=0.5 | 11+1=0.5 |
0.8 | TN | FN | TN | TP | 11+1=0.5 | 0 |
AUC指数
AUC:ROC曲线的线下面积。与P-R曲线类似,如果学习器A的ROC曲线被学习器B完全“包住”,那么后者性能优于前者(相同的假正例率,其真正例率更高)。但是当两个曲线有交点时,则需要比较曲线下的面积AUC(Area Under ROC Curve)。
k-s指标
K-S(Kolmogorov-Smirnov)统计量越大,表示模型能够将正、负客户区分开的程度越大。KS值的取值范围是[0,1] 。与ROC曲线相似
1 | '''ks''' |
ks曲线
TPR=TP/(TP+FN)=正例的召回率=预测为正且的正样本数实际为正的样本数FPR=FP/(FP+TN)=1−TNTN+FP=1−负例的召回率=预测为正的负样本数实际的负样本数洛伦兹线:两条线,其横轴是模型评分的阈值,纵轴是TPR(真正类率)与FPR(假正类率)的值
K-S曲线:洛伦兹线中两条线的差值(TPR−FPR),值范围[0,1] 。
我们用一个风控模型预测一个人是好人的概率,图中黑线的洛伦兹线(TPR与FPR)、红线的ks曲线。横坐标是模型评分的阈值,当阈值为0时,所有的用户被预测为坏用户,TPR=FPR=0;当阈值为1时,所有用户被预测为好用户,TPR=FPR=1。
这两条曲线之间的差值(TPR−FPR),就是K-S曲线。如图所示,给定一个通过率20%(拒绝率80%),则该模型可以挑出来60%的好人,同时漏进来8%的坏人(92%的坏人都被拒绝掉了)。那么K-S曲线在这个通过率上的值,就是60%-8%=0.52。
K-S统计量
K-S曲线中的最大值被称为K-S统计量。其取值在0到1之间。如果是随机抽样,好人的洛伦兹曲线跟坏人的是重合的,K-S统计量为0。而最理想的风控模型,好人和坏人完全分开,K-S统计量的值为1。
多类别评估
1 | '''准确率、召回率、f分数''' |
1 | precision recall f1-score support |
举例计算
Label | 1 | 2 | 3 | 2 | 3 | 3 | 1 | 2 | 2 |
---|---|---|---|---|---|---|---|---|---|
Prediction | 2 | 2 | 1 | 2 | 1 | 3 | 2 | 3 | 2 |
micro avg
precisionP=TPTP+FP=44+5=0.4444recallR=TPTP+FN=44+5=0.4444F1=2×49×4949+49=0.44444macro avg
TP | FP | FN | precision | recall | F1 | |
---|---|---|---|---|---|---|
class 1 | 0 | 2 | 2 | 0 | 0 | 0 |
class 2 | 3 | 2 | 1 | 35=0.6 | 34=0.75 | 23 |
class 3 | 1 | 1 | 2 | 12 | 13 | 25 |
- precision:(0+35+12)/3=0.36667
- recall:(0+34+13)/3=0.3611111
- F1:(0+23+25)/3=0.3555556
weighted avg
加入类别的权重。3类样本的权重分别如下所示
class1 | class2 | class3 |
---|---|---|
2/9 | 4/9 | 3/9 |
- precision:29×0+49×35+39×12=0.4333333
- recall:29×0+49×34+39×13=0.444444444
- F1:29×0+49×23+39×25=0.429630
综合说明
micro avg | 受不平衡样本影响较小。precision=recall=f1-score |
macro avg | 受不平衡样本影响较小。几个类别的平均数 |
weighted avg | 受不平衡样本影响较大。倾向于较大的类别 |
不同类别的概率分布图
判断模型的分类性能,分的开不开。
1 | def class_porb(true_label,guess_label) |
回归评估指标
- 均方误差(Mean Squared Error,MSE)MSE=1mm∑i=1(fi−yi)2
均方根误差 (Root Mean Squard Error,RMSE)
RMSE=√1mm∑i=1(fi−yi)2它的意义在于开个根号后,误差的结果就与数据是一个级别的,可以更好地来描述数据。标准误差对一组测量中的特大或特小误差反映非常敏感,所以,标准误差能够很好地反映出测量的精密度。这正是标准误差在工程测量中广泛被采用的原因。
平均绝对误差 (Mean Absolute Error,MAE)
MAE=1mm∑i=1|fi−yi|R-squared
R2=1−∑mi=1(fi−yi)2∑mi=1(ˉyi−yi)2=1−1m∑mi=1(fi−yi)21m∑mi=1(ˉyi−yi)2=1−MSE(f,y)Var(y)
总结
下面的简单总结,主要是对比各个参数,并说明不平衡数据集对参数的影响。
真实类别 | 预测为正例 | 预测为反例 |
---|---|---|
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
名称 | 公式 | 说明 | 测试集为不平衡数据集 |
---|---|---|---|
准确率(Accuracy) | TP+TNTP+TN+FP+FN | 预测正确的比例 | 影响较大,因为包含两个不平衡样本的数据 |
错误率(Error) | FP+FNTP+TN+FP+FN | 预测错误的比例 | 影响较大,因为包含两个不平衡样本的数据 |
召回率/查全率 (Recall) |
TPTP+FN | 实际为正样本中有多少被预测出来 | 无影响,TP、FN全部来自实际正例数据集 |
精确率/查准率 (Precision) |
TPTP+FP | 预测为正样本中有多少是真实的正样本 | 影响较大,因为包含两个不平衡样本的数据 |
PR曲线 | 横坐标为recall 纵坐标为precision |
左侧的阈值大,右侧的阈值小 | 影响较大,因为纵坐标包含两个不平衡样本的数据 |
F1指数 | 1F1=1P+1R | 因为recall与precision存在对立关系,为了综合评估recall与precision。所以提出F1指数 | 影响较大,因为precision包含两个不平衡样本的数据 |
Fβ指数 | 1Fβ=11+β2(1P+β2R) | 通过调整β的比例,调整Fβ的侧重关系 | 影响较大,因为precision包含两个不平衡样本的数据 |
G-mean | √TPTP+FN×TNTN+FP | √(召回率)正例×(召回率)负例 越高越好;为了解决样本不平衡问题 |
无影响,因为召回率没有使用不平衡数据相比 |
ROC曲线 | 横坐标为,FPTN+FP=1−负例的召回率 纵坐标为,TPTP+FN=正例的召回率 |
左侧的阈值大,右侧的阈值小 | 无影响,因为召回率没有使用不平衡数据相比 |
AUC | ROC的面积 | 越大越好 | 无影响,因为召回率没有使用不平衡数据相比 |
KS | 横坐标阈值 纵坐标为正例的召回率以及(1-负例的召回率)之间的差值 |
目的选定阈值,使得正例的召回率与1-负例的召回率差值最大。 与ROC曲线具有一定的相似性 |
无影响,因为召回率没有使用不平衡数据相比 |