頻繁なパターンマイニングでは、FPGrowthはまだ「最先端」と見なされていますか?


12

私が頻繁にパターンマイニング(FPM)の問題を解決するアルゴリズムの開発を知っている限り、改善の道にはいくつかの主要なチェックポイントがあります。まず、Aprioriアルゴリズムは1993年にAgrawalらによって提案されました、問題の形式化とともに。アルゴリズムは、ラティスを使用してデータを維持することにより、セット(パワーセット)からいくつかのセットを取り除くことができました2^n - 1。このアプローチの欠点は、拡張された各セットの頻度を計算するためにデータベースを再度読み取る必要があったことです。

その後、1997年にZakiら。はアルゴリズムEclatを提案しました。これは、各セットの結果の周波数をラティス内に挿入しました。これは、ラティスの各ノードで、ルートから参照先ノードへのアイテムを持つトランザクションIDのセットを追加することで行われました。主な貢献は、各セットの頻度を知るためにデータセット全体を再度読み取る必要がないことですが、そのようなデータ構造の構築を維持するために必要なメモリは、データセット自体のサイズを超える可能性があります。

2000年に、ハン等。は、FPTreeという名前のプレフィックスツリーデータ構造とともに、FPGrowthという名前のアルゴリズムを提案しました。このアルゴリズムは、重要なデータ圧縮を提供すると同時に、頻繁なアイテムセットのみが生成されることを許可しました(候補アイテムセットの生成なし)。これは主に、各トランザクションのアイテムを降順でソートすることによって行われたため、最も頻度の高いアイテムは、ツリーデータ構造内の繰り返しが最も少ないアイテムです。頻度はツリーを詳しく調べている間だけ下降するので、アルゴリズムは頻度の低いアイテムセットを取り除くことができます。

編集

私の知る限り、これは最先端のアルゴリズムと考えることができますが、他の提案されたソリューションについて知りたいのですが。FPMの他のどのようなアルゴリズムが「最先端」と見なされていますか?そのようなアルゴリズムの直感 / 主な貢献は何ですか?

頻繁なパターンマイニングでは、FPGrowthアルゴリズムはまだ「最先端」と見なされていますか?そうでない場合、どのアルゴリズムが大規模なデータセットから頻繁なアイテムセットをより効率的に抽出する可能性がありますか?


この投稿はよく調査され、発表されました。SEネットワークサイトに悪い質問をしますが、ディスカッションフォーラムから始めるのは素晴らしいトピックです。
エア

@AirThomas警告ありがとうございます。適切な質問をして投稿を保存しようとしました。
ルーベンス

回答:


9

最新の技術:実際に使用されているのか、理論的に取り組んでいるのか?

APRIORIは、新しい頻出アイテムセットアルゴリズムの開発を除いて、どこでも使用されます。実装は簡単で、非常に異なるドメインでの再利用も簡単です。さまざまな品質の何百ものAPRIORI実装が見つかります。そして、実際にはアプリオリを誤解するのは簡単です。

FPgrowthは実装がはるかに困難ですが、はるかに興味深いものです。したがって、学術的な観点から、誰もがFPgrowthを改善しようとします。APRIORIに基づいた仕事を受け入れることは、今では非常に難しいでしょう。

あなたが良い実装をしているなら、すべてのアルゴリズムにはそれがあり、私の意見では悪い状況です。優れたAPRIORI実装では、データベースをk回スキャンするだけで、長さkのすべての頻繁なアイテムセットを見つけることができます。特に、データがメインメモリに収まる場合、これは安価です。APRIORIを殺すことができるのは、頻繁に発生する2項目セットが多すぎる(特に、トライや類似の加速技術などを使用しない場合)。これは、頻繁なアイテムセットの数が少ない大きなデータで最適に機能します。

Eclatは列で機能します。ただし、各列をより頻繁に読み取る必要があります。この作業を減らすために、diffsetにいくつかの作業があります。データがメインメモリに収まらない場合、EclatはおそらくAprioriよりも多くの問題を抱えています。深さを最初にすることで、Aprioriよりはるかに早く最初の興味深い結果を返すこともでき、これらの結果を使用してパラメーターを調整できます。したがって、適切なパラメータを見つけるために必要な反復回数は少なくなります。しかし、設計上、Aprioriのようにきれいに剪定を利用することはできません。

FPGrowthは、データセットをツリーに圧縮します。これは、重複レコードが多い場合に最適です。データを事前にソートし、重複を加重ベクトルにマージできる場合は、AprioriとEclatでもかなりの利益を得ることができるでしょう。FPGrowthはこれを極端なレベルで実行します。欠点は、実装がはるかに難しいことです。そして、このツリーがメモリに収まらなくなったら、実装するのが面倒になります。

パフォーマンスの結果とベンチマークについては、信頼しないでください。間違って実装することがたくさんあります。10の異なる実装を試すと、10の非常に異なるパフォーマンス結果が得られます。特にAPRIORIについては、ほとんどの実装がAPRIORIの主要な貢献の一部を欠いているという意味で壊れているように感じます...これらの部分を正しく持っている実装では、最適化の品質が大きく異なります。

実際には、これらのアルゴリズムを効率的に実装する方法についての論文もあります。

アプリオリとエクラの効率的な実装。頻繁なアイテムセットマイニング実装の
クリスチャンボルゲルト
ワークショップ(FIMI 2003、メルボルン、フロリダ州、米国)。

このドメインでこれらの調査を読むこともできます:

  • ゲーサル、バート。「頻繁なパターンマイニングに関する調査。」大学 ヘルシンキ(2003)の。

  • フェレンクボドン、頻繁なアイテムセットマイニングに関する調査、テクニカルレポート、ブダペスト工科大学、2006年、

  • 頻繁なアイテムセットマイニング
    Christian Borgelt
    Wiley学際的レビュー:データマイニングと知識発見2(6):437-456。2012年


2

私が文献で見た最近の頻繁なパターンのアプローチのほとんどは、FPGrowthの最適化に基づいています。認めざるを得ません。FPMの文献には、何年もの間、多くの進展が見られませんでした。

このウィキブックでは、FPGrowthのさまざまなバリエーションを紹介しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.