文档章节

模型评估

o
 osc_a22drz29
发布于 2019/03/28 11:45
字数 2384
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

  • 文章从模型评估的基本概念开始,分别介绍了常见的分类模型的评估指标和回归模型的评估指标以及这些指标的局限性。部分知识点举例加以阐述,以便加深理解。思维导图如下: image

1 基本概念

  • 模型评估用来评测模型的好坏。

  • 模型在训练集上的误差通常称为 训练误差经验误差,而在新样本上的误差称为 泛化误差。显然,机器学习的目的是得到泛化误差小的学习器。然而,在实际应用中,新样本是未知的,所以只能使训练误差尽量小

  • 所以,为了得到泛化误差小的模型,在构建机器模型时,通常将数据集拆分为相互独立的训练数据集、验证数据集和测试数据集等,而在训练过程中使用验证数据集来评估模型并据此更新超参数训练结束后使用测试数据集评估训练好的最终模型的性能

  • 模型的比较:

    • 一次训练过程中的模型比较。
    • 多次训练模型比较。
    • 不同算法的模型比较。

2 评估指标的局限性

  • 在模型评估过程中,分类问题、排序问题、回归问题往往需要使用不同的指标进行评估。在诸多的评估指标中,大部分指标只能片面地反映模型的一部分性能。如果不能合理地运用评估指标,不仅不能发现模型本身的问题,而且会得出错误的结论。

3 分类模型的评估指标

  • 正样本:需要判定概率为1的类型的样本叫做正样本。
  • 负样本:需要判定概率为0的类型的样本叫做负样本。

3.1 混淆矩阵(Confusion Matrix)

  • |误差矩阵|预测正值|预测负值| |---|---|---| |真实正值|TP|FN| |真实负值|FP|TN|
  • True Positive(真正, TP):将正类预测为正类数。
  • True Negative(真负 , TN):将负类预测为负类数。
  • False Positive(假正, FP):将负类预测为正类数。--> 误报(Type I error):假的正样本(实际是负样本)。
  • False Negative(假负 , FN):将正类预测为负类数。--> 漏报(Type II error):假的负样本(实际是正样本)。

3.2 准确率(Accuracy)

  • 准确率是指分类正确的样本总样本个数的比例。
  • $$ACC = \frac{TP+TN}{TP+TN+FP+FN}$$
  • 准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本占比十分不平衡时,占比较大的样本对准确率影响较大

3.3 精确率(Precision)

  • 精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例,又叫查准率。
  • $$ P = \frac{TP}{TP+FP} $$
  • TP+FP代表无论真与假,报出来数据都是正样本。

3.4 召回率(Recall)

  • 召回率是指分类正确的正样本个数真正的正样本个数的比例,又叫查全率。
  • $$ R = \frac{TP}{TP+FN} $$

3.5 precision与recall小例子

  • 金融诈骗分类中,正样本P代表是金融诈骗;负样本N代表不是金融诈骗。假设正样本P有100个,负样本N有100个。取threshold=0.5得TP=80,FP=20,问precision和recall分别是多少?如果取threshold=0.9,precision和recall将有什么变化?
  • $Precision = TP/(TP+FP)=0.8$;也可算误报率0.2,1-0.2 =0.8;
  • $Recall = TP/(TP+FN) = 0.8$;也可计算漏报率0.2,1-0.2=0.8;
  • 若threshold=0.9,则TP减小,TP+FP减小,precision不确定;极端情况下FP为0,precision会上升。TP+FN不变,因此recall会减小。
  • 通过上面的例子我们发现:实际上precision和recall没什么关系。

3.6 P-R(Precision-Recall)曲线

  • 这里简单介绍一下P-R曲线的绘制方法。P-R曲线的横轴是召回率,纵轴是精确率。对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。
  • PR曲线越靠近右上越好。

3.7 F1 score

  • F1 score和ROC曲线也能综合地反映一个排序模型的性能。
  • 是精准率和召回率的调和平均值,它定义为$F1=\frac{2 \times Precision \times Recall}{Precision + Recall}$。
  • $$\frac{2}{F_1} = \frac{1}{P} + \frac{1}{R}$$
  • $$F_1 = \frac{2TP}{2TP+FP+FN}$$

3.8 ROC曲线

  • ROC曲线的纵坐标为真阳性率(True Positive Rate,TPR);横坐标为假阳性率(False Positive Rate,FPR)。TPR和FPR的计算方法分别为: $$TPR = \frac{TP}{TP+FN}$$ $$FPR = \frac{FP}{FP+TN}$$ 上式中,P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数。
  • 实际上,TPR就是召回率,FPR是负样本角度的召回率,即误召率。
  • AUC指的是ROC曲线下的面积大小,该值能够量化地反映基于ROC曲线衡量出的模型性能。计算AUC值只需要沿着ROC横轴做积分就可以了。由于ROC曲线一般都处于y=x这条直线的上方(如果不是的话,只要把模型预测的概率反转成1−p就可以得到一个更好的分类器),所以AUC的取值一般在0.5~1之间。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
  • ROC曲线越靠近左上越好。

3.9 Roc曲线与P-R曲线有何不同?

  • 相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变(稳定),而P-R曲线的形状一般会发生较剧烈的变化(敏感)。
  • 选择P-R曲线还是ROC曲线是因实际问题而异的,如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够更直观地反映其性能。

3.10 分类模型评估指标小结

指标 描述 Scikit-learn函数
Confusion Matrix 混淆矩阵 from sklearn.metrics import confusion_matrix
Precision 精确率 from sklearn.metrics import precision_score
Recall 召回率 from sklearn.metrics import recall_score
F1 F1值 from sklearn.metrics import f1_score
ROC ROC曲线 from sklearn.metrics import roc
AUC ROC曲线下的面积 from sklearn.metrics import auc

4 回归模型的评估指标

4.1 均方误差(MSE)

  • 公式:$\frac{1}{m} \sum_{i=1}^{m}(\hat{y_i} - y_i)^2$
  • 真实值-预测值,平方和求平均。
  • 这不就是线性回归的损失函数嘛!对,在线性回归的时候我们的目的就是让这个损失函数最小。那么模型做出来了,我们把损失函数丢到测试集上去看看损失值不就好了嘛。简单直观暴力!
  • 最常用的回归模型的评估指标。

4.2 均方根误差(RMSE)

  • 公式:$\sqrt{\frac{1}{m} \sum_{i=1}^{m}(\hat{y_i} - y_i)^2}$
  • MSE开个根号。数据太大可以开根号。
  • RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差。
  • 模型在95%的时间区间内的预测误差都小于1%,取得了相当不错的预测结果。那么,造成RMSE指标居高不下的最可能的原因是什么?--离群点。 解决办法?可以从三个角度来思考。
    • 第一,如果我们认定这些离群点是“噪声点”的话,就需要在数据预处理的阶段把这些噪声点过滤掉。
    • 第二,如果不认为这些离群点是“噪声点”的话,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去(这是一个宏大的话题,这里就不展开讨论了)。
    • 第三,可以找一个更合适的指标来评估该模型。关于评估指标,其实是存在比RMSE的鲁棒性更好的指标,比如平均绝对百分比误差(Mean Absolute Percent Error,MAPE),它定义为$MAPE = \sum_{i=1}^{n}|\frac{y_i - \bar{y_i}}{y_i}| \times \frac{100}{n}$.MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。

4.3 平均绝对误差(MAE)

  • Mean Absolute Error ,是绝对误差的平均值,能更好地反映预测值误差的实际情况.
  • $\frac{1}{m} \sum_{i=1}^{m}|\hat{y_i} - y_i|$

4.4 可决系数(R-Squared)

  • $R^2 = 1 - \frac{\sum_{i=1}(\hat{y_i}-y_i)^2}{\sum_{i=1}(\bar{y_i}-y_i)^2}$
  • 其中,$\hat{y_i}$是预测值,$\bar{y_i}$是预测值的平均值。$R^2<=1$且越大越好。

4.5 回归模型的评估指标小结

指标 描述 Scikit-learn函数
Mean Square Error (MSE, RMSE) 平均方差 from sklearn.metrics import mean_squared_error
Absolute Error (MAE, RAE) 绝对误差 from sklearn.metrics import mean_absolute_error, median_absolute_error
R-Squared R平方值 from sklearn.metrics import r2_score
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
基于PaddlePaddle的对话自动评估模型实现

注意 本项目代码包含多个文件, Fork并使用GPU环境来运行后, 才能看到项目完整代码, 并正确运行: 并请检查相关参数设置, 例如use_gpu, fluid.CUDAPlace(0)等处是否设置正确. 下载安装命令 CP...

飞桨PaddlePaddle
04/27
6
0
深度学习模型训练流程

版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/79242364 文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 工作中训...

SnailTyan
2018/02/02
0
0
深度学习模型训练流程

文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 工作中训练了很多的深度学习模型,目前到了上升到方法论的角度来看了。日常工作中有的人可能已经在遵循方法论做事,可能自己没有注意,有...

Quincuntial
2018/02/02
0
0
基于机器学习的工控安全风险评估

1 引言 随着工业控制网络与企业信息网络的不断融合,工业控制系统的安全管理受到了重大的挑战。工控系统安全等级评估是安全管理的重要内容,传统的安全等级评估方法主要有故障树分析法、层次...

liqing1310200526
2018/03/14
0
0
大数据环境下的城市交通综合评估技术

本文乃个人观点,抛砖引玉,为纪念深圳市路内停车试点片区正式收费,开启了高成本的用车时代。一、 现状与发展形势 截至2014年6月,深圳市机动车保有量达到288万辆,同比增速超过17%,每年约...

数据分析师
2015/06/26
26
0

没有更多内容

加载失败,请刷新页面

加载更多

将分段视频合并

环境 操作系统:Ubuntu Kylin 优麒麟 20.04 LTS 适用架构:AMD64、ARM64(鲲鹏、飞腾) 方法 将下载的视频分片段放入同一个文件夹。按片段排序的文件名汇入list.txt。 ls qq_video*.mp4 | s...

chipo
27分钟前
13
0
C#和C++混合编程系列1-内存管理

2篇前置博文: Http服务器-第十步加入基于Mono平台的C#脚本支持 https://my.oschina.net/kkkkkkkkkkkkk/blog/4322402 架构9-引入C#混合编程-服务端概述 https://my.oschina.net/kkkkkkkkkkk...

梦想游戏人
31分钟前
18
0
SQL使用SELECT * [columnA除外] FROM tableA排除列?

问题: We all know that to select all columns from a table, we can use 我们都知道要从表中选择所有列,我们可以使用 SELECT * FROM tableA Is there a way to exclude column(s) from......

fyin1314
46分钟前
12
0
LVS-NAT模式示例配置

实验环境 Centos 7.6.1810 + ipvsadm v1.27 配置脚本 Director配置(1台) yum install -y ipvsadm; echo 1 > /proc/sys/net/ipv4/ip_forward; ipvsadm -C; # 清空所有集群配置 ipvsadm -A -......

月下狼
46分钟前
9
0
linux 复制 黏贴

飞雪无痕
56分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部