【问题标题】:Best way to calculate accuracy and display meaningful results计算准确性和显示有意义结果的最佳方法
【发布时间】:2010-01-15 09:37:17
【问题描述】:

我当前的方法允许我确定最准确的数组,但我无法找到显示信息结果的好方法。

这是我的情况……

我将 X 个整数数组与 静态 整数数组进行比较。对于数组中的每个位置,我通过与静态数组中的等效位置进行比较来计算位置的准确性结果。在确定阵列的最后一个位置精度结果后,我存储该阵列的所有精度结果的总和,以供稍后比较

一旦保存了每个数组的所有准确度结果的总和,它们就会相互比较。 总和最小的数组被认为是最准确的

伪代码……

foreach (ComparableArray as SingleArray) {
    for (i = 0; i < count(SingleArray); i++) {
        AccuracyResults[SingleArray] += |StaticArray[i] - SingleArray[i]| / CONSTANT;
    }   
}   
BestArray = AscendingSort(AccuracyResults)[0];

准确度是通过将 SingleArray 值与 StaticArray 的差值的绝对值除以某个常数来确定的。如果准确度结果为,则认为结果准确。如果 result > 1,那么它是不准确的,results = 0 是完美的。

这是一个场景......为简单起见,让我们使用两个数组

S = [ 56, 53, 50, 64 ]

A = [ 56, 54, 52, 64 ]

B = [ 54, 52, 51, 63 ]

循环遍历以 A 开头的每个数组。

比较 A(56) 和 S(56) 的位置 [1] 的准确性。 确定准确性(我将使用两个作为我的常数) |56-56|=0, 0 / 2 = 0;完美的准确性

继续比较每个位置并计算精度 |53-54|=1, 1 / 2 = 0.5;准确,因为

|50-52|=2, 2 / 2 = 1;准确

|64-64| = 0;完美

现在计算数组 A 的所有准确结果的总和 0 + 0.5 + 1 + 0 = 1.5

如果我们对数组 B 执行相同的操作,最终结果将是 1 + 0.5 + 0.5 + 0.5 = 2.5

现在,如果我们比较数组 A 和 B,我们可以看到数组 A 比 B 更准确,因为 总和更低

问题是 1.5 和 2.5 在尝试显示 A 比 B 更准确时意义不大。

显示这些结果的最佳方法是什么? 我考虑过显示百分比……比如 A 比 B 好 17%。或者 BestArray 比平均值好 6%。

我将如何计算这些结果?

您在我计算准确性的方式中发现任何逻辑问题或知道更好的方法吗?

感谢您提供的任何见解!

【问题讨论】:

    标签: math logic algebra


    【解决方案1】:

    我倾向于同意@Martin 的观点,即使用数值来量化定性测量之间的差异有点不靠谱。然而,人们一直都在这样做,所以如果你想继续这样做,那就去吧!

    现在,我真正想写的是,您的伪代码根本不是非常伪代码。这是我要编写的伪代码:

    ManhattanDistance[{56, 53, 50, 64},{56, 54, 52, 64}]
    

    指定与您的版本相同的计算。现在,您可能会也可能不会认为这是一个有效的 Mathematica 语句,但这不是重点。关键是您已经找到了用于测量两个向量之间的 距离 的无数函数之一。其他距离度量包括欧几里得距离和棋盘距离。

    您还可以使用多种向量规范中的任何一种来测量向量之间的距离。例如,Mathematica 给出了计算的结果 sqrt(5):

    Norm[S - A]
    

    因此,如果您确实想沉迷于一些狡猾的伪统计,请在 Google 上搜索向量距离和范数的一些定义。我猜你也会找到代码或者至少是命令式算法。

    问候

    标记

    PS 不要告诉任何人我在伪科学方面帮助过你 :-)

    【讨论】:

    • 哇,这是很棒的输入。这将带来很好的学习体验。我决定听取你们的建议并考虑一个更优雅的解决方案。在这种情况下,谷歌和研究论文。所有元素都将处理与天气相关的变量。上面的例子是温度。
    【解决方案2】:

    相对百分比不是一个好主意,因为人们很难判断这在实践中意味着什么 - 如需更多解释,请参阅 Bad Science 一书。

    只需按从最准确到最不准确的顺序显示总和并解释评分系统。我不认为将它们转换为任何类型的百分比是有帮助的,但最好给出一些指导性数字或条带(例如通过为文本或背景着色)来说明准确度的好、中等和差。

    最后,您的问题非常具体到您的编程程序,并且不太可能像它的措辞那样对许多其他人有用。在这里,我们更喜欢问题是具体的技术主题,但通常适用于其他问题,所以如果你下次更笼统地表达你的问题,它会提供更好的资源。

    【讨论】:

    • @Martin 感谢您的洞察力。实际上,根据其准确性为结果实施了颜色编码系统。显示结果的问题是总和可能会变得很大且范围很广,并且可能等同于显示百分比。我想认为有更好的方法。感谢您提供有关这本书的信息,我也会浏览该网站。
    【解决方案3】:

    您的“位置精度”只是一个错误,如果正态分布(正如人们所期望的那样)可以用高斯分布建模。如果是这样,由于高斯随机变量的总和本身就是高斯的,因此您的“所有准确度总和”数也是高斯分布的随机变量。您可以计算这些误差和的均值和方差,并使用高斯 PDF(概率分布函数)对您的系统进行建模,并使用它来回答诸如“最后一个笨重的向量应该是鲜红色,因为它的误差总和大于 95%所有这些向量”。或者“哇,最后一个向量是 A+,因为它的误差小于所有其他此类向量的 1%”。

    这个wiki 帖子也可能有帮助。

    保罗

    【讨论】:

      【解决方案4】:

      均方误差常用于工程界,用于量化解与解的估计之间的误差。

      为避免值差异较大的问题,请考虑使用 log(error) ...当然,这有它自己的问题,log(0) 为 -infinity 并且 if (0

      【讨论】:

        猜你喜欢
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        相关资源
        最近更新 更多