如何「科学的比较」机器学习模型表现?

最近在赶paper,码字的时间不多,也刚好借着这个机会践行“写少、少写,写好”。今天谈谈如何对比多个机器学习算法的性能,阅读本文需要基本的统计检验知识,比如明白假设检验中 P<0.05通常说明了统计学显著性差异。

0. 背景

对比多个机器学习的算法性能是研究中很重要的一步,举几个常见的场景:

  • 假设你开发了一个新的算法,那么希望在多个数据集上证明你的新算法是 state of the art(最牛逼的)。
  • 假设你找到了一个新的数据集,你想研究到底什么算法在这个数据集上表现最优。
  • 结合上面两个场景,你想知道你的新算法在什么数据集上表现最优。

1. 常见做法与风险

搞机器学习不懂数学和统计,估计大家或多或少都被这么吐槽过。其实从某个角度看这个观点也有道理,因为在很长的一段时间里机器学习算法的对比都是简单的走以下几个步骤:

  • 直接对比误分率(misclassification rate),也就是准确度。
  • 再好一点的可能对比 精确率(precision)和召回率(recall),或者算一下F1。
  • 在多做一点的可能会比较一下 ROC 曲线下的面积,也就是ROC_AUC。
  • 再严谨的可能会尝试做一下交叉验证(cross-validation)之后再对比。

大部分对比做到这个程度,其实也仁至义尽了,但这种方法有什么问题吗?

  • 无法得到可靠的对比结果,如果算法A在3个数据集上比较好,而B在5个数据集上表现好,如何证明谁更好?
  • 如果对比多个算法,两两对比效率低,准确度低,而且可能造成严重的统计偏差。试问,如果算法A比B好,B比C好,C比D好,那么是否A比D好?这种推论仅当其中每个过程都不可逆或者非常明显才可得。
  • 如果有多个数据集(>2)和多个算法(>2),对比不直观且不准确。

10种算法在4个数据集上的ACC/F1/ROC

以上图为例,我画出了10种算法在4个数据集上的表现,这是很难一眼看出那个算法更好的。而且往往没有那个算法可以包打天下。

1. 一些研究者的尝试

首先令人感到诧异的是,直到今天大部分的机器学习算法论文和书籍都还在用上面的简单做法。虽然往往能得到有效的结论,但一部分研究得到的结论其实站不住脚。

当然,机器学习研究者也进行了一系列尝试,比如下面的几篇论文:

  • Statistical Comparisons of Classifiers over Multiple Data Sets
  • An Extension on "Statistical Comparisons of Classifiers over Multiple Data Sets" for all Pairwise Comparisons
  • Time for a change: a tutorial for comparing multiple classifiers through Bayesian analysis (未发表)

大部分方法说白了,就是从统计学概念上延伸出去。统计学上,如果你想对比两个样本组是否来自于同一个分布,可以尝试做t-test,如果你想分析两个及以上样本之间的显著性检验,可以做方差分析(ANOVA),也叫做F-test。多样本之间的差异分析一般的步骤如下:

  • 使用某种显著性建议测试(如ANOVA)来分析你的多组样本之间是否存在明显不同。
  • 如果存在,那么使用post-hoc来确定到底是哪些样本间存在差异。
  • 确定了不同的两组后,在进行配对比较(pairwise analysis),分析的方法依赖于前面步骤中的做法。

举个简单的例子,A, B, C三人记录每天吃的鸡蛋数,连续记录十天,那么得到一个[3,10]的数据。此时你需要先使用某种显著性检测方法来分析ABC三人在每天吃蛋数上是否有明显的不同如果没有,那么分析可以到此为止。如果有,那么需要在用post-hoc手段来分析到底是A和B不同,还是B和C不同。找到不同的两个人以后,可以在分析A和B到底不同在哪里(如ANOVA可以对 进行分析)。

2. 不成熟的小建议

这个流程说来简单,但其实往往有不少麻烦的地方:

  • 进行多样本间的显著性测试往往要求:
    • 样本残差(residual)各自符合正态分布(normal distribution)。* 其实这个违反这个原则有时候也不碍事。
    • 数据独立性假设。
    • 样本之间的大小一致,比如很多算法无法检验A吃蛋10天的数据,B吃蛋3天的数据,和C吃蛋6天的数据。
  • 很多多样本的对比测试没有合适的Python实现,如果想要使用需要使用R或者SPSS。
  • 结果分析中存在各种各样的陷阱,比如 P = 0.051是否说明可以拒绝假设。

为了回避某些检验的强假设和要求,如等尺寸样本,我建议大家可以用下面这个框架来对比多个模型:

  1. 使用Kruskal–Wallis测试来确定你的多样本之间是否存在显著差异。若p>0.05,进行下一步。* 如果 p 接近0.05,也可以进行以下步骤。
  2. 使用Dunn's Test来确定哪些样本间存在差异,结果是一个n*n的矩阵,可以通过热力图可视化(如下图)。
  3. 针对两个样本,可以用Mann–Whitney U test 进行检测差异性。更直观的对比两个样本,也可以对中值(median)进行对比分析,因为这些算法都是建议在排序上的(Rank)。

这个框架的好处是这些统计学检测手段都是非参数的(non-parametric),假设相对较少且可以处理不同尺寸的样本对比。更重要的是,Python中的Scipy有 Kruskal–Wallis和Mann–Whitney U test的实现,而Dunn's test有开源工具包(Python Package Index)开发者是一位毛子大哥。使用这位大哥的工具包,还可以轻松的将Dunn's Test的结果可视化,下面是我的一个小例子(这个配色是我改的,毛子大哥用了红配绿实在难看),下图中可以发现随机森林(RF)和朴素贝叶斯之间结果有明显不同:

3. 写在最后

总体来说,更严谨的机器学习算法评估还是要学习统计的那一套,而不能仅仅对比一下准确率就认为真的有了效果提升。但这种现象的发生不是偶然,可以归结于:

  • 机器学习很难在大量数据上进行对比,因此样本数量有限导致统计学意义打了折扣。
  • 比较严谨的对比会导致很多水文发不出去,都是出来混口饭都互相理解。
  • 可能,大概,或许...只是因为做机器学习的人真的不太懂统计吧。

玩笑归玩笑,文中介绍的方法只是抛砖引玉,也并不适用于每个场景,但可以在你不知道如何对比的时候破局。建议在使用以上检验测试时先了解一下基本的应用场景和假设,并了解什么时候可以reject null hypothesis。文中的例子并不严谨,如果paper一切顺利的话,也会给大家附上链接和代码作为一个实例参考。

END.

来源:https://zhuanlan.zhihu.com/p/31203973

原文发布于微信公众号 - PPV课数据科学社区(ppvke123)

原文发表时间:2017-12-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯技术工程官方号的专栏

图像内容的「深度」理解及其应用

本文作者:朱晓龙博士,2015 年毕业于香港大学,主攻计算机视觉和机器学习方向,涉及物体检测,位姿估计,人脸特征点定位,3D 视觉等课题。本科期间参与北京大学智...

4115
来自专栏人工智能头条

基于卷积神经网络(CNN)的中文垃圾邮件检测

1242
来自专栏华章科技

2017年深度学习必读31篇论文

一如既往,首先,标准免责声明适用,因为今年仅与GAN有关的论文就超过1660篇。我肯定会有疏漏,试图缩减到每两周一篇论文,包含了Imperial Deep Le...

1003
来自专栏阮一峰的网络日志

神奇的图像处理算法

几周前,我介绍了相似图片搜索。 这是利用数学算法,进行高难度图像处理的一个例子。事实上,图像处理的数学算法,已经发展到令人叹为观止的地步。 Scriptol列出...

4628
来自专栏生信宝典

贝叶斯学习记录

这篇文章用于记录学习贝叶斯定理及其应用过程中的记录,希望由浅及深的提供一份自我学习教程。 引子 概率的定义:概率是一个0-1之间的数,代表了我们对某个事实或预测...

2286
来自专栏量子位

传送门!ICML2017(国际机器学习大会)最佳论文(附下载)

允中 整理编译 量子位 报道 | 公众号 QbitAI ? 8月6日,第34届国际机器学习大会(ICML 2017)已在悉尼拉开帷幕。 其中最受关注的论文奖项已...

41414
来自专栏智能算法

深度学习漫游指南:强化学习概览

本文是NVIDIA博客上Tim Dettmers所写的《Deep Learning in a Nutshell》系列文章的第四篇。据介绍,该系列文章的目的是「提...

3385
来自专栏积累沉淀

数据挖掘算法之深入朴素贝叶斯分类

写在前面的话:   我现在大四,毕业设计是做一个基于大数据的用户画像研究分析。所以开始学习数据挖掘的相关技术。这是我学习的一个新技术领域,学习难度比我以往学过的...

3598
来自专栏目标检测和深度学习

使用 HyperTools 的正确姿势! | Kaggle 实战教程

1254
来自专栏思影科技

渐进型多发硬化症(PPMS)相关的rich-club失连

来自INIMS的Jan-Patrick Stellmann等人在neurology期刊上发表了一篇关于MS的结构脑网络研究,研究主要探寻了病人结构脑网络连接的组...

3507

扫码关注云+社区

领取腾讯云代金券