如何计算误差最小化数值阵列的近似值

时间:2016-09-20 06:50:35

标签: algorithm optimization statistics

给定一个数值数组(整数或浮点数,两者都很好)和一个正整数N,我想返回一个N值的数组,这样,如果原始数组中的每个值都被其最接近的匹配替换返回的数组,平方误差(即(original_value - approximation)^ 2)被最小化。基本上,要找到一个最接近输入数组的较小数组。

N = 1的情况是微不足道的,一些基本代数可以很容易地显示答案是值的平均值。

还可以表明,在对输入数组进行排序后,每个"返回" value必须对应于输入数组中的一组连续值,其值为它们的平均值。因此,对于N = 2,在最坏的情况下,我们可以从一个具有sorted_input [0]的集合开始,另一个集合与所有其他值一起,并逐个将项目顺序地移动到第一个集合,返回任何组合最小化O(n)中的错误(忽略分拣成本)

然而,在N = 3及以后,它不清楚如何继续。天真地尝试所有组合变成O(n ^(N-1)),虽然它感觉它们应该存在,但我无法证明任何优化都是安全的" (即不会陷入一些给出非最佳结果的局部最小值)

很可能是问题实际上是NP难的(我甚至无法计算如何在多项式时间内验证解决方案!),但感觉就像那种问题数学欺骗可以带来巨大的加速,所以我想我会问任何想法。请注意,我正在寻找最佳解决方案,而不仅仅是一个不错的近似值。

1 个答案:

答案 0 :(得分:1)

Cluster analysis是您问题的良好起点。简而言之,有许多算法,但它们大多是特定于问题的。