私が頻繁にパターンマイニング(FPM)の問題を解決するアルゴリズムの開発を知っている限り、改善の道にはいくつかの主要なチェックポイントがあります。まず、Aprioriアルゴリズムは1993年にAgrawalらによって提案されました。、問題の形式化とともに。アルゴリズムは、ラティスを使用してデータを維持することにより、セット(パワーセット)からいくつかのセットを取り除くことができました2^n - 1
。このアプローチの欠点は、拡張された各セットの頻度を計算するためにデータベースを再度読み取る必要があったことです。
その後、1997年にZakiら。はアルゴリズムEclatを提案しました。これは、各セットの結果の周波数をラティス内に挿入しました。これは、ラティスの各ノードで、ルートから参照先ノードへのアイテムを持つトランザクションIDのセットを追加することで行われました。主な貢献は、各セットの頻度を知るためにデータセット全体を再度読み取る必要がないことですが、そのようなデータ構造の構築を維持するために必要なメモリは、データセット自体のサイズを超える可能性があります。
2000年に、ハン等。は、FPTreeという名前のプレフィックスツリーデータ構造とともに、FPGrowthという名前のアルゴリズムを提案しました。このアルゴリズムは、重要なデータ圧縮を提供すると同時に、頻繁なアイテムセットのみが生成されることを許可しました(候補アイテムセットの生成なし)。これは主に、各トランザクションのアイテムを降順でソートすることによって行われたため、最も頻度の高いアイテムは、ツリーデータ構造内の繰り返しが最も少ないアイテムです。頻度はツリーを詳しく調べている間だけ下降するので、アルゴリズムは頻度の低いアイテムセットを取り除くことができます。
編集:
私の知る限り、これは最先端のアルゴリズムと考えることができますが、他の提案されたソリューションについて知りたいのですが。FPMの他のどのようなアルゴリズムが「最先端」と見なされていますか?そのようなアルゴリズムの直感 / 主な貢献は何ですか?
頻繁なパターンマイニングでは、FPGrowthアルゴリズムはまだ「最先端」と見なされていますか?そうでない場合、どのアルゴリズムが大規模なデータセットから頻繁なアイテムセットをより効率的に抽出する可能性がありますか?