确定两个错误值之间的差异是否显著

8
我正在评估多种算法,其任务是预测事件发生的概率。我正在使用大型数据集测试算法。我使用“均方根误差”来衡量它们的有效性,该值是(错误之和的平方)的平方根。误差是预测概率(介于0和1之间的浮点值)与实际结果(0.0或1.0)之间的差异。因此,我知道RMSE以及算法被测试的样本数量。
问题在于,有时RMSE值非常接近,我需要一种方法来确定它们之间的差异是否只是偶然,还是它代表了性能上的实际差异。
理想情况下,对于给定的两个RMSE值,我想知道其中一个真正比另一个更好的概率,以便可以将此概率用作显著性阈值。
3个回答

11
MSE是平均值,因此中心极限定理适用。因此测试两个MSE是否相同与测试两个均值是否相等相同。与比较两个均值的标准测试相比,一个困难在于样本相关 - 两者都来自相同的事件。但MSE的差异与差异的平方误差的均值相同(均值是线性的)。这表明计算单样本t检验如下:
1. 对于每个x,为过程1和2计算误差e。 2. 计算平方误差的差异(e2^2-e1^2)。 3. 计算差异的平均值。 4. 计算差异的标准偏差。 5. 将t统计量计算为平均值/(sd / sqrt(n))。 6. 将您的t统计量与临界值进行比较或计算p值。例如,如果| t |> 1.96,则以95%置信水平拒绝相等。
RMSE是MSE的单调变换,因此此测试不应给出实质上不同的结果。但要小心不要假设MRSE是RMSE。
更大的问题应该是过度拟合。确保使用未用于估计模型的数据计算所有MSE统计信息。

将平方误差的差异相加起来有点棘手,因为我需要同时测试超过两个算法。是否有一种方法可以通过输入测试次数(n)和两个RMSE值来完成这项任务? - sanity
首先进行差分的优点是避免了计算协方差项的需要。问题在于cov(e1,e2)!=0,因此标准t检验无法使用。如果你只有两个RMSE值,你不知道协方差,所以你不能轻松地计算任何测试统计量。如果您可以多次运行这些程序,您可能需要考虑引导。这将使您能够以统计上可靠但简单的方式轻松使用任何统计量。 - Tristan
“引导”是什么意思?我想我没有很好地陈述问题。基本上,我可能有数百个算法,我需要确定最佳算法,所以在运行测试并记录结果之前,我不知道哪些算法必须相互比较 :-/ - sanity
如果您对任何统计量(例如方差)的属性(例如RMSE差异)感兴趣,可以多次重新采样数据,并为每个样本计算统计量。这些统计量的分布近似于您统计量的抽样分布。这是一种非常强大且简单的频率派推断思想:http://bit.ly/3AVsZR - Tristan

4
您正在进入一个广阔而又有争议的领域,不仅涉及计算,还涉及哲学。在Bayes派和Frequentist派之间,显著性检验和模型选择是极具争议的话题。Triston关于将数据集拆分为训练集和验证集的评论可能不会得到Bayes派的认同。
我建议RMSE不是概率的适当评分方式。如果样本是独立的,则适当的评分方式是“指定实际结果的概率的对数之和”。(如果它们不是独立的,则会出现问题。)我所描述的是对“插件”模型进行评分。适当的Bayesian建模需要对模型参数进行积分,这在计算上非常困难。调节插件模型的Bayesian方法是为不太可能(大)的模型参数添加惩罚项。这被称为“权重衰减”。
我开始阅读Christopher Bishop的《模式识别的神经网络》和Gill等人的《实用优化》,并使用它们编写了非常有效的软件。

@Tristan。明白了。但是MSE对于概率输出合理吗?是否有类似于对数误差分数的学生T分布? - Jive Dadson
他说:“错误是预测概率(0到1之间的浮点值)和实际结果(0.0或1.0)之间的差异。”问题在于,对于概率来说,这不是一个合理的错误得分。(结果是是/否事件,而不是具有高斯噪声的测量值。)根据所有通常的假设,误差是-sum log(Pi),其中Pi是分配给实际发生事件的概率。我认为这并不无关紧要。 - Jive Dadson
只是想插一句,关于最佳指标的争议。实际应用是我想根据算法认为广告被点击的概率来选择要展示哪个广告。因此,好处与算法 A 选择的最佳广告与算法 B 选择的最佳广告之间的差异成比例。我考虑过的一个指标是,对于每个算法预测的概率前10%的广告进行计数,然后计算这个百分位数中有多少广告被点击。在其前10%预测概率中获得最多点击次数的那个广告胜出。 - sanity
我应该补充说明广告应用程序只是我正在开发的多个应用程序之一,最终我意识到我需要提供可插拔的评分算法(并且已经有了基础设施)。 - sanity
但是平方误差是布里尔分数,它是一种适当的评分规则。 - Alex
显示剩余10条评论

0

我在这里回答评论中的问题。这个主题太大了,无法在评论中处理。

简化版如下:

我们谈论的分数类型是用来衡量概率的。(是否适用于你所做的事情是另一个问题。)如果你假设样本是独立的,那么你可以通过简单地将所有概率相乘来得到“总”概率。但通常会得到荒谬的小数字,因此等效地,你可以将概率的对数相加。越大越好。零是完美的。

普遍存在的平方误差-x^2,其中x是模型的误差,来自于(经常是不合理的)假设训练数据包含被“高斯噪声”污染的观测值(测量)。如果你在维基百科或其他地方查看高斯(也称为正态)分布的定义,你会发现它包含e^(-x^2)这个术语。取其自然对数,就得到了-x^2。但是你的模型并不会为测量产生最可能的“预噪声”值。它们直接产生概率。因此,要做的就是简单地将分配给观察事件的概率的对数相加。这些观察结果被假定为无噪声。如果训练数据说它发生了,那么它就发生了。

您的原始问题仍未得到回答。如何判断两个模型是否存在“显著差异”?这是一个模糊而困难的问题。它是许多争论甚至情感和敌意的主题。而且,这实际上也不是您想要回答的问题。您想知道的是哪个模型在考虑所有因素(包括每个软件包的成本等)后能给您带来最好的预期利润。

我很快就要结束了。这不是建模和概率课程的地方,而我也不是合格的教授。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接