前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MLK | 模型评估的一些事

MLK | 模型评估的一些事

作者头像
Sam Gor
发布2019-07-08 15:17:19
5820
发布2019-07-08 15:17:19
举报
文章被收录于专栏:SAMshare
"MLK,即Machine Learning Knowledge,本专栏在于对机器学习的重点知识做一次梳理,便于日后温习,内容主要来自于《百面机器学习》一书,结合自己的经验与思考做的一些总结与归纳,今天主要写一下模型评估的东西,做一下整理。"

? Index

  • 评估指标的局限
  • ROC曲线与AUC
  • 余弦距离应用
  • A/B Test的必要
  • 模型评估的方法

? 评估指标的局限

为了对模型的效果进行评估,我们就需要各种各样的指标,不同的问题需要不同的指标来评估,而且大部分的指标都是有局限性的,那么,我们就来盘点一下吧。

Accuracy(准确率)

首先,我们得知道准确率的定义,它指的是分类正确的样本占总样本个数的比例,公式为:

所以,从公式上可以看出明显缺陷,那就是当我们的样本极度不平衡的时候,比如99%都是正样本,那么分类器只要把样本都预测为正样本,那么准确率就有99%了,但这样子的分类器其实意义不大。

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

Precision:指的是分类正确的正样本个数占分类器判定为正样本的样本个数的比例

Recall:指的是分类正确的正样本个数占真正的正样本个数的比例

这两个指标是矛盾的,为了提高Precision,分类器需要尽量把"更有把握"的样本预测为正样本,但这样子会漏掉一些"不怎么有把握"的正样本,导致Recall比较低。

所以当我们在评估一个排序模型的时候,需要绘制一个P-R曲线(即Precision-Recall曲线),曲线的横坐标为召回率,纵坐标为精确率,我们评估模型的时候就要整体的PR曲线表现。

RMSE(平方根误差)

RMSE,Root Mean Squared Error,一般都是用来衡量回归模型的好坏,但是这个指标往往对离群点特别地敏感,即便大多数的预测都很准,但如果存在小部分的离群点,都会把这个指标变得很大,公式为:

MSE(均方误差)

MSE (Mean Squared Error)叫做均方误差,这个往往都是用于线性回归的损失函数,就是让这个指标最小化,公式为:

MAE(平均绝对误差)

MAE(Mean Absolute Error),其实和MSE差不多。

MAPE(平均绝对百分比误差)

MAPE,Mean Absolute Percent Error,它相比于RMSE有更强的鲁棒性,它会把每个点的误差进行归一化,降低了个别离群点带来的绝对误差的影响,公式为:

? ROC曲线与AUC

ROC曲线(Receiver Operating Characteristic Curve)在模型评估上是值得专门用一小节来整理一下的,对于风险评分卡等二值分类器特别常用也是最重要的一个指标。

横轴:负正类率(false postive rate FPR),又被叫作特异度,划分实例中所有负例占所有负例的比例。

纵轴:真正类率(true postive rate TPR),又被叫作灵敏度。

混淆矩阵:

AUC指的是ROC曲线下的面积大小,可以量化地反映出基于ROC曲线衡量出的模型性能,一般取值就是0.5~1,越高越好。

? 余弦距离应用

余弦定理我们在高中的时候就学过了,一般都是用来计算角度的,而在机器学习问题中,也是一样来计算夹角,因为通常我们的特征都会表示为向量形式,那分析两个特征相似度的时候,都会用余弦相似度来表示:

余弦相似度,其取值范围为[-1, 1],当两个相同方向的向量比较,其取值为1,相反方向的取值为-1。

余弦距离,则是1-余弦相似度,所以其取值范围为[0, 2],相同向量之间的余弦距离为0。

? A/B Test的必要

可能有些同学不太了解A/B Test,其实就是验证新产品是否有效,而设置了实验组和对照组,而进行A/B Test的原因有几点:

  • 线下评估无法完全消除模型过拟合的情况,因此需要实际线上的陪跑结果来评估模型;
  • 线下评估往往不会考虑线上的延迟、数据丢失、标签数据缺失、默认值丢失等情况;
  • 线上系统的某些商业指标在离线环境中无法评估计算,比如用户点击率、PV的优化提升、留存市场改善等。

那么如何进行线上的A/B Test呢?一般的方法就是进行用户分桶,将用户分成实验组和对照组,对实验组的用户使用新模型,对照组的用户使用旧模型,而且,要注意分组样本的独立性和无偏性。

? 模型评估的方法

机器学习中,我们通常会把数据划分成训练和测试集,而这个过程有着各种不同的抽样方法和验证方法。

  • Holdout检验 其实就是我们常用的37分,把数据集随机分成3:7,分别用于训练模型和验证模型,但这存在明显问题,那就是随机性比较大,你换一个随机种子,可能会得到完全不一样的结论。
  • 交叉检验 1)k-fold交叉验证:将全部样本划分为k个大小相等的样本子集,依次遍历所有子集,每次把当前子集作为验证集,其余的作为训练集,最后将k次评估结果求一个平均值(k一般取5~10次)。 2)留一验证:每次留下1个样本作为验证集,其余所有样本作为训练集。样本总量为n,依次对n个样本进行遍历,进行n次验证,再将评估指标求均值得到最终评估指标。
  • 自助法 当样本比较少的时候,使用自助法会比较好,它是基于自动采样法的检验方法,对于总数为m的样本集合,进行m次有放回的随机抽样,得到大小为n的训练集,n次采样过程中,有的样本会被抽过很多次,有的样本会没被抽到过,我们把没有被抽到过的作为验证集即可。一般当n趋于很大的时候,大约有36.8%的样本从未被抽过。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAMshare 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ? Index
  • ? 评估指标的局限
  • ? ROC曲线与AUC
  • ? 余弦距离应用
  • ? A/B Test的必要
  • ? 模型评估的方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档