机器学习之类别不平衡问题 (1) —— 各种评估指标

本文探讨了在机器学习中遇到的类别不平衡问题,强调了在不平衡数据集上使用准确率和错误率的局限性,并介绍了评估指标,如查准率、查全率、真正例率、假负例率、真负例率和假正例率,以及它们在评估模型性能时的重要性。此外,还提到了F1分数和统计假设检验中的两类错误。
摘要由CSDN通过智能技术生成


机器学习之类别不平衡问题 (1) —— 各种评估指标
机器学习之类别不平衡问题 (2) —— ROC和PR曲线


在二分类问题中,通常假设正负类别相对均衡,然而实际应用中类别不平衡的问题,如100, 1000, 10000倍的数据偏斜是非常常见的,比如疾病检测中未患病的人数远超患病的人数,产品质量检测中合格产品数量远超不合格产品等。在检测信用卡欺诈问题中,同样正例的数目稀少,而且正例的数量会随着时间和地点的改变而不断变化,分类器要想在不断变化的正负样本中达到好的检测效果是非常困难的。

由于类别不平衡问题的特性使然,一般常使用于评估分类器性能的准确率错误率可能就不再适用了。因为在类别不平衡问题中我们主要关心数目少的那一类能否被正确分类,而如果分类器将所有样例都划分为数目多的那一类,就能轻松达到很高的准确率,但实际上该分类器并没有任何效果。


所以在这种时候学习的前提往往是采用不同的评估指标。学习机器学习的过程中总不免碰到各种评估指标,刚开始很容易被五花八门的术语绕晕了,所以类别不平衡问题的第一篇先对这些指标进行梳理。毕竟评估指标不明确的话,后面模型的效果好坏也就无从谈起。

在二分类问题中,一般将数目少的类别视为正例,数目多的类别视为负例,下面先用matplotlib画张混淆矩阵图来直观地感受一下:

plt.figure(figsize=(10,6))
plt.text(0.5,2.25,'True Positive (TP)',size=20,horizontalalignment="center",verticalalignment="center")
plt.text(1.5,2.4,'False Positive (FP)',size=20,horizontalalignment="center",verticalalignment="center")
plt.text(0.5,0.9,'False Negative (FN)',size=20,horizontalalignment="center",verticalalignment="center")
plt.text(1.5,0.75,'True Negative (TN)',size=20,horizontalalignment="center",verticalalignment="center")
plt.text(1,3.4,'$True\ Class$',size=25,horizontalalignment="center")
plt.text(-0.5,1.5,'$Predicted$\n$Class$',size=23,verticalalignment="center")
plt.text(0.5,3.1,'$P$',size=20,horizontalalignment="center")
plt.text(1.5,3.1,'$N$',size=20,horizontalalignment="center")
plt.text(-0.1,2.25,'$Y$',size=20,va="center")
plt.text(-0.1,0.75,'$N$',size=20,va="center")
plt.text(2.4,2.25,r'Precision = $\frac{TP}{Y}$ = $\frac{TP}{TP+FP}$ ',size=18,ha="center",va="center")
plt.text(0.5,-0.3,'Recall, Sensitivity, TPR = ',size=16,ha="center",va="center")
plt.text(0.5,-0.6,'$\\frac{TP}{P}$ = $\\frac{TP}{TP+FN}$',size=18,ha="center",va="center")
plt.text(1.5,-0.3,'FPR = $\\frac{FP}{N}$ = $\\frac{FP}{FP+TN}$',size=16,ha="center",va="center")
plt.text(1.5,-0.7,'TNR, Specificity = $\\frac{TN}{N}$ = $\\frac{TN}{FP+TN}$',size=16,ha="center",va="center")
plt.text(1.5,2.1,'Type I Error',size=20,horizontalalignment="center",verticalalignment="center")
plt.text(0.5,0.6,'Type II Error',size=20,horizontalalignment="center",verticalalignment="center")
plt.xticks([])
plt.yticks([])
plt.plot([1,1],[0,3],'k--')
plt.plot([0,3],[1.5,1.5],'k:')
plt.axis([0,2,0,3])

plt.fill_between([0,1],[1.5,1.5],[3,3],color='#98FB98')
plt.fill_between([0,1],[0,0],[1.5,1.5],color='#EEA9B8')
plt.fill_between([1,2],[0,0],[1.5,1.5],color='#9AFF9A')
plt.fill_between([1,2],[1.5,1.5],[3,3],color='#EEB4B4')


这里写图片描述

True Positive (真正例,TP):实际为正例,预测为正例。

False Negative (假负例,FN):实际为正例,预测为负例。

True Negative (真负例,TN):实际为负例,预测为负例。

False Positive (假正例,FP):实际为负例,预测为正例。


Precision (查准率) =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值