-
python excel数据处理可视化_Python数据处理从零开始----第四章(可视化)(10)二分类ROC曲线...
2020-11-26 17:46:58Python数据处理从零开始----第四章(可视化)(10)二分类ROC曲线www.jianshu.com===============================================混淆矩阵机器学习中对于分类模型常用混淆矩阵来进行效果评价,混淆矩阵中存在多个...原文:
Python数据处理从零开始----第四章(可视化)(10)二分类ROC曲线www.jianshu.com===============================================
- 混淆矩阵
机器学习中对于分类模型常用混淆矩阵来进行效果评价,混淆矩阵中存在多个评价指标,这些评价指标可以从不同角度来评价分类结果的优劣,以下内容通过简单的理论概述和案例展示来详细解释分类模型中混淆矩阵的评价指标及其用途。
以上四类判别结果展示在混淆矩阵上是一个两行两列的交叉矩阵,行分别代表实际的正例和负例,列分别代表预测的正例和负例。那么在以上矩阵中:四个象限分别代表四种判别结果:
左上角被称为真阳性(True Positive,TP):样本实际为正例,且模型预测结果为正例;
右上角被称为假阴性(False Negative,FN):样本实际为正例,但模型预测为负例;
左下角被称为假阳性(False Positive,FP):样本实际类别为负例,但模型预测为正例;
右下角被称为真阴性(True Negative,TN):样本实际类别为负例,且模型预测为负例。
混淆矩阵的四个象限有明显的规律,左上角至右下角的对角线上是预测正确(以T开头),另一条对角线则预测错误(以F开头),左侧上下象限是预测为真的类别(以P结尾),右侧上下象限为预测错误的类别(以N结尾)。
这样真个混淆矩阵看起来就清洗多了,围绕着混淆矩阵有几个比较重要的指标需要掌握。- ROC曲线、AUC指标
ROC的全名叫做Receiver Operating Characteristic,主要通过平面坐标系上的曲线来衡量分类模型结果好坏——ROC curve。横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。以上纵坐标的TPR即是上述的指标召回率,FPR则指代负样本中的错判率(假警报率),FPR = FP/(FP + TN) 。
典型的ROC曲线是一个位于坐标点(0,0)和(1,1)对角线上方的曲线,因为对角线代表着随机分类器的分类效果。ROC曲线只能通过图形来进行视觉判别,取法具体量化分类器的性能,于是AUC便出现了,它用来表示ROC曲线下的三角形面积大小,通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。
- 导入包
%clear %reset -f # In[*] import numpy as np import matplotlib.pyplot as plt from sklearn import svm, datasets from sklearn.metrics import roc_curve, auc ###计算roc和auc from sklearn import cross_validation
- 划分训练集和测试集
# In[*] # Import some data to play with iris = datasets.load_iris() X = iris.data y = iris.target ##变为2分类 X, y = X[y != 2], y[y != 2] # Add noisy features to make the problem harder random_state = np.random.RandomState(0) n_samples, n_features = X.shape X = np.c_[X, random_state.randn(n_samples, 200 * n_features)] # shuffle and split training and test sets X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=.3,random_state=0)
- 建模(支持向量机)
# In[*] # Learn to predict each class against the other svm = svm.SVC(kernel='linear', probability=True,random_state=random_state) ###通过decision_function()计算得到的y_score的值,用在roc_curve()函数中 y_score = svm.fit(X_train, y_train).decision_function(X_test)
- 计算AUC以及绘图
# Compute ROC curve and ROC area for each class fpr,tpr,threshold = roc_curve(y_test, y_score) ###计算真正率和假正率 roc_auc = auc(fpr,tpr) ###计算auc的值 # In[*] plt.figure() lw = 2 plt.figure(figsize=(10,10)) plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc) ###假正率为横坐标,真正率为纵坐标做曲线 plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic example') plt.legend(loc="lower right") plt.show()
-
广告计算中的AUC和ROC曲线
2016-12-14 15:00:23AUC的英文全称为 Area Under Curve,AUC的意思是曲线下面积,在计算广告学中,AUC经常用于统计ROC曲线的面积,用来量化评估广告的CTR质量。这里再解释一下ROC的含义,ROC...传统的ROC曲线多用于医学检测领域,2000年AUC的英文全称为 Area Under Curve,AUC的意思是曲线下面积,在计算广告学中,AUC经常用于统计ROC曲线的面积,用来量化评估广告的CTR质量。这里再解释一下ROC的含义,ROC全称为:Receiver Operating Characteristics (ROC) graphs ROC经常被用于模式识别、分类器的结果展现和性能评测。传统的ROC曲线多用于医学检测领域,2000年以后,在机器学习、数据挖掘领域开始有使用。
因为在一些应用场景中,accuracy这样传统的度量标准很难恰当的反应分类器的效果。例如:测试样本中有A类样本90个,B 类样本10个。分类器C1把所有的测试样本都分成了A类,分类器C2把A类的90个样本分对了70个,B类的10个样本分对了5个。则C1的分类精度为 90%,C2的分类精度为75%。但是,显然C2更有用些。另外,在一些分类问题中犯不同的错误代价是不同的(cost sensitive learning)。这样,默认0.5为分类阈值的传统做法也显得不恰当了。这也被称为样本在不同类别上的不均衡分布问题(class distribution imbalance problem)。
ROC是二维平面上的曲线,平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR),对某个待评估的数据挖掘方法而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,分类器就可以映射成ROC平面上的一个点,这些点构成一个阶梯状的曲线,计算的AUC也就是这些阶梯下面的面积之和
在广告中,根据CTR预测的高低,将最有可能被用户点击的广告按顺序依次展现,根据点击反馈,可以生成ROC曲线(y方向,点击+1;x方向,未点击+1),很明显,用户点击的越多,被点击的广告排序越靠前,ROC曲线下的面积越大,即AUC越大,则表明广告投放的效果越好,也就是CTR预测越准确
(陈运文)
在具体应用AUC作为Metrics方法时,又有很多变化,如果要深入了解,以下三篇文献应该很有帮助:
-
分数、准确率召回率曲线、ROC曲线以及AUC)
2019-03-12 19:44:50下面先以二分类为例,解释各种评估指标的含义,然后再拓展多分类的指标,最后简单介绍一下回归指标。 一、二分类 首先需要掌握几个术语的含义: ①假正例(FP):预测错误,预测为“正”类,但实际是“反”类。 ...《Python机器学习基础教程》笔记
总结监督模型在给定数据集上的表现有很多种方法,例如,精度、混淆矩阵、准确率、召回率、f-分数、准确率召回率曲线、ROC曲线以及AUC。下面先以二分类为例,解释各种评估指标的含义,然后再拓展多分类的指标,最后简单介绍一下回归指标。
一、二分类
首先需要掌握几个术语的含义:
①假正例(FP):预测错误,预测为“正”类,但实际是“反”类。
②假反例(FN):预测错误,预测为“反”类,但实际是“正”类。
③真正例(TP):预测正确,预测为“正”类,实际也是“正”类。
④真反例(TN):预测正确,预测为“反”类,实际也是“反”类。
1. 精度:正确分类的样本所占的比例。
2. 混淆矩阵:行对应真实标签,列对应预测标签。对角线上的元素对应于正确的分类,而其他元素则告诉我们一个类别中有多少样本被错误地划分到其他类别中。即
3. 准确率:被预测为正例的样本中有多少是真正的正例。
4. 召回率:正类样本中有多少被预测为正类。
5. f-分数:准确率与召回率的调和平均
6. 准确率召回率曲线:对decision_function的每一个阈值,求得一个准确率和召回率,分别作为横坐标和纵坐标作图。
总结准确率-召回率曲线的一种方法是计算该曲线下的积分或面积,也叫作平均准确率。
7. ROC曲线:和准确率召回率曲线类似,纵坐标为召回率,但横坐标为假正例率(反类样本中被误判为正类的样品比例):
对于ROC曲线,理想的曲线要靠近左上角(召回率高、假正例低)
8. AUC:ROC曲线下的面积。
二、多分类
1. 多分类问题的所有指标基本上都来着于二分类指标,但是要对所有类别进行平均。利用classification_report函数,可以计算每个类别的准确率、召回率和f-分数。
2. 对于多分类问题中的不平衡数据集,最常用的指标就是多分类版本的f-分数。多分类f-分数背后的想法是,对每个类别计算一个二分类f-分数,其中该类别是正类,其他所有类别组成反类,然后使用以下策略之一对这些按类别f-分数进行平均:
①宏平均:计算未加权的按类别 f1-分数,对所有类别给出相同权重。
②加权平均:以每个类别的支持作为权重来计算按类别 f1-分数的平均值。
③微平均:计算所有类别中假正例、假反例和真正例的总数,然后利用这些计数来计算准确率、召回率和 f1-分数。
如果对每个样本等同看待,那么推荐使用微平均 f1-分数,如果对每个类别等同看待,则推荐使用宏平均 f1-分数。
三、回归指标
是评估回归模型的直观指标。
四、总结
Scikit-Learn提供了一种非常简单的评估方法,即scoring参数,它可以同时用于GridSearchCV和cross_val_score,只需要提供一个字符串,用于描述要使用的评估指标即可。
对于分类问题,scoring参数最重要的取值包括:accuracy(默认值)、roc_auc(ROC曲线下方的面积)、average_precision(准确率-召回率曲线下方的面积)、f1、f1_macro、f1_micro、f1_weighted;对于回归问题,最常用的取值包括:r2(
分数)、mean_squared_error(均分误差)和mean_absolute_error(平均绝对误差)。
-
机器学习中ROC及AUC通俗易懂的解释
2020-12-03 22:45:57首先告诉你ROC的作用,你就能大概知道这个曲线大概是啥了:它用来衡量你的模型分类结果有多准确。 在列举几个你比须明白且简单的概率。 真_正例率(TPR, True Positive Rate):你预测出的真的阳ROC(receiver operating characteristic curve):接收者操作特征曲线。
AUC(Area Under Curve):上面曲线与X, Y轴形成的最大面积。如果你实在不理解ROC的中文注解,那就简单了解一下就行了, 点到为止吧!
步入正题
Step1: ROC
首先告诉你ROC的作用,你就能大概知道这个曲线大概是啥了:它用来衡量你的模型分类结果有多准确。在列举几个你比须明白且简单的概率。
真_正例率(TPR, True Positive Rate):你预测出的真的阳性数量(就是实际他是阳性,模型预测也是阳性) / 所有阳性的数量
假_正例率(FPR, False Positive Rate):你预测出的假的阳性数量(就是实际他是阴性,模型却预测是阳性) / 所有阴性的数量
在简单一点理解,真_正例率(TP)指模型好!, 假_正例率(FP)指模型差!
ROC就是用上面两个值来绘制的曲线。看下图
中间的虚线代表模型最不好, TP和FP相等,所以模型完全随机分类, 红色的线代表模型分类效果还可以,TP>FP,当然如果是直接向上的话模型最好。那抬个杠, 如果曲线在虚线下边呢, 在下边的话就反向预测就OK了!
Step2:AUC
AUC即图示阴影面积, 当你读完上面ROC的原理时,其实AUC面积所代表的东西你也懂了吧。
结束结束end! 要钻研决策树了! 再会! -
AUC和ROC
2018-08-13 15:26:35使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。 这句话有些绕,我尝试解释一下:首先AUC值是一个概率值,当你随机挑选一个正样... -
关于ROC和AUC
2019-05-24 17:43:32介绍ROC曲线和AUC,下面这篇博客是我看到的解释得最好的一篇: ... 下面这篇则介绍了在ROC图上不同位置的点有什么意义(见其章节2.3 ROC的图形化表示...下面这两篇博客有二分类和多分类问题的ROC曲线的实现代码示例:... -
4.4.2分类模型评判指标(一) - 混淆矩阵(Confusion Matrix)
2018-05-31 15:16:19混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。 一句话解释版本: 混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示... -
【最全的】分类算法的性能度量指标
2020-09-23 22:02:13机器学习分类算法的评价指标有:混淆矩阵(Confuse Matrix)、准确率(Accuracy)、...接下来对以上这些指标进行一一解释,并给出多分类问题的综合评价指标,如宏平均、微平均、Kappa系数,最后用一个多分类实例来计算 -
分类模型的评价方法
2018-11-12 11:25:55机器学习中对于分类模型常用混淆矩阵来进行效果评价,混淆矩阵中存在多个评价指标,这些评价指标可以从不同角度来评价分类结果的优劣,以下内容通过简单的理论概述和案例展示来详细解释分类模型中混淆矩阵的评价指标... -
二分类混淆矩阵结构_「混淆矩阵」4.4.2分类模型评判指标(一) - 混淆矩阵(Confusion Matrix) - seo实验室....
2021-01-30 16:29:12混淆矩阵简介混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。一句话解释版本:混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个... -
总结《精通数据科学》机器学习思想,常见误区,二元分类问题
2019-03-10 19:28:00在看待一个数据问题时,我们需要从两个角度去看待问题,一是从机器学习角度去看待问题,另一个就是从概率的角度看待问题,这样我觉得可以解释很多初学者在学习机器学习是会感到混乱的地方。 从机器学习的角度来看,... -
机器学习 面试题-第四章 评估指标(大厂必问,历经半年整理)
2021-03-03 21:15:184.2.1 Precision(查准率)4.2.2 Recall(查全率)4.2.3 P-R曲线4.2.4 F1-Score4.2.5 ROC和AUC4.2.5.1什么是ROC曲线?如何判断 ROC 曲线的好坏?4.2.5.2 什么是AUC?4.2.5.3 如何解释AU ROC分数?4.3 多标签分类怎么... -
auc到多少有意义_AUC及其理解
2021-01-13 14:11:51下面将详细解释AUC的含义及其计算方式,2 ROC含义及其说明2.1 ROC曲线理解ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器的优劣,分类器算法,常用的评价指标主要有prec... -
O.REILLY-python-机器学习实战
2020-09-01 21:19:27·多分类的情况 2、精度 3、召回率recall / 灵敏度sensitivity / 正类率 TPR 4、混淆矩阵 与 精度/召回率 的关系 5、F1分数 6、精度 / 召回率权衡 - 阈值(决策分数) 1) 图像1 2) 图像2 7、ROC曲线 1)概念: 2)... -
机器学习中的三对性能度量参数
2020-10-21 15:59:57文章目录 分类结果混淆矩阵 错误率和精度 错误率:分类错误的样本数占样本总数的比例 精度:分类正确的样本数占样本总数的比例 关系:两者之和为1 查准率P和查全率R 通俗解释:信息检索场景下,...相关图:ROC曲线 -
混淆矩阵(Confusion Matrix)
2019-10-24 16:35:15混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。 一句话解释版本: 混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示... -
混淆矩阵
2020-06-04 20:42:10混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。 一句话解释版本: 混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示出来... -
模式识别第4版(中文版+英文版+PPT源码)
2018-09-13 20:10:48习题 MATLAB编程和练习 参考文献 第5章 特征选择 5.1 引言 5.2 预处理 5.3 峰值现象 5.4 基于统计假设检验的特征选择 5.5 接收机操作特性(ROC)曲线 5.6 类可分性测量 5.7 特征子集的选择 5.8 最优特征生成 5.9 ... -
Stata 9 很好的统计软件
2008-11-24 11:45:14Stata提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一千六百页的出版品。 除了之外,Stata软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题...