Performance 预测算法性能,O-表示法

Performance 预测算法性能,O-表示法,performance,math,cluster-analysis,k-means,Performance,Math,Cluster Analysis,K Means,我正在对一组文本字段应用基于k-means的聚类。 计算完成的性能如下所示: 1.000 records ~ 4m:30s 30.000 records ~ 15m:30s 100.000 records ~ 1h37m:30s 如何估计完成n记录计算所需的时间,例如500.000。 有人能帮我举一个实际操作的例子吗,可能是用O符号,我不明白它是怎么工作的,很难 多谢各位 当您对算法的行为有一些理论见解时,big-O表示法非常有用。例如,您知道,如果使用二分搜

我正在对一组文本字段应用基于k-means的聚类。 计算完成的性能如下所示:

     1.000 records ~    4m:30s
    30.000 records ~   15m:30s
   100.000 records ~ 1h37m:30s
如何估计完成n记录计算所需的时间,例如500.000。 有人能帮我举一个实际操作的例子吗,可能是用O符号,我不明白它是怎么工作的,很难


多谢各位

当您对算法的行为有一些理论见解时,big-O表示法非常有用。例如,您知道,如果使用二分搜索,则会对
O(Log(N))
进行比较,以在排序列表中查找项目,而对线性搜索,则会对
O(N)
进行比较(这是平均值,因为有时线性搜索可以立即查找)。此外,big-O是一种描述增长率的上限,但不会在几秒钟内给出绝对数字,它更多的是定性而不是定量

在你的例子中,你更倾向于实证,你应该选择一些未知参数的数值模型,并通过回归找到它们。首先要尝试的是幂律:
T(n)=a.n^b
,或者用双对数坐标表示的直线
Log(T(n))=c。日志(n)+d
。因此,建议在双对数图上观察您的点(Excel可以帮助您)

还有两点意见:

  • 三点对于观察真实趋势来说实在是太少了,任何模型都同样适合

  • 更重要的是,您必须测量每个尺寸的不同情况下运行时间的分散度;因为如果离散度很大,你基于几个值的预测就会不稳定。如果您想进行外推而不是内插(我的意思是猜测比您实际尝试的更大的值),那么这个要求就更高了

在您的特殊情况下,我观察到这三个点没有很好地对齐,并且与电源模型不兼容。你可以考虑抛物线模型,它可以很好地工作,但这是作弊:抛物线模型总是非常适合三点。


结论非常清楚:你需要更多的分数。

非常感谢你的详细回答。你能不能也提出一些关于如何应用模型的文献或其他文件,哪种场景等等?我想在这个领域积累更多的知识。你可以从。常识也是有帮助的。k-均值聚类的理论最优复杂性的形式是
O(n^a Log^b(n))
[。你也可以尝试将其作为一个经验模型(即使没有严格性,而且你没有足够的分数)。