对于PRC和ROC曲线衡量分类器效果的思考
2016-07-23 20:24
302 查看
我们在分类中往往采用一些指标如Precision,Recall,ROC图来衡量一个分类器的分类效果。
在实际中遇到的数据往往是正负样本不平衡(class imbalance)的,比如假设100个人里面有1个是癌症患者,那么,分类器只要对所有样本返回非癌症即可获得99%的Accuracy,然而此时的分类器并没有意义,它不能识别任何的癌症患者。此时我们需要Precision,Recall,调和F值,ROC等来衡量分类器的效果。
我们的问题是:在正负样本比例不平衡时,PRCurve和ROCCurve哪个更能衡量分类器的效果?
在进行不平衡数据学习时,我们往往把少数量的样本标记成正样本(positive),然后进行样本的学习和预估。
PRC和ROC在面对不平衡数据时的表现是不同的。在数据不平衡时,PRC曲线是敏感的,随着正负样本比例的变化,PRC会发生强烈的变化。而ROC曲线是不敏感的,其曲线能够基本保持不变。ROC的面对不平衡数据的一致性表明其能够衡量一个模型本身的预测能力,而这个预测能力是与样本正负比例无关的。但是这个不敏感的特性使得其较难以看出一个模型在面临样本比例变化时模型的预测情况。而PRC因为对样本比例敏感,因此能够看出分类器随着样本比例变化的效果,而实际中的数据又是不平衡的,这样有助于了解分类器实际的效果和作用,也能够以此进行模型的改进。
综上,在实际学习中,我们可以使用ROC来判断两个分类器的优良,然后进行分类器的选择,然后可以根据PRC表现出来的结果衡量一个分类器面对不平衡数据进行分类时的能力,从而进行模型的改进和优化。
# 这个是我学不平衡问题时对这个问题的一点理解,如果有不对的地方,敬请指出。
----------------------------------------------------------
补充一些不平衡数据学习时对应解决方法。
一、使用ROC、PRC曲线来衡量分类器的效果
二、数据采样法
1. 过采样:通过增加少数样本来提高少数类别的分类性能。
2. 欠采样:通过减少多数样本来提高少数类别的分类性能。
三、使用代价敏感学习
对于分类混淆矩阵,对不同的分类效果可以赋予不同的权值。
对于AdaBoost,可以基于代价函数来调整错误样本权重向量D(原先是依据上一个分类器的错误率)。
对于NaiveBayes,可以选择具有最小期望代价而不是最大概率的类别作为最后的结果。
在实际中遇到的数据往往是正负样本不平衡(class imbalance)的,比如假设100个人里面有1个是癌症患者,那么,分类器只要对所有样本返回非癌症即可获得99%的Accuracy,然而此时的分类器并没有意义,它不能识别任何的癌症患者。此时我们需要Precision,Recall,调和F值,ROC等来衡量分类器的效果。
我们的问题是:在正负样本比例不平衡时,PRCurve和ROCCurve哪个更能衡量分类器的效果?
在进行不平衡数据学习时,我们往往把少数量的样本标记成正样本(positive),然后进行样本的学习和预估。
PRC和ROC在面对不平衡数据时的表现是不同的。在数据不平衡时,PRC曲线是敏感的,随着正负样本比例的变化,PRC会发生强烈的变化。而ROC曲线是不敏感的,其曲线能够基本保持不变。ROC的面对不平衡数据的一致性表明其能够衡量一个模型本身的预测能力,而这个预测能力是与样本正负比例无关的。但是这个不敏感的特性使得其较难以看出一个模型在面临样本比例变化时模型的预测情况。而PRC因为对样本比例敏感,因此能够看出分类器随着样本比例变化的效果,而实际中的数据又是不平衡的,这样有助于了解分类器实际的效果和作用,也能够以此进行模型的改进。
综上,在实际学习中,我们可以使用ROC来判断两个分类器的优良,然后进行分类器的选择,然后可以根据PRC表现出来的结果衡量一个分类器面对不平衡数据进行分类时的能力,从而进行模型的改进和优化。
# 这个是我学不平衡问题时对这个问题的一点理解,如果有不对的地方,敬请指出。
----------------------------------------------------------
补充一些不平衡数据学习时对应解决方法。
一、使用ROC、PRC曲线来衡量分类器的效果
二、数据采样法
1. 过采样:通过增加少数样本来提高少数类别的分类性能。
2. 欠采样:通过减少多数样本来提高少数类别的分类性能。
三、使用代价敏感学习
对于分类混淆矩阵,对不同的分类效果可以赋予不同的权值。
对于AdaBoost,可以基于代价函数来调整错误样本权重向量D(原先是依据上一个分类器的错误率)。
对于NaiveBayes,可以选择具有最小期望代价而不是最大概率的类别作为最后的结果。
相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- 反向传播(Backpropagation)算法的数学原理
- 关于SVM的那点破事
- 也谈 机器学习到底有没有用 ?
- #ML-SDN
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能引擎入门教程所有目录
- Tensorflow 杂记
- 如何用70行代码实现深度神经网络算法
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 机器学习实践中应避免的7种常见错误