1 / 27

頻出・飽和・極大頻出集合の効率的な列挙アルゴリズムとその実装

頻出・飽和・極大頻出集合の効率的な列挙アルゴリズムとその実装. 宇野 毅明 清見 礼 有村 博紀. 国立情報学研究所 国立情報学研究所 北海道大学. 2004年 9月30日 データマイニングワークショップ. トランザクションデータベース. 1,2,5,6,7 2,3,4,5 1,2,7,8,9 1,7,9 2,7,9 2. T =. トランザクションデータベース: 各トランザクション T がアイテム集合 E の部分集合になっているようなデータベース  つまり、  T , ∀ T ∈ T , T ⊆ E

ryder
Download Presentation

頻出・飽和・極大頻出集合の効率的な列挙アルゴリズムとその実装

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 頻出・飽和・極大頻出集合の効率的な列挙アルゴリズムとその実装頻出・飽和・極大頻出集合の効率的な列挙アルゴリズムとその実装 宇野 毅明 清見 礼 有村 博紀 国立情報学研究所 国立情報学研究所 北海道大学 2004年 9月30日 データマイニングワークショップ

  2. トランザクションデータベース 1,2,5,6,7 2,3,4,5 1,2,7,8,9 1,7,9 2,7,9 2 T= トランザクションデータベース: 各トランザクション Tがアイテム集合 Eの部分集合になっているようなデータベース  つまり、 T,∀T∈T, T⊆ E ・POSデータ(各項目が、客1人の購入品目) ・ アンケートのデータ(1人がチェックした項目) ・web log (1人が1回のwebサーフィンで見たページ) ・ オプション装備 (車購入時に1人が選んだオプション) 実際のデータは、疎であり大きいものが多い

  3. 集合のオカレンス 集合Kに対して: Kのオカレンス:  Kを含むTの項目 Kのオカレンス集合 Occ(K):  Kを含むTの項目全ての集合 1,2,5,6,7,9 2,3,4,5 1,2,7,8,9 1,7,9 2,7,9 2  {1,2}のオカレンス集合 ={ {1,2,5,6,7,9}, {1,2,7,8,9} } T=

  4. 頻出集合 ・頻出集合:Tの定数α個以上のトランザクションに含まれる集合  (オカレンス集合のサイズがα以上の集合)(α:最小サポート) 極大頻出集合:他の頻出集合に含まれない頻出集合 例) データベースT の3つ以上のトランザクションに含まれる集合 3つ以上に含まれるもの {1} {2} {7} {9} {1,7} {1,9} {2,7} {2,9} {7,9} {2,7,9} 1,2,5,6,7,9 2,3,4,5 1,2,7,8,9 1,7,9 2,7,9 2 T=

  5. 飽和集合 ・ 頻出集合をオカレンス集合が等しいものでグループにわける     (これを同値類と見なす) ・飽和集合: グループの中の極大元 (= オカレンス集合の共通部分)  ⇒ ユニークに定まる ・ アイテム集合に対して、 そのオカレンス集合の 共通部分を閉包という 極大頻出集合 頻出飽和集合

  6. 問題 ・ 本発表で扱う問題:   与えられたデータベース T と α に対して、その 1.頻出集合を全て見つける 2.頻出飽和集合を全て見つける 3.極大頻出集合を全て見つける ・それぞれ多くの研究がある ・実装の研究も多くある これらの問題に対して、アルゴリズム LCM (Linear time Closed itemset Miner)を提案

  7. 各レベルを順に計算(apriori) (既存) ・ 最初に大きさ1の頻出集合を全て見つけ、メモリに蓄える ・ 次に大きさ2の頻出集合を、大きさ1の頻出集合を組合せて全て見つけ、メモリに蓄える ・ 以後、1つずつ大きさを増やす メリット:   オカレンス計算の高速化 デメリット: メモリを大量消費&既発見解検索時間の増加

  8. バックトラック法 (既存) 1,2,3 1,2,4 1,3,4 2,3,4 1,4 2,3 2,4 3,4 1,3 1,2 ・ 空集合から出発し、分枝限定法的に探索するアルゴリズム ・ 現在の解に、1つアイテムを加えた各解に対し、再帰呼び出し ・ 重複を避けるため、現在の解の末尾より大きなアイテムのみ追加 Backtrack (K) 1 OutputK 2 For each e> K の末尾( K の最大のアイテム) IfK ∪{e}が頻出 callBacktrack (K ∪{e}) 1 2 3 4 φ 計算時間= O( 頻出度のチェック時間×|E| )

  9. 頻出度計算 (既存) ・ 集合 K∪{e} のオカレンスを求める際、素直に行うと、    データベースの全ての項目を調べる必要がある ・Occ( K∪{e} )  ⊆  Occ(K) という性質を用いる  ⇒ Kのオカレンスで eを含むものを見つければよい ⇒ Occ(K) ∩ Occ({e}) を計算すればよい (ダウン・プロジェクト、という) O( | Occ(K)| + | Occ({e})|) 時間

  10. 検索用のデータ構造 (既存) FP-tree: 今までに発見した頻出集合を蓄えるデータ構造 prefix tree、trie とよばれるものと同じ ・FP-treeは入力したデータベースを保管するのにも使われる (同一項目の縮約などの操作が楽なため) ・圧縮したprefixの分だけ、 頻出度の計算が速くなる ・圧縮率は通常1/2-1/3倍、 最良でも1/6倍程度 ・2分木操作のため、 計算時間は増大 1 2 3 4 5 /|\ /|\   |  | 2 3 5 2 3 4 5 5 || /| 4 5 4 5 | | 5 5

  11. オカレンスの配布 (新規) 3 4 5 4 5 5 A B C 3 3 ・各 e = K の末尾, …, |E| について、Occ(K ∪{e})を   一度に全て計算する K = {1,2} のオカレンス A{1,2,4,5} B{1,2,3} C{1,2,3,4} ・バックトラック法は、末尾以降のアイテムを追加 ⇒ {1,2,3}, {1,2,4}, {1,2,5} のオカレンス集合を計算  ⇒ 疎な行列の転置を求めているのと同じ  ⇒ 非ゼロ要素数の線形時間で求められる A B C 1,2,3 1,2,4 1,2,5 B B C A A 各 eについて O( |Occ(K∪{e}|) ) 時間

  12. 実際の計算では (新規) K∪ α ・ 頻出度計算では、生成した集合 K∪{e} が非頻出なら、 それは無駄な計算 (うまくすれば省略できる可能性がある) ・ しかし、そのような無駄は、計算全体の1/3 以下 (ただし、アイテムを「含まれる項目数」の小さい順でソート) 3 4 5 6 7 8 9 AD ELM ABCEFGH JKLN ABDEFGI JKLMSTW BEGILT MTW ABCDFGH IKLMNST 検索の手間がない分 オカレンス配布が 有利と思われる

  13. データベースの縮小 (既存&新規) ・ 入力したデータべースを縮小して、計算を高速化する     ◆eを含むトランザクションがα個未満 or全てのトランザクションに含まれる         ⇒ eをデータベースから削除     ◆ 等しいトランザクションは1つにまとめる ・サポートが大きいと劇的に小さくなる(データベース縮約とよぶ) さらに、バックトラック法なら、各反復で      ◆末尾以前のアイテムを消去 してからデータベース縮約をすると、反復的に縮約され、 さらなる高速化が行われる(反復型データベース縮約とよぶ)

  14. 極大&飽和頻出集合の列挙 (既存) ・ 頻出集合列挙のアルゴリズムに限定操作を加える 極大用、限定操作: 1つ極大解が見つかったら、          その部分集合は極大解の候補からはずす 飽和用、限定操作: 同一のオカレンス集合を持つ集合の中で、          極大でないものを候補からはずす ・ メモリに解を保持して実装する

  15. 飽和拡張  (既存) ・ 飽和集合 K に対して、 K の飽和拡張 = (K +アイテム) の閉包  - 任意の飽和集合は、他の飽和集合の飽和拡張になる  - ( K の頻出度) >( K の飽和拡張の頻出度)なので、      飽和拡張が導出する関係は、閉路を含まない ・ 飽和拡張をもとに列挙アルゴリズムを構築すると、  計算時間が飽和集合数の線形になる

  16. Prefix保存飽和拡張  (新規) ・prefix保存飽和拡張は、飽和拡張のバリエーション 定義: 飽和集合K の閉包末尾 ⇔K=閉包 (K∩{1,…,j}) が成り立つ最小の j 定義: 飽和拡張 H =閉包 (K ∪{i})が K のprefix保存飽和拡張 ⇔ i > j かつ H ∩{1,…,i-1}=K ∩{1,…,i-1} が成立 ・prefix保存飽和拡張には閉包の操作のみ必要 (既発見解は不要) ・ 任意の飽和集合は、他の唯一の飽和集合のPrefix保存飽和拡張 ⇒  メモリを使うことなく、飽和集合を重複なく探索できる

  17. 飽和拡張・prefix保存飽和拡張の例 φ 2 7,9 1,2,5,6,7,9 2,3,4,5 1,2,7,8,9 1,7,9 2,7,9 2 1,7,9 ・ 飽和拡張 ⇒ 非閉路グラフ ・prefix保存飽和拡張 ⇒ 木 2,5 2,7,9 T= 1,2,7,9 2,3,4,5 飽和拡張 prefix保存飽和拡張 1,2,7,8,9 1,2,5,6,7,9

  18. 頻出集合の列挙 ・ 頻出集合列挙のボトルネックは、頻出度計算 ・ 同値類内は、オカレンス集合が等しい ⇒ 頻出度計算が省略できる ・ 閉包を取らない解と閉包を取った解を保持 ⇒ 両者は、同値類中の超立方体を導出  ⇒ 超立方体内の解を列挙 同値類が大きければ効率が良い

  19. 極大頻出集合の列挙 (新規) 1 2 3 4 5 6 7 8 9 10 並び替え ・ バックトラック法による頻出集合列挙を考える K: 現在の解   ⇒ H: K を含む閉包 ⇒ ・Hに含まれるアイテムが 最後に来るよう、並び替える ・Hのアイテムを追加した再帰呼び出しでは、 極大頻出集合は見つからない   ⇒再帰呼び出しを省略 6 8 10 4 5 7 9 反復数が劇的に減少

  20. 閉包・極大性判定 (新規) ・ 閉包の計算や、極大性の判定を素直に行うと、 データベース縮約を用いない頻出度計算と、 同程度、あるいはそれ以上の手間がかかる ・ 閉包・極大性判定にもデータベース縮約を使う  -閉包末尾以後が等しいトランザクションを1つにまとめる ただし、閉包末尾以前は以下を保存 ・ 閉包計算    ⇒共通部分 ・ 極大性判定  ⇒各アイテムの含まれる数 頻出度計算と同程度、データベースが縮小される

  21. 計算機実験 ・計算機環境: CPU、メモリ: AMD Athron XP 1600+ 、 224MB OS、言語、コンパイラ:Linux 、C言語、gcc ・比較アルゴリズム FP-growth, afopt, MAFIA, PATRICIAMINE, kDCI (どれも、実装コンテスト FIMI03 で優秀な成績をおさめたもの) ・データセット FIMI03、KDD-cupなどで使われた、人工データ、実データ

  22. 結果

  23. 観察と考察 ・prefix保存飽和拡張・超立方体分解は、同値類が大きいと効果的 ・極大性の判定は、他のアルゴリズムも優秀 ・データベースの縮小は αが大きいとき & Occ(K) が大きいとき、とても良く効くようだ ・apriori はそれほど効果がないようだ ・オカレンス配布は、α、Occ(K) が小さいとき、効くようだ ・逆に FP-treeは、α、Occ(K) が大きいとき、効くようだ 我々のアルゴリズムは、構造があり、解が多い場合に強い

  24. まとめと今後の課題 ・prefix保存飽和拡張と、それを用いた、線形時間・多項 式メモリの飽和集合列挙アルゴリズムLCMを提案した ・ LCMをもとに、同値類のグループ化と枝狩りを用いて頻出・極大集合の列挙アルゴリズムを構築した ・ 計算を高速化するアルゴリズムを提案した ・多くの問題において既存手法より良い結果を出した ・FP-tree 的な手法を加味した、さらなる高速化が課題

  25. FIMI '03 ・Frequent Itemset Mining Interpretation   頻出集合列挙アルゴリズムの実装コンテスト ・20ほどのアルゴリズムが参加した    (我々も参加)

  26. 他のアルゴリズムの特徴 ・基本は、頻出集合列挙。apriori が主流 ・がんばった人は FP-treeを使用 ・前処理によるデータベースの縮小がさかん  (long の代わりに short を使い、キャッシュ効率を良くする、   という重箱隅的なものまである) ・極大頻出集合列挙には、限定操作を多用 ・diffset はよく使われるが、オカレンス配布は使ってないようだ これらを丁寧にじっくり実装したアルゴリズムが高速 奇抜なアイディアもあったが、全部遅い

  27. 実験に使われたデータベース -web log -POS -機械学習用の問題 -事故処理のデータ -リテール -人工データ ・問題規模は大きく、項目数は 1万-100万    台集合の大きさも500-5万

More Related