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, 54は 、23, 54、 、および次の 97 個のセット) を取り、単純にそれらを 178, 96, 23のセットにマージします(重複を無視します)。

(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.

上記のステップは大幅に最適化できると思いますが、これが基本的な考え方です。

この時点で、比較対象の 2 つの大きなセットを構成するすべての元のセット間で一致するすべてのシーケンスが得られます。

(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 に答える