美文网首页机器学习与数据挖掘
【ML-QA-0】机器学习模型评估

【ML-QA-0】机器学习模型评估

作者: 青箬笠绿蓑衣_简 | 来源:发表于2019-12-21 18:53 被阅读0次
23efc9e88ddb3ea37265f35feb800a28.png

没有测量,就没有科学 ——门捷列夫

原本之前的知识点总结里面没有太多关于模型评估的内容,QA这部分开始也没打算单独整理出来模型评估的部分。不过考虑到一个模型的评估指标是一个机器学习任务核心的部分,需要清楚各类机器学习任务的评估指标,那就汇总整理一下。

  • 评估指标
  • 评估方法

评估指标

机器学习的问题主要有分类、回归、聚类等等
当我们选择评估指标的时候,要考虑具体的任务目标,要考虑具体的数据样本。有的时候我们关注准确率,有时候关注精准率,有时候更关注召回,不同的指标结果评定不同的任务产出。

1、分类

1.1 准确率 Accuracy

准确率指的是分类正确的样本占总样本个数的比例:
Accuracy=\frac{N_{correct}}{N}

其中N_{correct}是分类正确的样本数, N是样本总数。
准确率是我们最常见最基本的评估指标,但是我们常见的机器学习任务中遇到的数据太多数情况下都是正负样本不均衡,这个时候Accuracy就没有什么参考价值了。
比如一个数据样本中,正样本比例为99%,那我们把全部样本预测为正样本那就可以得到99%的准确率,我们一看,哇,准确率这么高,拿着这个模型去预测新数据集,GG......显然是不合适的。

1.2 混淆矩阵

我们假设是二分类模型,那必然有样本的真实情况和模型的预测情况,我们将真实情况和预测情况放在同一个表格里面,这就是混淆矩阵(Confusion Matrix)。如下图所示。


2019-12-21-16-44-01.png

其中:
T:True, F:False, P:Positive, N: Negative.
True positive 真正例:实际为正,预测为正
False positive 假正例:实际为负,预测为正
True negative 真反例:实际为负,预测为负
False negative 假反例:实际为正,预测为负
根据这个表,我们可以将上面的准确率表示为Accuracy=\frac{TP+TN}{TP+FN+FP+TN}
为什么要这个混淆矩阵呢,我认为这样可以把更精细的把结果评估分离出来,我们可以根据具体的任务来选择需要的数据结果进行来计算评估。

1.3 精确率(查准率)Precision、召回率(查全率)Recall

精确率Precision指的是分类正确的正样本数占预测出来为正样本个数的比例。
白话就是说,我模型预测说它们是正样本,那这个里面到底多少是真正的正样本呢。
Precision=\frac{TP}{TP+FP}
分母是TP+FP,看的是在模型预测出来的样本里面。

召回率Recall指的是分类正确的正样本数占真正正样本个数的比例。
白话说就是,在真正的正样本里面,实际的正样本的里面,我能找出来多少,能预测出来多少。
Recall=\frac{TP}{TP+FN}
分母是TP+FN,看的是实际样本。

但是Precision和Recall两者既矛盾又统一,为了提高Precision,那预测的时候就更加保守,把更有把握的样本才预测为正样本,但是同时因为模型的保守,放弃很多有可能预测为正的样本,导致Recall降低。
一方面我们需要根据具体的业务场景来选择是用Precision还是Recall来评定,一方面我们需要其他的指标来综合Precision和Recall。

1.4 PR曲线

P-R曲线,横轴是Recall,纵轴是Precision。
PR曲线如何绘制。
我们将模型的预测结果对样例进行排序,预测出来的概率0-1之间,我们降序排列,前面的更有可能是正样本,越到后面越有可能是负样本,这就是一个阈值选择的问题。我们按照降序一个一个样本划分,前面的为正,后面的为负,由此计算当前的Recall,Precision,然后按照Recal为横轴,Precision为纵轴作图。


2019-12-21-16-44-17.png

如果一个模型的PR曲线包住了另外一个,比如上图中的A、C,我们说A的性能优于C。
我们引入一个平衡点(BEP),来比较BEP。
我们就是要找出一个阈值,找出一个平衡点,来兼顾Precision和Recall。

1.5 F1

我们需要一个指标来综合PR的性能,F1度量:
F1=\frac{2*P*R}{P+R}
F1度量的一个一般形式是F_\beta:
F_\beta=\frac{(1+\beta)*P*R}{({\beta}^2*P)+R}
面试中可能会问F1中的1指的是什么?这个1就是这里面的\beta,度量了Recall对Precision的相对重要性。

1.6 ROC与AUC

真正率
TPR=\frac{TP}{TP+FN}
分母是真实的正样本数量,考虑的是正样本方面

假正率
FPR=\frac{FP}{FP+TN}
分母是正式的负样本数量,考虑的是负样本方面

这样ROC曲线中既考虑了正样本,又考虑了负样本,因此避免了正负样本不平衡带来的影响。

与P-R曲线类似,我们根据模型的预测结果对样例进行排序,我们按照顺序一个一个将样本划分成正、负,每次计算两个值,“真正率”做为纵轴,“假正率”做为横轴。


2019-12-21-17-33-10.png

AUC指的是ROC曲线下的面积大小。由图可见,一般ROC的曲线都在y=x直线上面,AUC的取值一般为0.5-1之间,AUC越大,说明模型越可能把正真的正样本排在前面,分类性能越好。

1.7 PR曲线与ROC曲线对比

按照周志华老师的《机器学习》中所说。
相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。
这样可能让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。
所以在推荐、广告领域中,ctr、cvr模型中,往往正负样本极其不平衡,负样本是正样本的很多很多倍,所以这时候看ROC曲线,AUC的值就更为可靠。

2、回归

2.1 平均绝对误差MAE(Mean Absolute Error)

MAE(y,\hat{y}) = \frac{1}{n_{sample}}\sum\limits_{i=1}^{n_{sample}}|y_i-\hat{y_i}|

2.2 平均平方误差MSE(Mean Squared Error)

MAE(y,\hat{y}) = \frac{1}{n_{sample}}\sum\limits_{i=1}^{n_{sample}}(y_i-\hat{y_i})^2

2.3 RMSE

RMAE(y,\hat{y}) = \sqrt{\frac{1}{n_{sample}}\sum\limits_{i=1}^{n_{sample}}(y_i-\hat{y_i})^2}
RMSE能够很好反应回归模型预测值与真实值的偏离程度。但是还是考虑实际的数据情况,如果存在个别的离群点,就会影响RMSE指标结果。
参考HuLu老师们的话,
对于这种离群点,怎么解决呢?

  • 如果我们认为这些点确实是噪声,那在数据预处理阶段就要处理掉;
  • 如果不认为是噪声,那我们就要进一步提高模型的预测能力;
  • 找一个更合适的指标来评估,如下

2.4 平均绝对百分比误差MAPE(Mean Absolute Percent Error)

MAPE=\sum\limits_{i=1}^{n}|\frac{y_i-\hat{y_i}}{y_i}|*\frac{100}{n}
相比RMSE,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。

3、除此之外,LR、SVM、聚类等等算法都有对应的损失函数,评估指标,后续小结再整理


评估方法

1、留出法

“留出法“直接将数据集划分为两个互斥的集合,一个作为训练集,一个作为测试集。
train/test在划分的时候要尽可能地保持数据分布一致,避免划分之后带来额外地偏差。
我们可以多次随机划分,重复的实验,最终的评估结果就是多次实验结果的平均。
如果样本数据集比较少,评估的结果就太不可信了,偏差大。
我们用的比较多的就是sklearn里面的train_test_split

2、交叉验证法

“交叉验证法”就是先将数据集划分k个大小相似的互斥子集,同样所有子集都尽可能保持数据分布一致。每次利用k-1个子集作为训练集,剩下的一个作为测试集。这样我们可获得K组train/test,进行K次训练和测试,最终返回k个测试结果的均值。也称”k折交叉验证”
如图为10折交叉验证


2019-12-21-18-07-38.png

我们可以利用sklearn中的KFold

3、自助法

“自助法“是以自助采样法作为基础。
从m个样本的数据集D,随机采样(选)一个样本,拷贝入训练D’,放回,继续随机挑选,直至m次。
样本在m次采样中始终不被采样到的概率是(1-\frac{1}{m})^m,取极限得到:

CodeCogsEqn.png

实际评估的模型与期望评估的模型都使用m个训练样本,而仍有约1/3的没有在训练集的样本用于测试。

自助法在数据集较小、难以有效划分训练/测试集时很有用。在初始数据量足够时,留出法和交叉验证法更常用。

相关文章

  • 【ML-QA-0】机器学习模型评估

    没有测量,就没有科学 ——门捷列夫 原本之前的知识点总结里面没有太多关于模型评估的内容,QA这部分开始也没打算单独...

  • Spark机器学习笔记

    Spark机器学习笔记 机器学习 机器学习是数据通过算法构建出模型并对模型进行评估,评估的性能如果达到要求就拿这个...

  • 一文深度解读模型评估方法

    本文将总结机器学习最常见的模型评估指标。训练学习好的模型,通过客观地评估模型性能,才能更好实际运用决策。模型评估主...

  • 【Spark Mllib】性能评估 ——MSE/RMSE与MAP

    推荐模型评估 本篇我们对《Spark机器学习1.0:推荐引擎——电影推荐 》模型进行性能评估。 MSE/RMSE ...

  • 【百面机器学习】优化算法

    机器学习算法 = 模型表征 + 模型评估 + 优化算法。不同的优化算法对应的模型表征和评估指标分别为线性分类模型和...

  • 机器学习模型评估指标示例

    选择正确的度量来评估机器学习模型 我们什么时候评估我们的机器学习模型呢?答案不是只有一次。通常,我们在实际的数据科...

  • C#机器学习之判断日报是否合格

    简单来说机器学习的核心步骤在于“获取学习数据;选择机器算法;定型模型;评估模型,预测模型结果”,下面本人就以判断日...

  • 机器学习模型评估

    1.训练集测试集划分方案 a)留出法hold-out 直接将原始数据集D划分为两个互斥集合,其中一个作为训练集S,...

  • 机器学习-模型评估

    1.归纳偏好 机器学习算法在学习过程中对某种类型假设的偏好,称为归纳偏好。 *两种决策 适用情形尽可能少(经验误差...

  • 【机器学习】①模型评估

网友评论

    本文标题:【ML-QA-0】机器学习模型评估

    本文链接:https://www.haomeiwen.com/subject/jpggnctx.html