机器学习中的用于声称性能的指标标准不多被讨论。因为在这个问题上彷佛没有一个明确的、普遍的共识,所以我认为提供我一直在倡导并尽量遵循的标准可能会颇有趣。它源于这个简单的前提,这是个人科学老师从中学开始就灌输给个人:bootstrap
科学报告的通常规则是,您写下的每一个数字都应为“ 真”的,由于“ 真”的定义是什么。机器学习
让咱们来研究一下这对测试性能等统计量意味着什么。当你在科学出版物中写下如下陈述时:ide
测试准确率为52.34%。你所表达的是,据你所知,你的模型在从测试分布中提取的未见数据上成功的几率在0.52335和0.52345之间。性能
这是一个很是强有力的声明。学习
考虑你的测试集是从正确的测试分布中抽取的N个样本IID组成的。成功率能够表示为一个二项式变量,其平均几率p由样本平均值估计:p ≅ s / N测试
其标准差为:σ=√p(1-p)。图片
其中当p=0.5时,其上限为0.5。部署
在正态近似下,估计量的标准差为:δ=σ/√N。数学
这个精度估计上的偏差δ 是这样的,在最坏的状况下,有约50%的精度:it
机器学习中的数学意义
换句话说,为了保证上述报告中例子52.34%的准确率,你的测试集的大小至少应该在30M样本的数量级上!这种粗略的分析很容易转化为除了准确率之外的任何可计算的数量,尽管不能转化为像似然率或困惑度这样的连续数字。
下面是一些常见的机器学习数据集的说明。
在ImageNet上能够合理地报告多少位数的精度?准确率在80%左右,测试集是15万张图片:
√(0.8*0.2/150000) = 0.103%
这意味着你几乎能够报告XX.X%的数字,而实际上每一个人都是这样作的。
MNIST呢,准确率在99%:
√(0.99*0.01/10000) = 0.099%
噗,也报个XX.X%就OK了!
然而,最值得注意的是,在大多数状况下,性能数据并非单独呈现的,而是用来比较同一测试集上的多种方法。在这种状况下,实验之间的抽样方差会被抵消,即便在样本量较小的状况下,它们之间的准确度差别也可能在统计学上很显著。估计图方差的一个简单方法是执行bootstrap重采样。更严格、一般更严格的检验包括进行配对差别检验或更广泛的方差分析。
报告超出其内在精度的数字可能很具备极大的吸引力,由于在与基线进行比较的状况下,或者当人们认为测试集是一成不变的状况下,同时也不是从测试分布中抽取的样本时,性能数字每每更加剧要。当在生产中部署模型时,这种作法会让人感到惊讶,而且固定的测试集假设忽然消失了,还有一些可有可无的改进。更广泛的是,这种作法会直接致使对测试集进行过拟合。
那么,在咱们的领域中数字为“真”意味着什么?好吧,这确实很复杂。对于工程师而言,很容易辩称不该该报告的尺寸超出公差。或者对于物理学家来讲,物理量不该超过测量偏差。对于机器学习从业者,咱们不只要应对测试集的采样不肯定性,并且还要应对独立训练运行,训练数据的不一样初始化和改组下的模型不肯定性。
按照这个标准,在机器学习中很难肯定哪些数字是 "真 "的。解决办法固然是尽量地报告其置信区间。置信区间是一种更精细的报告不肯定性的方式,能够考虑到全部随机性的来源,以及除简单方差以外的显着性检验。它们的存在也向你的读者发出信号,代表你已经考虑过你所报告的内容的意义,而不只仅是你的代码所获得的数字。用置信区间表示的数字可能会被报告得超出其名义上的精度,不过要注意的是,你如今必须考虑用多少位数来报告不肯定性,正如这篇博文所解释的那样。一路走来都是乌龟。
数字少了,杂乱无章的东西就少了,科学性就强了。
避免报告超出统计学意义的数字结果,除非你为它们提供一个明确的置信区间。这理所固然地被认为是科学上的不良行为,尤为是在没有进行配对显著性测试的状况下,用来论证一个数字比另外一个数字好的时候。仅凭这一点就常常有论文被拒绝。一个良好的习惯是对报告中带有大量数字的准确率数字始终持怀疑态度。还记得3000万、30万和30万的经验法则对最坏状况下做为“嗅觉测试”的统计显著性所需样本数量的限制吗?它会让你避免追逐统计上的“幽灵”。