文章目录

  • 1. 学习曲线
    • 1).低偏差、低方差(恰当拟合)的学习曲线:
    • 2).高偏差(欠拟合)的学习曲线:
    • 3).高方差(过拟合)的学习曲线:
  • 2.评价指标
    • 1). 混淆矩阵(Confusion Matrix)
    • 2). 准确率(Accuracy,ACC)
    • 3). 精确率(Positive Predictive Value,PPV)和召回率(True Positive Rate,TPR)
    • 4). F1分数
    • 5). PR曲线(Precision-Recall曲线)
    • 6). ROC曲线(Receiver Operating Characteristic)
    • 7). PR曲线和ROC曲线的比较和选择

1. 学习曲线

学习曲线是一种用来检测机器学习算法运行是否正常,或者改进算法模型的有效工具。它以横轴表示训练集的样本数量,纵轴表示误差(代价函数的大小,越大预测准确率越低),在同一个坐标图上,分别绘制出训练集的代价函数随样本数递增的波动曲线和交叉验证集的代价函数随样本数递增的变化曲线。

1).低偏差、低方差(恰当拟合)的学习曲线:

特点:

  • 随着训练样本数的增加,训练集误差曲线缓慢上升,验证集误差曲线缓慢下降。
  • 最终它们逐渐趋于水平,且保持一个较近的间隔。

2).高偏差(欠拟合)的学习曲线:

特点:

  • 随着训练样本数的增加,训练集误差曲线迅速上升(因为模型对数据样本的拟合能力很差),验证集误差曲线迅速下降。
  • 然后它们迅速水平(因为拟合能力太差,只需很少的样本就已经达到拟合极限,之后基本不再变化),且它们水平后的位置对应的误差值极大。
  • 对于这类高偏差的欠拟合模型,继续扩增样本数量无法改善模型的预测能力。

3).高方差(过拟合)的学习曲线:

特点:

  • 随着训练样本数的增加,训练集误差曲线极为缓慢地上升(因为拟合能力“过强”,所以始终能以极小的误差来拟合样本数据),验证集误差曲线极为缓慢地下降(因为过度拟合导致预测新数据能力始终很差),且它们之间长期保持很大的间隔。
  • 对这类高方差的过拟合模型,继续扩增样本量能够改善模型的预测能力,且当样本量非常非常大时,两条误差曲线的间隔会收敛为一个较小的正常值,此时模型能够达到恰当拟合状态。

sklearn实现

from sklearn.model_selection import learning_curvetrain_sizes, train_scores, validation_scores = learning_curve(estimator,  # 用到的机器学习模型x_train,    # 样本的自变量集y_train,    # 样本的因变量集cv,   # 交叉验证折叠数train_sizes   # 训练样本数量的递增比例情况,默认为np.linspace(0.1,1,5)
)

2.评价指标

在机器学习分类问题中,如果样本数据类别不平衡,会影响模型的识别精度并且降低许多性能指标的表现,因此通常需要考虑多个度量标准,从不同的角度来全面地评估分类器的性能表现。

1). 混淆矩阵(Confusion Matrix)

混淆矩阵(Confusion Matrix)是用来构建各个不同评价指标的最基础的概念

  • TP(True Positives):预测为正、实际为正的样本数

  • FN(False Negatives):预测为负、实际为正的样本数

  • FP(False Positives):预测为正、实际为负的样本数

  • TN(True Negatives):预测为负、实际为负的样本数

根据混淆矩阵可以推导出以下评价指标:

2). 准确率(Accuracy,ACC)

准确率表示预测正确的结果数占总样本数的比率,是最常用的评价指标,但在样本不均衡的情况下评价效果不好。
ACC=TP+TNP+N=TP+TNTP+TN+FP+FNA C C=\frac{T P+T N}{P+N}=\frac{T P+T N}{T P+T N+F P+F N} ACC=P+NTP+TN​=TP+TN+FP+FNTP+TN​
scikit-learn 实现如下:

from sklearn.metrics import accuracy_scoreaccuracy = accuracy_score(y_true, y_pred)

3). 精确率(Positive Predictive Value,PPV)和召回率(True Positive Rate,TPR)

精确率(查准率)表示表示预测为正的样本中实际也为正的比率;召回率(查全率)表示实际为正的样本中预测也为正的比率。
Precision =PPV=TPTP+FP\text { Precision }=P P V=\frac{T P}{T P+F P}  Precision =PPV=TP+FPTP​

Recall =TPR=TPP=TPTP+FN\text { Recall }=T P R=\frac{T P}{P}=\frac{T P}{T P+F N}  Recall =TPR=PTP​=TP+FNTP​

精确率高则说明查的准,误检率低;召回率高则说明查的全,漏检率低。比如在检索系统中,精确率就是使用浏览器搜索关键字时,检索出来的条目有多少是准确的、是用户需要的,召回率则是所有准确的条目中有多少被成功的检索出来了。总之,召回率是尽可能的把正样本都查找出来;而精确率尽可能地保证预测的正确率。通常,这是一对相互矛盾的指标,比如当模型想要提升召回率这个指标时,就会倾向于将结果预测为正样本,然而这将会导致不少的负样本被误判为正样本,从而导致精确率降低,反之亦然。因此通常在不同的业务需求环境之下,会采取不同的侧重。

scikit-learn 实现如下:

from sklearn.metrics import accuracy_scoreaccuracy = accuracy_score(y_true=y_test, y_pred=y_pred)from sklearn.metrics import recall_scorerecall = recall_score(y_true=y_test, y_pred=y_pred)

4). F1分数

F1 分数是召回率和精准率的调和平均值
F1=21Recall +1Precision =2Recall ×Precision Recall +Precision F_{1}=\frac{2}{\frac{1}{\text { Recall }}+\frac{1}{\text { Precision }}}=2 \frac{\text { Recall } \times \text { Precision }}{\text { Recall }+\text { Precision }} F1​= Recall 1​+ Precision 1​2​=2 Recall + Precision  Recall × Precision ​
scikit-learn 实现如下:

from sklearn.metrics import f1_scoref1 = f1_score(y_true=y_test, y_pred=y_pred)

5). PR曲线(Precision-Recall曲线)

P-R曲线是通过将分类阈值从高到低逐渐调整,产生的精确率和召回率的值对应的点描绘而成的曲线,其横轴是召回率,纵轴是精确率。P-R曲线上一个点的含义是,在该阈值之下的分类模型对应的召回率和精确率。

P-R 曲线越靠近右上方说明该模型预测性能越好。在对不同模型进行比较时,若一个模型的PR曲线被另一个模型的PR曲线完全包住则说明后者的性能优于前者,若模型的PR曲线发生了交叉,则无法直接判断哪个模型更好,此时常用平衡点进行比较,它是查准率=查全率时的取值。

6). ROC曲线(Receiver Operating Characteristic)

ROC曲线,即受试者工作特性曲线,其来源于医学领域,起源于军事领域。ROC曲线的纵轴为真阳性率(TPR),表示实际为正的样本中预测为正的比率;横轴为假阳性率(FPR),表示实际为负的样本中预测为正的比率。跟P-R曲线相似,ROC曲线也是通过不断调整分类阈值来逐步产生不同的点,最后再将这些点连接起来形成ROC曲线。
FPR=FPTN+FPF P R=\frac{F P}{T N+F P} FPR=TN+FPFP​

TPR=TPTP+FNT P R=\frac{T P}{T P+F N} TPR=TP+FNTP​

通常,ROC曲线越靠近左上角,说明模型预测性能越好。如果两个模型的ROC曲线交叉,难以直观得出结论,这时可以通过计算ROC曲线下方的面积(AUC)来比较模型优劣。

7). PR曲线和ROC曲线的比较和选择

两者之间最显著的一个差异是,ROC曲线对于样本类别不平衡有着很强的鲁棒性,如下图,当正负样本的分布变化的时候,ROC曲线能够保持不变,而PR曲线则会发生剧烈变化。

这一特性使得ROC曲线下面积AUC的值能保持稳定,AUC 值的意义相当于一个概率值,表示随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率。因此,AUC值实际上反映了模型的 rank 能力,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面。因此ROC曲线在某些场景下很适用,如 CTR 点击通过率排序,实际上便是在考验模型的排序能力。除此之外,CTR 中存在着样本不均衡的问题,正负样本比例通常会大于 1:100,如果采用 PR 曲线,则会导致 AUC 发生剧变,无法较好反映模型效果。

然而在有些场景下,比如信用卡欺诈检测,我们会更关注 precision 和 recall,比如说如果要求预测出为欺诈的人尽可能准确,那么就是要提高 precision;而如果要尽可能多地预测出潜在的欺诈人群,那么就是要提高 recall。一般来说,提高二分类的阈值就能提高precision,降低阈值就能提高 recall,这时便可观察 PR 曲线,得到最优的阈值。

总结

  1. ROC曲线兼顾正样本与负样本,所以适用于评估分类器的整体性能(通常是计算AUC,表示模型的rank性能),相比而言PR曲线主要聚焦于正样本。
  2. 如果有多份数据且存在不同的类别分布。比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较;反之,如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。
  3. 如果想要评估在相同的类别分布下正例的预测情况,则宜选PR曲线。类别不平衡问题中,ROC曲线通常会给出一个乐观的效果估计,所以大部分时候还是PR曲线更好。
  4. 最后可以根据具体的应用,在曲线上找到最优的点,得到相对应的precision,recall,f1 score等指标,去调整模型的阈值,从而得到一个符合具体应用场景的模型。

机器学习模型常用评估方法和指标相关推荐

  1. 机器学习模型常用评价指标(Accuracy, Precision, Recall、F1-score、MSE、RMSE、MAE、R方)

    前言 众所周知,机器学习分类模型常用评价指标有Accuracy, Precision, Recall和F1-score,而回归模型最常用指标有MAE和RMSE.但是我们真正了解这些评价指标的意义吗? ...

  2. 机器学习——模型的评估方法速查手册(RMSE+RSE+MAE+RAE+R^2)

    模型评估 文章目录 模型评估 学习目标 1 分类模型评估 2 回归模型评估 均方根误差(Root Mean Squared Error,RMSE) 相对平方误差(Relative Squared Er ...

  3. 机器学习模型常用性能指标和Python代码实现

    文章目录 问题描述 性能指标 分类问题 回归问题 代码实现 分类问题 回归问题 代码测试 分类问题 回归问题 问题描述 上半年开始做一个需要机器学习算法模型的项目,但是之前并没有研发过这类模型.起初的 ...

  4. 机器学习中的模型评估方法和指标

    机器学习模型的评估方法和指标 1.选择怎样的评估指标 1.1 Online metrics vs Offline metrics Online metrics是直接在线上环境做AB测试,比较两个实验组 ...

  5. 机器学习常用的评测指标Rank-n、Precision Recall、F-score、Map 、CMC、ROC Single shot 和Muti shot

    机器学习中常用的评测指标为:Rank-n.Precision & Recall.F-score.Map .CMC.ROC Single shot 和Muti shot,下面一个个进行介绍. 写 ...

  6. 机器学习模型在携程海外酒店推荐场景中的应用

    导读 互联网企业的核心需求是"增长",移动互联时代下的在线旅游业也不例外.随着大数据.云计算和人工智能等技术的不断进步,通过算法和模型来实现增长已成为核心. 近年来推荐系统迅速崛起 ...

  7. 干货 | 机器学习模型在携程海外酒店推荐场景中的应用

    "关于作者:Louisa,携程算法工程师,热爱前沿算法和技术在个性化推荐和广告建模等业务的性能优化和落地. 大数据产业创新服务媒体 --聚焦数据 · 改变商业 导读 互联网企业的核心需求是& ...

  8. 机器学习模型评价指标一览

    本文有Mcgill大学本科,waterloo大学硕士生林羿在圣一信息技术有限公司实习时,所做的收集. 在这篇文档里,我们会介绍一些常用的机器学习模型评价指标.这些指标会根据模型的目标而分成以下两类: ...

  9. 机器学习——模型测试与评估方法与指标

    评估模型的方法与指标 目录 评估模型的方法与指标 1.P-R曲线 2.ROC曲线 3.mAP 4.IOU 1.P-R曲线 查准率(precision)-------P-R曲线的纵坐标 查全率,召回率( ...

最新文章

  1. Hinton:胶囊网络的专利是我的了!
  2. 为什么本地图片都不能直接浏览器_微软工程师帮助谷歌解决Chromium浏览器中一个很长久的细节问题...
  3. 使用账户和密码在FTP客户端连接FTP服务器,出现vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot
  4. 前端学习笔记day14 移动盒子 封装函数
  5. DTD(Document Type Definition) 简介
  6. WIN7视觉保护色设置(附图)
  7. 产品经理——工作规范指南
  8. Mysql性能指标量化指标
  9. MusicPlayerByService
  10. 数据结构-赫夫曼树(三)
  11. 戴眼镜总是不舒服,你的眼镜真的适合你吗?
  12. C语言程序设计——计算梯形面积
  13. 降低语速是需求评审最有价值的技巧
  14. MATLAB程序设计与应用(第三版)刘卫国 答案(一)
  15. MySQL之悲观锁场景举例
  16. 没有相爱,只有相杀:微软和谷歌又撕上了...
  17. 用迅雷下载了MySQL怎么安装_MySQL的安装与配置——详细教程
  18. C# Task阻塞方式和延续操作
  19. flink worldcount
  20. css 揭秘-读书笔记

热门文章

  1. 李彦宏南大演讲:90后是幸运的一代 机会很多
  2. P315 static关键字
  3. 【学习笔记】DeepCrossing
  4. 解决vmware 本地连接时出错:地址仍未与网络终结点关联
  5. 安卓应用商店上架从入门到精通到放弃
  6. CSU1020-真三国无双-模拟
  7. Python爬虫 BeautifulSoup(bs4)-- bs4介绍、安装bs4、bs4基础语法
  8. IPCC呼叫中心解决案例   一嗨租车
  9. 求职-中国软件外包公司——给自己提个醒
  10. 设计师如何描述B端业务核心价值-综合篇