前面
分类问题一般围绕错误率展开,即错分样本占据的比例。而分类算法可以给出预测概率,那么通过设置不同的阈值,来获得更好的结果,此时混淆矩阵就是分类问题评价指标的基础。
混淆矩阵
假设二分类问题,P代表正类,N代表负类。
正类 | 负类 | |
---|---|---|
正类 | TP(真正类) | FP(假正类) |
负类 | FN(假负类) | TN (真负类) |
TP:正类被预测为正类的数量
FP:正类被预测为负类的数量
TN:负类被预测为负类的数量
FN:负类被预测为正类的数量
假设判断为正类的概率阈值设置为0,所有的样本划分为正类,如果数据中是正负类极端不平衡的,可能Precision(精确率)可能比较高,但是算法没有什么用。
定义几个值:
查全率/召回率:正类正确分类的概率
T P R = T P / ( T P + F N ) TPR = TP / (TP + FN) TPR=TP/(TP+FN)
负类分错的概率:
F P R = F P / ( F P + T N ) FPR = FP / (FP + TN) FPR=FP/(FP+TN)
AUC/KS
- auc
横轴: FPR
纵轴: TPR
画出的曲线叫ROC 曲线,auc=ROC 曲线与横轴之间的面积
- ks
横轴: 评分区间划分段
纵轴: FPR TPR
ks=两条曲线之间的最大差值的绝对值
- 举个梨子
6个样本
真实标签: y_true = (1,1,0,0,1,1)
预测概率:y_predict = (0.4,0.7,0.55,0.3,0.8,0.65)
概率取值范围在[0,1],划分为10个,横轴依次取值
(0.1,0.2,0.3,…,1),也就是判定样本预测是正负类的阈值分别是(0.1,0.2,0.3,…,1)。
- thres = 0.1, if y>=thres : y=positive(P) else y=negative(N)
y_predict = (0.4,0.7,0.55,0.3,0.8,0.65)
y_pred_label = (1,1,1,1,1,1)
y_true = (1,1,0,0,1,1)
T P R = 4 / 4 = 1 TPR = 4/4 = 1 TPR=4/4=1<