極大2部クリークの高速列挙法と データマイニングへの応用 宇野 毅明 情報学研究所 有村博紀 浅井達哉 九州大学 九州大学 2003年7月16日 夏のLAシンポジウム 研究の概要 ・ 極大2部クリークを高速に列挙するアルゴリズムの提案 ・ そのアルゴリズムの実装 ・ データマイニングのclosed item set 列挙問題に適用 ベンチマーク問題を解いて、既存アルゴリズムと比較する 列挙がしたい ・ ある種の部分グラフを見つけ出す データマイニング、ウェブマイニング、計算言語学など ・ 大量にほしい → 出てきたものをもう一度加工 → 統計的に処理 → 出現数を調べる(グラフマイニング) → クラスタの種にする(計算言語学) ・ 入力データは巨大だが、解の個数は意外と少ない ・ ウェブネットワーク ・ 辞書 ・ 文書データベース 可能であれば、全部列挙したい 極大2部クリーク列挙問題 問題: 「与えられたグラフ G = (V,E ) の全ての極大2部クリーク(極大ク リーク)を、ちょうど一度ずつ出力せよ(列挙せよ)」 ・ 極大安定集合の列挙に変換可能 築山らのアルゴリズムで、1つあたり O(|V||E| ) 時間でできる 研究の動機 築山らのアルゴリズムで、1つあたり O(|V||E|) 時間でできる ・ しかし、現実問題では、 |V|、|E| ともに大きい(1万~100万) ・ ただし、グラフが疎である事が多く、 最大次数・平均次数はそれほど大きくない 平均次数・最大次数に依存するアルゴリズムがありがたい 計算量は最大次数、ランダムグラフでの実験的実行時間は 平均次数に依存するアルゴリズムを作った ウェブコミュニティーの発見 対象: ウェブのネットワーク 極大2部クリークの リンク先: 共通の話題に関するページ リンク元: 共通の話題を持つコミュニティー グラフマイニング ・ 与えられた大きなグラフ、あるいはたくさんのグラフの中か ら、頻出する部分グラフを出力する ・ 部分グラフ = 木、サイクル、クリークなど ・ 候補を作り、列挙して勘定する アルゴリズムが一般的 ・ クリーク、2部クリークは、 極大なものを列挙すれば、後が簡単 類義語群の発見 対象: 単語の組合せからなる 複合語の辞書 関東 地方 関西 地区 中国 電力 北陸 極大2部クリークがある種似た意味を持つ単語 の集合 類似論文のグループ化 対象: 論文とそのアブストラクト 論文A 論文B 論文C 論文D 2部極大クリークの 語: 研究分野 論文: その分野の論文 語1 語2 語3 頻出集合 対象: 売上データなど 客1 客2 客3 客4 2部極大クリークの 客: 同じような商品を買うグループ 商品: 一緒に売れやすい商品 ビール 紙おむつ タバコ 極大2部クリークの列挙法 ・ 築山らの列挙法の改良版 G = ( V1 ∪ V2 , E ) X (K) : K の全ての頂点に隣接する頂点の集合 K≦i : K の添え字 i 以下の頂点の集合 ・極大クリーク K に対して X( K ∩ V2 ) = K ∩ V1 なので、以後 K ∩ V2 で極大2部クリークを定める ・同様に X( K ∩ V1 ) = K ∩ V2 も成り立つ V1 V2 極大2部クリークの親 ・ X ( X ( K≦i-1 ) ) :極大クリーク K の親: ただし i は X( K≦i-1 ) ≠ X( K≦i )が成り立つ最大のi ・ K の親 ⊂ K が成り立つので、この親子関係は非巡回的 X(K) X(K≦i-1 ) V1 vi V2 K≦i-1 K X(X (K≦i-1 )) (Kの 親) 親子関係を逆探索 ・ 極大2部クリークの親子関係は非巡回的 グラフで書くと、木(列挙木)になる 列挙木を深さ優先探索して全ての解を出力する ・ 子供を見つけるアルゴリズムがあれば十分 極大2部クリークの子 ・ K[i] = X ( X ( K≦i-1 ∪{vi} ) ) H が K の子 ある i に対して H = K[i]、H≦i = K≦i K[i]≦i = K≦i K[i] は K の子 X(K≦i-1 ∪{vi} ) ) X(K) V1 vi V2 K≦i-1 K X(X (K≦i-1 ∪{vi} )) (Kの子) 計算時間 ・ 全ての i について K[i] を求め、子供かどうか判定 ・ 判定は O( | X (K[i])|Δ) 時間でできる。 ・ X (K[i] ) =φ ならば K[i] = V2 なので、 X (K ) に隣接する vi のみK[i]の判定をすれば良い ・ このような vi の | X (K[i])|Δ の合計は O(Δ3 ) 1反復の計算時間は O(Δ3 ) になる 各反復で極大2部クリークを1つ見つけるので、 計算時間は極大2部クリーク1つあたり O(Δ3 ) V1 V2 vi 計算実験 ・ ランダムなグラフに対して実験 ・ V1の各頂点から、対応するV2の頂点の±r個の頂点に確 率1/2で枝を張る 頻出集合 E :アイテムセット F :アイテムセットの部分集合(トランザクション)の族 α :閾値(定数) 例) E :商品の集合 トランザクション: 各客の購買商品 F :売上データのデータベース 頻出集合とclosed item set E :アイテムセット F :部分集合の族 α :閾値(定数) ・ S ⊆E がα 個のトランザクションに含まれる S は頻出集合 ・ 頻出集合 S が他の頻出集合に含まれない S は極大頻出集合 ・ {T | T ∈F , S⊆T }=C となる S の集合 closed item set ・ 頻出集合はデータベースの特徴を現している ・ マーケッティングなどでの知識の掘り出しに使える 例) 頻出集合の 客:同じような商品を買うグループ 商品:一緒に売れやすい商品 closed item set の列挙 たいていの問題では、 #極大頻出集合 < #closed item set < #頻出集合 ・ 頻出集合は数が多すぎる ・ 極大頻出集合は、少なすぎて、情報が失われているかも & 列挙に手間がかかる closed item set の極大元で、 頻出集合になっているものを列挙しよう 2部極大クリークと closed item set V1 = F V2 = E T ∈ F が e ∈ Eを含む ⇔ 枝 (T, e )が存在 極大2部クリークとclosed item set の極大元が1対1対応 V1 = F 客1 客2 客3 客4 V2 = E ビール 紙おむつ タバコ 極大2部クリークを 列挙すれば、 Closed item set の 極大元が列挙できる 実装上の工夫 今回の実装では、以下のような工夫を加えた (1) 頂点の添え字を次数の昇順でソートする (判定を行う K[i] の数の減少) (2) 次数大の頂点には隣接行列を用意 (隣接性を定数時間で判定) (3) 各 K[i] を O(|X(K)|Δ) 時間で求める (4) K[i]≦i の頂点を添え字の小さい順に求めK≦i と比較する (比較途中で異なることが分かれば、 K[i]の生成時間が短 縮される) ベンチマーク問題 ・ 計算実験を行ったベンチマーク問題は以下の4つ どれも、良く用いられるもの BMS-WebView1 (Webから抽出したデータ) |E|=500 が|F | = 6万、平均次数 2.5 BMS-WebView2 (Webから抽出したデータ) |E|=3300 が|F | = 6万、平均次数 5 BMS-POS (POSデータ) |E|=1650 が|F | = 51万、平均次数 6 IBM-Artificial (人工的に生成したデータ) |E|=1000 が|F | = 10万、平均次数 10 実験結果 まとめ ・ 疎グラフの極大2部クリークを1つあたり O(Δ3 ) 時間で列 挙するアルゴリズムを提案した ・ ランダムに作成したグラフに対する実験的な計算時間は、 O(Δ) であることを確認した ・ closed item set 列挙のベンチマーク問題に対して計算機 実験を行い、特に、時間のかかる難しい問題で、既存のア ルゴリズムよりも大幅に高速化されることを確認した
© Copyright 2024 ExpyDoc