0

让我们有很多看起来像的数据

chain of digits  time
23 67 34 23 54 | 12:34
23 54          | 12:42
78 96 23       | 12:46
56 93 23 54    | 12:48

我需要找到数字链趋势(增长、下降、稳定)。在我的示例中,它可能是 23 54 或 23。我还想在趋势之间找到不同的相关性。数据非常大。它可能是数十亿行。你能推荐任何书籍文章或算法吗?请注意,我只需要有关此类数据类型的趋势和相关性的信息。我不需要基本的数据挖掘书籍。

4

1 回答 1

0

这是算法的要点。它当然没有被淘汰或测试,它可能不完整。我只是把它扔在这里作为一个可能的起点。

似乎最具挑战性的问题是在数十亿行上运行算法所需的时间,其次可能是内存限制。

我也相信解决这个问题所涉及的基本任务在于“将一组数字与另一组数字进行比较”以定位共享集的单一操作。

因此,我是否可以建议以下(粗略)方法,以同时处理时间内存

(1) Consolidate multiple sets into a single, larger set.

即,取 100 个连续的集合(在您的示例中,23, 67, 34, 23, 5423, 5478, 96, 23和以下 97 个集合),然后简单地将它们合并为一个集合(忽略重复项)。

(2) Give each *consolidated* set from (1) a label (or index),
and then map this set (by its label) to the original sets that compose it.

这样,您将能够检索(查找)原始的单个集合23, 67, 34, 23, 54等。

(3) The data is now denormalized - there are a much smaller number of sets, and each set is much larger.

现在,算法进入了一个新阶段。

(4) Develop an algorithm to look for matching sequences between any two of these larger sets.

会有很多误报;但是,希望您的数据的性质是误报不会“破坏”通过这种方法获得的效率。

我没有提供算法来执行 2 个单独的集合之间的匹配;我假设您可以自己想出一个(对两组进行排序等)。

(5) For every possible matching sequence found in (4), iterate through the individual sets that compose
the two larger sets being compared, weeding out false positives.

我怀疑上述步骤可以显着优化,但这是基本思想。

此时,您将拥有组成被比较的两个较大集合的所有原始集合之间的所有匹配序列。

(6) Execute steps (4) and (5) for every pair of large sets constructed in (2).

现在,您将拥有所有匹配的序列 - 带有重复项。

(7) Remove duplicates from the set of matching sequences.

只是一个想法。

于 2012-05-05T18:19:52.767 回答