参考了统计学习方法,概率论与数理统计,工程线性代数,西瓜书,Machine Learnig with python做的总结,所以不能作为教程,还包含自己用sklearn做的一些对比实验,原文是写在jupyter上的,这里是直接转为.md导过来的,所以格式有些问题,有些东西还待完善…

(一)machine learning terminology

分类器(Classifier)

一段程序或一个函数将无标签实例映射到类别,则成称这段程序或这个函数为分类器

混淆矩阵(Confusion Matrix)

用来观察分类器的性能,其中矩阵列标表示实例的预测类别,行标表示实例的真是类别.下图就是一个二分类(binary classification)的混淆矩阵.表示正确预测男性42人,正确预测女性32人,18人被误分类为男性,8人被误分类为女性.

准确率 (accuracy(error rate))

准确率表示为: 正 确 预 测 实 例 数 / 实 例 总 数 正确预测实例数/实例总数 正确预测实例数/实例总数.上例中准确率是 ( 42 + 32 ) / ( 42 + 32 + 8 + 18 ) = 0.72 (42+32)/(42+32+8+18)=0.72 (42+32)/(42+32+8+18)=0.72

准确性悖论(Accuracy paradox)

我们假设有如下一个混淆矩阵,它只会预测female,我们可以计算其准确率 ( 50 + 0 ) / ( 0 + 50 + 50 + 0 ) = 0.5 (50+0)/(0+50+50+0)=0.5 (50+0)/(0+50+50+0)=0.5

又比如我们有一个垃圾邮件识别分类器,其混淆矩阵如下,所示,其准确率为 ( 91 + 4 ) / ( 91 + 4 + 1 + 4 ) = 0.95 (91+4)/(91+4+1+4)=0.95 (91+4)/(91+4+1+4)=0.95:

然后我们有另一个垃圾邮件识别分类器,其混淆矩阵如下所示,其准确率也是 ( 95 + 0 ) / ( 95 + 0 + 0 + 5 ) = 0.95 (95+0)/(95+0+0+5)=0.95 (95+0)/(95+0+0+5)=0.95。(两者用同样的实例数据)


虽然准确率都是0.95但是后者没有分类垃圾邮件的能力,因此分类器的好坏单看准确率是不够的,这就是准确性驳论。

精确率(Precision)和召回率(Recall)

TP:True Positive TN:True Negative FP:False Positive FN:False Negtive(翻译过来就是真阳性,真阴性,假阳性,假阴性)还是英文好记

A c c u r a c y : ( T N + T P ) / ( T N + T P + F N + F P ) Accuracy:(TN+TP)/(TN+TP+FN+FP) Accuracy:(TN+TP)/(TN+TP+FN+FP)
P r e c i s i o n : ( T P ) / ( T P + F P ) Precision:(TP)/(TP+FP) Precision:(TP)/(TP+FP)
R e c a l l : ( T P ) / ( T P + F N ) ( 也 是 T r u e p o s i t i v e r a t e ) Recall:(TP)/(TP+FN)(也是True\quad positive\quad rate) Recall:(TP)/(TP+FN)(也是Truepositiverate)
T r u e n e g t i v e r a t e : ( T N ) / ( T N + F P ) True\quad negtive\quad rate:(TN)/(TN+FP) Truenegtiverate:(TN)/(TN+FP)

多分类的混淆矩阵和准确率,精确率,召回率

A c u r r a c y : Acurracy: Acurracy: ∑ i M i i ∑ i j M i j \frac{\sum_i M_{ii}}{\sum_{ij} Mij} ∑ij​Mij∑i​Mii​​

P e r c i s i o n i : Percision_i: Percisioni​: M i i ∑ j M j i \frac{M_{ii}}{\sum_j M_{ji}} ∑j​Mji​Mii​​

R e c a l l i : Recall_i: Recalli​: M i i ∑ j M i j \frac{M_{ii}}{\sum_j M_{ij}} ∑j​Mij​Mii​​

上面这个例子中: A c c u r a c y = ( 6 + 6 + 8 ) / ( 6 + 2 + 1 + 6 + 1 + 1 + 8 ) = 0.8 Accuracy=(6+6+8)/(6+2+1+6+1+1+8)=0.8 Accuracy=(6+6+8)/(6+2+1+6+1+1+8)=0.8 p e r c i s i o n d o g = 6 / ( 6 + 1 + 1 ) = 0.75 percision_{dog}=6/(6+1+1)=0.75 percisiondog​=6/(6+1+1)=0.75
p e r c i s i o n c a t = 6 / ( 6 + 1 + 2 ) = 0.67 percision_{cat}=6/(6+1+2)=0.67 percisioncat​=6/(6+1+2)=0.67 p e r c i s i o n s n a k e = 8 / ( 0 + 0 + 8 ) = 1 percision_{snake}=8/(0+0+8)=1 percisionsnake​=8/(0+0+8)=1

r e c a l l d o g = 6 / ( 6 + 2 + 0 ) = 0.75 recall_{dog}=6/(6+2+0)=0.75 recalldog​=6/(6+2+0)=0.75 r e c a l l c a t = 6 / ( 6 + 1 + 0 ) = 0.86 recall_{cat}=6/(6+1+0)=0.86 recallcat​=6/(6+1+0)=0.86 r e c a l l s n a k e = 8 / ( 1 + 1 + 8 ) = 0.8 recall_{snake}=8/(1+1+8)=0.8 recallsnake​=8/(1+1+8)=0.8

Roc曲线

横 轴 : F a l s e p o s i t i v e r a t e ( F P R ) 表 示 预 测 的 正 例 中 负 例 占 所 有 负 例 的 比 例 : F P R = ( F P ) / ( F P + T N ) 横轴:False positive rate(FPR)表示预测的正例中负例占所有负例的比例:FPR=(FP)/(FP+TN) 横轴:Falsepositiverate(FPR)表示预测的正例中负例占所有负例的比例:FPR=(FP)/(FP+TN)
纵 轴 : T r u e p o s i t i v e r a t e ( T P R ) 表 示 预 测 的 正 例 中 正 例 占 所 有 正 例 的 比 例 : T P R = ( T P ) / ( T P + F N ) 纵轴:True positive rate(TPR)表示预测的正例中正例占所有正例的比例:TPR=(TP)/(TP+FN) 纵轴:Truepositiverate(TPR)表示预测的正例中正例占所有正例的比例:TPR=(TP)/(TP+FN)
T r u e n e g t i v e r a t e ( T N R ) 表 示 预 测 的 负 例 中 负 例 占 所 有 负 例 比 例 : T N R = ( T N ) / ( T N + F P ) True negtive rate(TNR)表示预测的负例中负例占所有负例比例:TNR=(TN)/(TN+FP) Truenegtiverate(TNR)表示预测的负例中负例占所有负例比例:TNR=(TN)/(TN+FP)
所 以 有 T N R = 1 − F P R 所以有TNR=1-FPR 所以有TNR=1−FPR

假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值 θ \theta θ,概率大于等于 θ \theta θ的为正类,小于 θ \theta θ的为负类.对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点.随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大(前者因为FN减少,后者因为FP增加).阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1).

AUC(Area under Curve):Roc曲线下的面积,介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。AUC就是从所有正样本中随机选择一个样本,从所有负样本中随机选择一个样本,然后根据你的学习器对两个随机样本进行预测,把正样本预测为正例的概率 p 1 p_1 p1​,把负样本预测为正例的概率 p 2 p_2 p2​, p 1 > p 2 p_1>p_2 p1​>p2​的概率就等于AUC.所以AUC反映的是分类器对样本的排序能力.根据这个解释,如果我们完全随机的对样本分类,那么AUC应该接近0.5.

举个例子

现在我们有一个二分类器,20个样本,然后分类结果如下所示.

import pandas as pd
#a=pd.Series([1,2,3,5],index=["a","b","c","d"])
#print(a)
Class=pd.Series([1,1,-1,1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1])
Score=pd.Series([0.9,0.8,0.7,0.6,0.55,0.54,0.53,0.52,0.51,0.505,0.4,0.39,0.38,0.37,0.36,0.35,0.34,0.33,0.30,0.1])
dt={"class":Class,"score":Score}
data=pd.DataFrame(dt)
print(data)
    class  score
0       1  0.900
1       1  0.800
2      -1  0.700
3       1  0.600
4       1  0.550
5       1  0.540
6      -1  0.530
7      -1  0.520
8       1  0.510
9      -1  0.505
10      1  0.400
11     -1  0.390
12      1  0.380
13     -1  0.370
14     -1  0.360
15     -1  0.350
16      1  0.340
17     -1  0.330
18      1  0.300
19     -1  0.100

class表示其真实类别,score表示模型判别其为正类的概率

def FPR(data,threshold):FP=0TN=0for i in range(len(data)):#print(data.ix[i])#print(data["class"])if (data["score"][i]>=threshold)&(data["class"][i]==-1):FP+=1if (data["score"][i]<threshold)&(data["class"][i]==-1):TN+=1return FP/(FP+TN)
def TPR(data,threshold):TP=0FN=0for i in range(len(data)):if (data["score"][i]>=threshold)&(data["class"][i]==1):TP+=1if (data["score"][i]<threshold)&(data["class"][i]==1):FN+=1return TP/(TP+FN)print("min FPR:",FPR(data,0.9))
print("min TPR:",TPR(data,0.9))
print("max FPR:",FPR(data,0.1))
print("max TPR:",TPR(data,0.1))
min FPR: 0.0
min TPR: 0.1
max FPR: 1.0
max TPR: 1.0
from matplotlib import pyplot as pl
ROC_FPR=[]
ROC_TPR=[]
for threshold in data["score"]: ROC_FPR.append(FPR(data,threshold))ROC_TPR.append(TPR(data,threshold))
pl.plot(ROC_FPR,ROC_TPR)
pl.xlabel("FPR")
pl.ylabel()
pl.show()

机器学习分为:监督学习(Supervised learning),无监督学习(Unsupervised learning),半监督学习(Semi-supervised learning),强化学习(Reinforcement learning)

混淆矩阵,准确率,精确率,召回率,Roc曲线相关推荐

  1. 分类器MNIST交叉验证准确率、混淆矩阵、精度和召回率(PR曲线)、ROC曲线、多类别分类器、多标签分类、多输出分类

    本博客是在Jupyter Notebook下进行的编译. 目录 MNIST 训练一个二分类器 使用交叉验证测量精度 混淆矩阵 精度和召回率 精度/召回率权衡 ROC曲线 多类别分类器 错误分析 多标签 ...

  2. 混淆矩阵与精确度、召回率、F1 Score

    1.计算公式 从混淆矩阵计算精确度.召回率.F1 Score的过程如下图所示,其中P和R即Precision和Recall: 2.验证实验 如下图为Azure ML自带的一个示例给出的模型评分结果:原 ...

  3. 分类算法的评价指标-混淆矩阵,精准率召回率,pr曲线,roc曲线等

    文章目录 前言 一.混淆矩阵(confusion matrix)? 二.精准率和召回率 1.精准率 2.召回率 3.自己实现精准率和召回率以及混淆矩阵 4.sklearn中的精准率召回率以及混淆矩阵 ...

  4. 机器学习:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线

    增注:虽然当时看这篇文章的时候感觉很不错,但是还是写在前面,想要了解关于机器学习度量的几个尺度,建议大家直接看周志华老师的西瓜书的第2章:模型评估与选择,写的是真的很好!! 以下第一部分内容转载自:机 ...

  5. 机器学习深度学习:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线

    增注:虽然当时看这篇文章的时候感觉很不错,但是还是写在前面,想要了解关于机器学习度量的几个尺度,建议大家直接看周志华老师的西瓜书的第2章:模型评估与选择,写的是真的很好!! 以下第一部分内容转载自:机 ...

  6. 机器学习模型评价指标:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线

    转自机器学习:准确率(Precision).召回率(Recall).F值(F-Measure).ROC曲线.PR曲线 摘要: 数据挖掘.机器学习和推荐系统中的评测指标-准确率(Precision).召 ...

  7. 机器学习各种模型评价指标:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线

    周志华老师的西瓜书的第2章:模型评估与选择 摘要: 数据挖掘.机器学习和推荐系统中的评测指标-准确率(Precision).召回率(Recall).F值(F-Measure)简介. 引言: 在机器学习 ...

  8. 机器学习评估指标汇总:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线

    摘要: 数据挖掘.机器学习和推荐系统中的评测指标-准确率(Precision).召回率(Recall).F值(F-Measure)简介. 引言: 在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型 ...

  9. 机器学习:PR曲线、准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线

    增注:虽然当时看这篇文章的时候感觉很不错,但是还是写在前面,想要了解关于机器学习度量的几个尺度,建议大家直接看周志华老师的西瓜书的第2章:模型评估与选择,写的是真的很好!! 以下第一部分内容转载自:机 ...

  10. 【机器学习入门】(13) 实战:心脏病预测,补充: ROC曲线、精确率--召回率曲线,附python完整代码和数据集

    各位同学好,经过前几章python机器学习的探索,想必大家对各种预测方法也有了一定的认识.今天我们来进行一次实战,心脏病病例预测,本文对一些基础方法就不进行详细解释,有疑问的同学可以看我前几篇机器学习 ...

最新文章

  1. 你只使用到了 VS Code 20% 的功能?让 VS Code 首著作者带你玩转 VS Code!
  2. 【控制】《多无人机协同控制技术》周伟老师-目录
  3. 精准扶贫探索新融合模式-农业大健康·李龙:谋定乡村振兴
  4. 超完整的用户体验设计流程,规范化提升产品效率
  5. Echart---多项柱状图-2D/H5
  6. 7.1.16 jQueray的鼠标事件
  7. python显示图像某列的颜色值_Python Pandas Matplotlib图由单列中定义的类型值着色
  8. 海外 谷歌 app api_Google App Engine Java功能和命名空间API
  9. 前端学习(2846):css浮动和定位布局
  10. 腾讯安全携手华夏银行“论道”金融风控,传递在线反欺诈干货建议
  11. react 项目使用qrcode.react生成二维码,并提供批量下载
  12. mysql64官网下教程_最新版MySQL 8.0.22下载安装超详细教程(Windows 64位)
  13. Mobile-Former: Bridging MobileNet and Transformer详解
  14. Dell EMC PowerEdge R740 服务器的驱动程序和固件更新
  15. 《GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)》
  16. 微信小程序-如何申请百度开放平台的密钥
  17. ffmpeg文档中文翻译
  18. Backup And Recovery User's Guide-为长期存储而创建归档备份
  19. 图书管理系统---用户模块
  20. 【English】《控方证人》

热门文章

  1. P问题、NP问题、NPC问题、NP难问题
  2. C语言 FILE结构体
  3. hbase java查询_Java进行Hbase查询
  4. 如何读懂DataSheet
  5. Shell内值命令之exit
  6. 集电极开路_百度百科
  7. 互联网的成本:不要低估背后的隐性成本
  8. vue-router如何使用?,vue-router使用步骤
  9. 上周热点回顾(7.21-7.27)
  10. 【博客278】TCP连接异常关闭的几种情况