algorithm - 改进用于计算相关性的 O(m+n) 算法?

标签 algorithm time-series

我有 2 个包含排序时间戳的数据集

我想计算它们的相关程度。

如果 2 个时间戳彼此出现在某个阈值内,我们认为它们匹配。

我有一个 O(M+N) 算法,我认为它可以正常工作,但我想知道是否有更好的算法?

本质上,我遍历两个时间戳数组,计算每个时间戳之间的绝对时间差,如果它比阈值短,则递增一个计数器。
我从两个当前时间戳中最早的那个数组中选择下一个时间戳,然后重复。
最后,相关性是找到的匹配项数除以数据集大小。

这是我目前所拥有的伪代码:

matches=0
i=0, j=0

while i < timestamps_1.size and j < timestamps_2.size
    diff = abs(timestamps_1[i] - timestamps_2[j])
    if diff < threshold
        matches += 1
    if timestamps_1[i] < timestamps_2[j]
        i += 1
    else
        j += 1
correlation = matches / timestamps_2.size            

是否有更好的算法来实现这一点?

最佳答案

没有办法解决这个问题,在最坏的情况下,涉及访问每个数组的每个成员。在最好的情况下,您可能只能访问一个数组的每个成员,以及另一个数组的一个成员。订单基于最坏的情况;因此 O(n+m)

关于algorithm - 改进用于计算相关性的 O(m+n) 算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56918163/

相关文章:

python - 使用动态规划查找 A 和 B 的最短交错字符串

c++ - 如何在 M 个 bool 值数组中分配 N 个规则间隔的 bool 值?

python - LSTM 可以处理极其密集的时间序列数据吗?

python - 获取 Pandas 中 3 个月的平滑移动组的总和数据

algorithm - UTF-8 使用的前导位计数编码技术的名称是什么?

algorithm - 排序算法的上下界

algorithm - 如何在 Python 中扩展线段?

r - 在使用包预测时取消记录时间序列

r - R 中的累积和、移动平均数和 SQL "group by"等价物

python , Pandas 。从累积值转换为增量