疑似頻出アイテム集合の 多項式遅延列挙アルゴリズム 宇野 毅明 (情報学研究所) 有村 博紀 (北海道大学) 2007年7月26日 人工知能学会DMSM研究会 頻出パターン列挙 ・ データベースの中に多く現れるパターンを全て見つける問題を 頻出パターン列挙(あるいは発見、マイニング)問題という データベース: トランザクション、ツリー、グラフ、多次元ベクトル パターン: 部分集合、木、パス・サイクル、グラフ、図形 データベース 実験1 実験2 実験3 実験4 ● ▲ ▲ ● ▲ ● ● ▲ ● ● ● ▲ ● ▲ ● ● ● ▲ ● ● ▲ ▲ ▲ ▲ 実験結果 頻出する パターンを抽出 ATGCGCCGTA TAGCGGGTGG TTCGCGTTAG GGATATAAAT GCGCCAAATA ATAATGTATTA TTGAAGGGCG ACAGTCTCTCA ATAAGCGGCT ゲノム情報 ・ 実験1● ,実験3 ▲ ・ 実験2● ,実験4● ・ 実験2●, 実験3 ▲, 実験4● ・ 実験2▲ ,実験3 ▲ . . . ・ ATGCAT ・ CCCGGGTAA ・ GGCGTTA ・ ATAAGGG . . . 本研究では ・ いわゆる頻出集合列挙をターゲットにする 入力: トランザクションデータベース: 各トランザクション T がアイテム集合 E の部分集合 になっているようなデータベースD つまり、D, ∀T ∈D, T ⊆ E ・ 解が多い (大きくて面白いものは少ない) ・ 包含関係が厳密 「多くの項目になんとなく含まれている」ものを見つけたい アイテム集合に対して、あいまいな包含関係を考え、 頻出集合の列挙アルゴリズムを提案する 既存研究 ・ fault-tolerant pattern、degenerate pattern、soft occurrence などとよばれて、研究されている - 包含関係を一般化する場合、アイテムの含有率が閾値異常 のとき、含まれると定義 - あるいは、アイテム集合・トランザクションの組で、アイテム が項目に含まれない回数が小さいようなもの - 文字列などでは、もっと一般的に「類似」を包含関係に使う - 完全性を保証した列挙型の解法は少ない アルゴリズム的な観点からモデルと解法を見つめたい まずは通常の頻出集合 集合K に対して: K の出現: K を含む D のトランザクション K の出現集合 Occ(K): K の出現の集合 K の頻出度 frq(K): K の出現集合の大きさ 1,2,5,6,7,9 2,3,4,5 D = 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} } {2,7,9}の出現集合 = { {1,2,5,6,7,9}, {1,2,7,8,9}, {2,7,9} } 頻出集合 ・ 頻出集合: D の閾値σ個以上のトランザクションに含まれる集合 (頻出度がσ以上の集合)( σを最小サポートとよぶ) 例) データベース D の3つ以上のトランザクションに含まれる集合 D= 1,2,5,6,7,9 2,3,4,5 1,2,7,8,9 1,7,9 2,7,9 2 3つ以上に含まれるもの {1} {2} {7} {9} {1,7} {1,9} {2,7} {2,9} {7,9} {1,7,9} {2,7,9} 与えられたトランザクションデータベースと最小サポートσに対 して、頻出集合を全て見つける問題が頻出集合列挙 擬似包含関係 ・ アイテム集合 P がトランザクション T 含まれる、の定義 ・ 良く使われる方法: 閾値θ<1 に対して |P∩T| / |P| ≧ θ 頻出集合の単調性がなくなる 「空集合以外の部分集合は全て頻出でない」頻出集合もある 難しい ・ 代わりに「含まないでいいアイテムの数」を使う 閾値θ≧1 に対して |P\T| ≦θ (k 擬似包含関係とよぶ) 単調性は保持 多くの項目が P のうち3個のアイテムを含む、といったルー ルが見つかる k 擬似頻出集合 ・ k 頻出集合: D のσ個以上のトランザクションに k 擬似包含の意 味で含まれるアイテム集合 D = σ=3での1擬似頻出集合 1,2,5,6,7,9 {1,2,3} {1,2,4} {1,2,5} {1,2,7} {1,2,9} {1,3,7} 2,3,4,5 {1,3,9} {1,4,7} {1,4,9} {1,5,7} {1,5,9} {1,6,7} 1,2,7,8,9 {1,6,9} {1,7,8} {1,7,9} {1,8,9} {2,3,7} {2,3,9} 1,7,9 {2,4,7} {2,4,9} {2,5,7} {2,5,8} {2,5,9} {2,6,7} 2,7,9 {2,6,9} {2,7,8} {2,7,9} {2,8,9} {3,7,9} {4,7,9} 2 {5,7,9} {6,7,9} {7,8,9} {1,2,7,9} {1,3,7,9} {1,4,7,9}{1,5,7,9} {1,6,7,9} {1,7,8,9} {2,3,7,9} {2,4,7,9} {2,5,7,9} {2,6,7,9} {2,7,8,9} 自明なパターンがたくさんある 効率良い列挙アルゴリズムを考える 擬似頻出パターンの単調性 ・ 擬似頻出集合は単調なのでバックト ラック法で多項式時間列挙できる 111…1 ・ 各末尾拡張のk 擬似頻出度を振り分け で計算することで、1反復の計算時間は O(||D||) 時間になる 頻出 000…0 1,2,3,4 ・ データの構造・計算の内容が 頻出集合と同じなので、 同じテクニックがそのまま使える -ビットマップ -ダウンプロジェクト -データベース縮約、FP-tree 1,2,3 1,2,4 1,2 1,3 1 1,3,4 1,4 2,3,4 2,3 2,4 3,4 2 3 4 φ k 擬似出現集合の計算 ・ Occ=k(P) = {T∈D| |P\T|=k } とする つまりちょうど k 個含まないトランザクションの集合 - Occ≦k(P) = ∪Occ=i(P) ・ Occ=h(P∪i) = Occ=h(P)∩Occ(i) ∪ Occ=h-1(P∪i)\Occ(i) 通常の出現と性質が同じ 更新に同じ技術が使える A A (ダウンプロジェクト、振り分け…) B B A B A C C ・ データベースの圧縮も可能 B A A B A A D D B B B C B E C E ・ 再帰が深くなり、頻出度が C C C D C F D F D G F F D G 小さくなると、計算が速くなる 8 9 10 11 12 末広がり性 ・ バックトラックは、各反復で複数の再帰呼び出しをする 計算木は、下に行くほど大きくなる 計算時間を支配するのは一番下の数レベル 計算時間長 ・・・ 計算時間の短縮が期待される 計算時間短 最小サポートが大きい場合も ・ θが大きいと、下のレベルでも多くの出現を見ることになる 末広がり性による高速化はいまひとつ ・ データベースの縮約により、下のレベルの高速化をはかる (1) 前回追加したアイテムより小さいアイテムは消す (2) 現在の出現集合からできるデータベースの中で、頻出になって いないアイテムは消去する (再帰呼び出しの中で加えられることが無いから) (3) まったく同一のトランザクションは、1つにまとめる 1 ・ 実データだと、下のほうのレベルでは だいたい大きさが定数になる σ小さいときと速度の大きな差はない 1 3 2 2 6 4 7 4 3 2 5 4 3 1 4 4 4 5 6 7 6 7 6 7 小さくて自明なパターン ・ k 擬似包含関係では、大きさ k 以下のアイテム集合は全ての トランザクションに含まれる ・ 大きさが k より少しだけ大きいアイテム集合も多くが含む 多くの小さくて自明な頻出集合が存在する ・ 実用上は、これらを無視したい ある程度 (l とする)の大きさを持つ頻出集合を直接的に見 つける方法を考える 部分頻出度条件 ・ 大きさ l の集合を工夫なく調べると、指数的な時間がかかる ある程度絞込みをしたい 特徴を持つ部分構造を基にしよう ・ 大きさ l の k 擬似頻出集合 P を考える ・ 一般性を失うことなく、 P={1,…,l} かつ |Occ=k(P)\Occ({i})| の大きい順に並んでいるとする ・ アイテム集合 {1,…,y} の頻出度を考える ・ Occ=k(P)\Occ({i}), i>y のトランザクションは {1,…,y} を k-1 擬似包含関係の意味で含む i=2 {1,2,3,4,5} ⊆2 {1,3,5,6,7,10,15} 部分頻出度条件 ・ Occ=k(P)\Occ({i}), i>y のトランザクションは {1,…,y} を k-1 擬似包含関係の意味で含む |Occk-1({1,…,y})| ≧ |∪j=y+1,...,|P| (Occk(P)\Occ({i}))| ・ |Occk(P)\Occ({i})| の平均は (k / |P|) |Occ=k (P)| 以上 ・ 1,…,y は|Occk(P)\Occ({i})| の昇順で並んでいる |Occk-1({1,…,y})| ≧ |Occk(P)|×(|P|-y)/|P| P までたどり着く k-1擬似頻出度に関する条件を満たすアイテム集合の列がある 部分頻出度条件による探索経路 ・ 大きさ l の k 擬似頻出集合は |Occk-1(P)|>σ(l-|P|) /l を満たすP のみを経由して見つけられる この条件を満たすk 擬似頻出集合を全部見つけよう ・ 末尾拡張は使えない(条件を満たさないものが拡張元になる) ・ 逆探索を使う 条件を満たすパターン P は、P\{i} の中で |Occk-1(P\{i})| を 最大にするものから見つける ・ |Occk-1(P\{i})| の計算は、振り分けで効率良くできる 1反復 O(|P|×||D||) 時間になる 部分頻出度を満たす擬似頻出集合 ・ k=1 で最小サポート =3 の場合 1,2,5,6,7,9 2,3,4,5 D = 1,2,7,8,9 1,7,9 2,7,9 2 部分頻出度条件を満たす頻出集合 {1} {2} {5} {7} {9} {1,2} {1,5} {1,6} {1,7} {1,8} {1,9} {2,3} {2,4} {2,5} {2,6} {2,7} {2,8} {2,9} {3,4} {3,5} {4,5} {5,6} {5,7} {5,9} {6,7} {6,9} {7,8} {7,9} {8,9} 数が減るので、効率良い探索が期待できる まとめ ・ 「高々 k 個のアイテムが含まれない」という条件を利用した あいまいな包含関係 ・ その包含関係での頻出集合列挙 ・ 逆探索による固定サイズの頻出集合を直接的に見つける アルゴリズム 今後の課題 ・実装と計算実験 ・ 他のパターンへの列挙技術の活用 ・ 「r % は含まれる」とした包含関係への取り組み
© Copyright 2024 ExpyDoc