algorithm - 如何计算数值数组的误差最小化近似值

标签 algorithm optimization statistics

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

N = 1 的情况很简单,用一些基本的代数可以很容易地证明答案是这些值的平均值。

还可以表明,在对输入数组进行排序后,每个“返回”值必须对应于输入数组中的一组顺序值,其值是它们的平均值。所以对于 N = 2,在最坏的情况下,我们可以只从一个带有 sorted_input[0] 的集合开始,另一个带有所有其他值的集合,然后一个接一个地依次将项目移动到第一组,返回任何组合以最小化 O(n) 中的错误(忽略排序成本)

但是,在 N = 3 及以上时,尚不清楚如何进行。天真地尝试所有组合变成了 O(n^(N-1)),虽然感觉它们应该存在,但我无法证明任何优化都是“安全的”(即不会陷入某个局部最小值非最佳结果)

很可能这个问题实际上是 NP 难的(我什至不知道如何在多项式时间内验证一个解决方案!),但它感觉像是那种需要一些数学技巧的问题可以导致巨大的加速,所以我想我会询问任何想法。请注意,我正在寻找最佳解决方案,而不仅仅是一个合适的近似值。

最佳答案

Cluster analysis是你的问题的一个很好的起点。简而言之,有很多算法,但它们大多是针对特定问题的。

关于algorithm - 如何计算数值数组的误差最小化近似值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587459/

相关文章:

algorithm - 为什么路径压缩不会改变 UnionFind 中的排名?

python - 优化 Python 中 numpy 数组中元素的索引和检索?

statistics - 盲目地对传入数据中的新趋势进行分类

c# - 简单查询 : Does SortedSet<T> have an easy way of finding the median element?

algorithm - Akima插值算法

c++ - 如何找出我的 DLL 增长如此之多的原因

r - 在 R 中同时解决单变量优化问题

R 基础知识 : working with multiple variables at once and their output

python - numpy.exp() 到底是做什么的?

algorithm - 从总和等于 S 的范围中选择 K 个唯一随机数