1 / 69

頻出パターン列挙問題と 高速アルゴリズム

頻出パターン列挙問題と 高速アルゴリズム. 宇野 毅明 (情報学研究所) 有村 博紀 (北海道大学) 中野 眞一 (群馬大学) 佐藤 寛子 (情報学研究所) 佐藤 健 (情報学研究所) 清見 礼 ( JAIST ). 200 6 年 11 月 25 日 S @ CO. 列挙とその応用の基本. B. A. …. 列挙問題とは何でしょう. ・ 1,3,5,8,14 の中から数字を 選んでできる合計を列挙せよ. ・ 頂点 A と B を結ぶパスを列挙せよ 解). 列挙問題 : 与えられた問題の解を全て重複なく見つけ出す問題

kiley
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. 頻出パターン列挙問題と高速アルゴリズム 宇野 毅明 (情報学研究所) 有村 博紀 (北海道大学) 中野 眞一 (群馬大学) 佐藤 寛子 (情報学研究所) 佐藤 健 (情報学研究所) 清見 礼 (JAIST) 2006年11月25日 S@CO

  2. 列挙とその応用の基本

  3. B A … 列挙問題とは何でしょう ・ 1,3,5,8,14 の中から数字を 選んでできる合計を列挙せよ ・頂点 A と B を結ぶパスを列挙せよ 解) 列挙問題: 与えられた問題の解を全て重複なく見つけ出す問題 ・ グラフの2点間を結ぶパス ・ 数の合計の可能性 ... 解) 0, 1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 25, 26, 27, 28, 30, 31 情報科学の基礎的な問題 近年、広く使われ始めている

  4. 列挙は多面的 ・ 最適化は問題の一部分を見つける 列挙は問題の全ての部分を見つける 列挙では解の全てを見つけるため、 問題の構造を全体的に把握することができる 「最適ではないが、役に立つ解」を、見つけ損なわない 問題の構造を調べたいとき、数理的にクリアでない 目的関数で解を得たいときに、列挙が有効

  5. 候補 Enumerations from databases solve many problems and give new knowledge Enumerations from databases solve many problems and give new knowledge Enumerations from databases solve many problems and give new knowledge Enumerations from databases solve many problems and give new knowledge Enumerations from databases solve many problems and give new knowledge 実際にページ を見て検証 キーワード検索 あいまいな目的 Web ページ データベース web ページの検索 (見つけたいページを見つける)  ① キーワードを指定  ② キーワードを含むページを列挙  ③ 見つかったページを実際に検証 ・ 数理的な部分をコンピュータで解く (候補の列挙) ・ 残りはユーザに任せる (候補の絞込み)

  6. 列挙は中間に位置する シンプルなモデル をじっくり解く 複雑なモデル を粗く解く シミュレ ーション 列挙 線形計画 最適化 アドホック ネットワーク 局所探索 良質な解を多数見つける 物理現象の計算 組合せ最適化 モデルから見ると モデルが ・ シンプルかつ小規模なら、最適化が有効    (きれいな問題の良質な解を1つ求める) ・ 複雑あるいは大規模ならばシミュレーションが有効    (複雑・大規模な問題の多数の解を見つける)

  7. 応用の発達 計算機パワーの増大 列挙研究の歴史 実用の可能性が発現 応用で使われ始める (データマイニングなど) 1960 1990 2000 黎明期: 基礎問題と計算量 解が多さで、実用の観点はなし 逆探索 の出現 実用的なアルゴ リズムの発達 (疎な構造の利用、 巨大データ処理等) 極大元列挙法の出現 複雑な構造に対する列挙法の発達

  8. 典型的な OR(+数理計画) 的アプローチ 問題発見 定式化 解法(最適化) できたモデルを実際に使う データ収集 (システム構築) 求解 運用 OR的アプローチのボトルネック 典型的なOR的なアプローチは、データ収集でつまづくことが多い ここがボトルネック であることが多い その一方で、データが あふれている場所もある

  9. データの選別 モデル化 データ処理 データ中心の科学 ならば、データがそろっているところでモデルを作ればいい ・ 近年、IT技術の発達で、大規模なデータが半自動的に収集できるようになった   (POS、web、文書、顧客データ、財務、利用者、人事…) いわば、データを出発点とした問題解決の科学 (人工知能、データマイニング、自然言語処理、セマンティックweb…)

  10. データ中心科学の特徴 ・ データが整形されていない  目的がはっきりしない、あるいは異なる目的のために集められたデータを用いるため、必要なものがすぐ取り出せるとは限らない。また、ノイズや不正確な情報も含まれうる。 ・ 目的関数があいまい  データが情報の塊のようなものなので、そこから得られるものはやはり情報であることが多い(知識、特徴分析といったもの)。それら情報の価値は数理的な尺度では計りにくい。また、従来の最適化とは異なる尺度を用いることが多い。(グラフクラス、シークエンス、情報量、隣接性、類似度、頻出度・・・) ・ データが巨大で、構造を持つ 半自動で集められたデータであるので、データは通常、巨大である。しかし各項目が持つ属性は少なく、疎である。 ・ データ処理は比較的簡単なものが多い データ処理の計算は、最適化のような複雑ではなく、 組合せの検索や整形などいくつかの簡単な処理の組合せ つまり、列挙 組合せの検索

  11. 近年の列挙研究の方針 ・解が少ないようなモデルの構築  短時間で求解が終わる上に、解の解析にかかる時間も短くなる - パスの代わりに最短パス - クリークの代わりに極大クリーク ・入力データは巨大だが、解は多くない問題を短時間で解く - パワー則や疎性の利用 - 計算オーダーの減少と再帰構造の良質化 アルゴリズムの性能の向上: 標準的な PC で ・ 素朴なアルゴリズムでクリークを列挙 100年以上 ・ 洗練されたアルゴリズムで極大クリーク 2時間程度    (スループット: 秒速10万 個) 応用事例で実際に使える技術が出てきている

  12. 列挙モデルの難しさ ・組合せ的に選択可能な箇所があると、解数が爆発 例)2点を結ぶパス  最短路のみを列挙すれば、回避できうる 例) グラフのクリーク  極大クリークのみを列挙すれば、回避できうる 大きなクリーク 極大・極小なもの、代表者をいかに選ぶかが重要

  13. 列挙アルゴリズムの難しさ ・解は多いが、総当りは非効率 列挙は解が指数個存在するので、ほぼ全ての組合せが解になりうる 総当り的な検索が計算量の意味で最適 例)2点間を結ぶパスは指数個ありうる 2点間を結ぶパスは、枝の組合せ全てより指数分の1である 指数個解のある問題は、現実的には解く意味がない ボトルネック = 解の個数 = 出力の時間  解が少なければ速く、解が多ければ遅いアルゴリズムが望ましい - 解1つあたりの計算時間が短い(定数) - 1秒あたりの出力数が大きい(スループット)

  14. 効率的な探索が重要 全ての組合せより はるかに少ない 例題) (3,2) から1つ、(9,3,5) から1つ、(4,1,3) から1つ、 (0,7,1) から1つ、合計4つの数字を選んでできる組合せの 中で、合計が10以下のものを求める (予算10以下の組合せ) いかに効率よい探索ルートを作り、短時間で移動するかが課題

  15. 頻出パターンの定義と応用

  16. データベースを分析したい データベース ・ データベース構築と検索は、もうできるようになった  (絞込みや、あいまい検索はまだ改良の余地があるけど) ・より詳しくデータを解析するために、データの特徴を捉えたい 各種統計量(データベースの大きさ、密度、項目に現れる属性値の総計、分布)よりも、深い解析がしたい  組合せ(パターン)的な構造に注目 (どういう組合せ(パターン)が どれくらい入っているか) ・ 組合せ・パターンの個数は指数なの で、全てを尽くすのは効率的でない  多く現れるものだけに注目 ATGCGCCGTA TAGCGGGTGG TTCGCGTTAG GGATATAAAT GCGCCAAATA ATAATGTATTA TTGAAGGGCG ACAGTCTCTCA ATAAGCGGCT 実験結果 ゲノム情報

  17. 頻出パターンの列挙 ・ データベースの中に多く現れるパターンを全て見つける問題を 頻出パターン列挙(あるいは発見、マイニング)問題という  データベース: トランザクション、ツリー、グラフ、多次元ベクトル  パターン: 部分集合、木、パス・サイクル、グラフ、図形 データベース 頻出する パターンを抽出 ・ 実験1● ,実験3 ▲ ・ 実験2● ,実験4● ・ 実験2●, 実験3 ▲, 実験4● ・ 実験2▲,実験3 ▲ .     .     . ATGCGCCGTA TAGCGGGTGG TTCGCGTTAG GGATATAAAT GCGCCAAATA ATAATGTATTA TTGAAGGGCG ACAGTCTCTCA ATAAGCGGCT ・ATGCAT ・CCCGGGTAA ・GGCGTTA ・ATAAGGG .     .     . 実験結果 ゲノム情報

  18. 研究の歴史 ・ 頻出パターン発見問題はデータマイニングの基礎的な問題  星の数ほどの論文がある (Google Scholarで5000件) ・1990年代から、「大きなデータから知識を得たい」という   スローガンの元、研究されている  「巨大データを扱うこと」を前提としている ・ 1990年ごろ集合をパターンとしたものから始まり、 極大なもの、飽和集合、誤差つき...とバリエーションができ、 パターンの種類も、集合から文字列、文字シークエンス、集合シークエンス、パス、ツリー、グラフ... と増えてきている

  19. アルゴリズム研究の歴史 ・ アルゴリズム的には - 1994年 Agrawal らの apriori (解の大きさごとに解候補を 生成してからデータベースをスキャンして頻出度を計算) - 1998年 Bayardo のバックトラック - 1998年 Pasquir らによる飽和パターンの提唱 - 2001年 Burdick らによる MAFIA (データをビット列で格納して、    演算を高速化) - 2002年 Zakiによる CHARM (枝刈りを利用した飽和集合列挙) - 2002年 牧野らによる、極大パターンの列挙の困難性の証明 - 2003年 有村宇野による LCM     (初の多項式時間飽和集合列挙アルゴリズム)

  20. 応用:バスケット分析 ・ スーパーなどの小売店舗で、同時に購入される事の多い品物の組を知りたい ・ 客が購入した品目 トランザクション ・ 品目の組で、多くの客が購入したもの 多くのトランザクションに含まれるアイテム集合 (あるθに対する)頻出集合 ● 牛乳、弁当 ● お茶、弁当 ● おにぎり、雑誌 ● はさみ、のり ● ラーメン、はし ● こっぷ、皿 ● 弁当、おにぎり    ... 「おむつとビールの組合せが良く売れる」 という発見が有名

  21. データ ベース データ ベース 応用:データベースの比較 ・ 2つのデータベースが、意味的にどの程度似ているか知りたい  大きさの違い、ノイズは無視したい ・ 各アイテム、属性などの総数だけでは、組合せがわからない ・ 組合せを細かく見ると、ノイズに振り回される 頻出集合を列挙することで、 組合せ的な特徴を比較できる ・ いろいろな言語の辞書データ ・ 異なる種のゲノムデータ ・ 文書集合の単語データ(新聞のデータ、雑誌のデータなど) ・ 顧客のデータ

  22. 応用:分類ルール、特性の発見 ・ データの特徴を現す規則、あるいは正例・負例を分類するような規則が知りたい (A,B,C が含まれている、A,B が含まれれば、C が含まれる、など) ・ 多く現れる組合せを用いないと、仮定部分を満たすものが少なく、ルールとして意味がない ・ 組合せを細かく見ると、ノイズに振り回される 頻出集合を仮定に用いることで、 信頼度の高いルールを 効率良く見つけられる データ ベース データ ベース 正例 ・ 実験データ ・ 利用者履歴データ、マーケッティング 負例

  23. 多く現れる  頻出する 多く現れるものを見つけるために、多く現れるとは何か、を決める ・ データベースが項目の集まりだとする ・ パターンに対して、そのパターンを含む項目を出現という ・ 出現の数(頻出度)が閾値より大きければ、良く現れるとする (含む、の定義は、集合で行ったり、文字列の 包含、グラフの埋め込みなどで定義する) パターン XYZ {A,C,D} 項目 AXccYddZf {A,B,C,D,E}

  24. トランザクションデータベース 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人が選んだオプション) 実際のデータは、大きくて疎なものが多い パワー則、スモールワールドが成り立つ

  25. 集合の出現と頻出度 集合Kに対して: Kの出現:Kを含むTのトランザクション Kの出現集合 I(K):  Kを含むTのトランザクション全ての集合 Kの頻出度 frq(K):  Kの出現集合の大きさ  {1,2}の出現集合 ={ {1,2,5,6,7,9}, {1,2,7,8,9} } 1,2,5,6,7,9 2,3,4,5 1,2,7,8,9 1,7,9 2,7,9 2 T=  {2,7,9}の出現集合 ={ {1,2,5,6,7,9},     {1,2,7,8,9}, {2,7,9} }

  26. 頻出集合 3つ以上に含まれるもの {1} {2} {7} {9} {1,7} {1,9} {2,7} {2,9} {7,9} {1,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の定数θ個以上のトランザクションに含まれる集合  (頻出度がθ以上の集合)( θを最小サポートとよぶ) 例) データベースT の3つ以上のトランザクションに含まれる集合 T= 与えられたトランザクションデータベースと最小サポートθに対して、頻出集合を全て見つける問題を考える

  27. 頻出集合の列挙

  28. 111…1 頻出 000…0 1,2,3,4 1,2,3 1,2,4 1,3,4 2,3,4 1,3 1,4 2,3 2,4 3,4 1,2 1 3 4 2 φ 頻出パターンの単調性 ・ 頻出パターンの部分パターンは頻出 単調性が成り立つ バックトラック法を適用できる 頻出集合であるかどうかのチェック はO(||T||)時間、最高 n方向に登る 1つあたり O(||T||n)時間 多項式時間ではあるが、 ||T|| も nも大きすぎる

  29. 末広がり性の利用 ・ パターン Xの出現集合を Tとする ・X+e の出現は Xを含む(= Xの出現) Tの中で e を含むもの X+e の出現集合 ・ 出現集合を更新すれば、    データ全体を見なくて良い ・ 反復が深くなると、見るべき出現集合は小さくなる 反復が深くなるにつれ、計算時間は短くなる

  30. ・・・ 末広がり性 計算時間長 ・ バックトラックは、各反復で複数の再帰呼び出しをする 計算木は、下に行くほど大きくなる 計算時間を支配するのは一番下の数レベル 計算時間短 ほぼ全ての反復が短時間で終了 (1秒間におよそ100万個) 多くの列挙アルゴリズムが似たような再帰構造を持つので、 下のレベルの仕事を上のレベルがやれば、同様の改良ができる

  31. 最小サポートが大きい場合も ・θが大きいと、下のレベルでも多くの出現を見ることになる 末広がり性による高速化はいまひとつ ・ データベースの縮約により、下のレベルの高速化をはかる (1)前回追加したアイテムより小さいアイテムは消す (2) 現在の出現集合からできるデータベースの中で、頻出になっていないアイテムは消去する  (再帰呼び出しの中で加えられることが無いから) (3) まったく同一のトランザクションは、1つにまとめる ・ 実データだと、下のほうのレベルでは だいたい大きさが定数になる θが小さいときと速度の大きな差はない

  32. 111…1 000…0 頻出集合の問題点 ・ 面白い頻出集合を見つけようとすると、θを小さくする必要がある 大量の頻出集合が出てくる ・ 情報を失わずに、頻出集合的な、数の少ないものを    見つけるようにモデルを変えたい 1. 極大頻出集合: 他の頻出集合に含まれない頻出集合 2. 飽和集合: 出現集合が等しいものの中で極大なもの

  33. 極大頻出集合と飽和集合の例 3つ以上に含まれるもの {1} {2} {7} {9} {1,7} {1,9} {2,7}{2,9} {7,9} {1,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= ・ 頻出集合を出現集合で分類 頻出飽和集合 極大頻出集合

  34. 極大頻出集合 極大頻出集合と飽和集合 飽和集合 ・ 逆探索という探索手法で多項式時間列挙可能 ・ 離散アルゴリズムと末広がり性を用いて、高速列挙可能 ・ 出現の意味で情報の損失がない ・ ノイズが多いと出現集合が等しいものが少なくなり、    解の減少効率が悪くなる ・ 多項式時間で列挙できるかどうか、未解決 ・ クリークと同じように枝刈りをすると、高速に列挙できる ・ 数が少ないがθによる解のぶれが大きい 両者とも、1つあたりほぼ定数時間、1秒間に1~10万個

  35. 飽和集合の列挙手法 ・ 頻出集合列挙ベース - 頻出集合列挙アルゴリズムをベースに、多少無駄な計算を省く - 飽和集合のよさが出ない。計算時間の改善も少ない ・ 保存 + 枝狩り   - 見つけた解を保存し、それを用いて無駄な分枝を刈る - 計算速度はまあまあ - 解保存のためにメモリを使用し、それがひとつのネック ・ 逆探索 + データベース縮約  (LCM) - 計算効率が良い - 解保存用のメモリが不要

  36. 飽和集合の隣接関係 ・ 飽和集合から、添え字の大きい順に要素を抜いていく ・ どこかで出現集合が大きくなる ・ その出現集合の飽和集合を求める ・ こうして求めた飽和集合を、親とする (一意的に定まる) ・ 親の頻出度は必ず真に大きいので、親子関係は非巡回的   親子関係は有向根付き木を導出する

  37. 逆探索 親子関係は有向根付き木を導出する この木を深さ優先探索すれば全ての解を見つけられる ・ 探索には、子供を見つけるアルゴリズムがあれば十分 ・ 子供が1つあたり多項式時間で見つかれば、全体も多項式時間 (親に要素を1つ加えて極大をとった飽和集合が子供になる) 非巡回的な親子関係と、子供を見つける多項式時間アルゴリズムがあれば、なんでも多項式時間列挙ができる

  38. φ 2 7,9 1,7,9 2,5 2,7,9 1,2,7,9 2,3,4,5 1,2,7,8,9 1,2,5,6,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= ・ データベースの全ての 飽和集合とその親子関係 出現集合が隣接 親子関係

  39. 実験結果 Pen. M 1GHz 256MB メモリ ・実データからとった、著名なベンチマーク問題でテスト ・項目数は 1万 ~ 100万 ・ 属性数は 1000 ~ 1万 単純なスキャンは1秒で100パターン程度

  40. 計算機実験: FIMI04 ・ FIMI: Frequent Itemset Mining Implementations -ICDM (International Conference on Data Mining) サテライトワークショップで、頻出/頻出飽和/極大頻出集合列挙のプログラムコンテストを行った。2回目。3回目はなし ・去年は15、今年は8個の投稿があった ルール: - ファイルを読み、列挙してファイルに書くこと - time コマンドで時間を計測(メモリも他のコマンドで計測) - CPUを制御する命令(パイプラインなど)は使用禁止

  41. 計算機実験: FIMI04 ・計算機環境:CPU、メモリ: Pentium4 3.2GHz、1GB RAM OS、言語、コンパイラ:Linux 、C言語、gcc ・ データセット:  - 実データ: 疎、アイテム数大  - 機械学習用データ: 密、アイテム数小、規則的  - 人工データ: 疎、アイテム数大、ランダム  - 密な実データ: 超密、アイテム数小 LCM(宇野有村清見)、見事優勝

  42. 賞品は {ビール, 紙おむつ} “Most Frequent Itemset” だそうです 賞状と賞品

  43. 頻出:LCM 実データ(超疎)BMS-WebView2 飽和:LCM 極大:afopt

  44. 頻出:nonodrfp&LCM 実データ(疎)kosarak 飽和:LCM 極大: LCM

  45. 機械学習データpumsb 頻出:いろいろ 飽和:LCM&DCI-closed 極大: LCM& FP-growth

  46. 密な実データaccidents 頻出:nonodrfp &FP-growth 飽和:LCM&FP-growth 極大: LCM &FP-growth

  47. メモリ使用量pumsb 頻出 飽和 極大

  48. より複雑な構造を持つ頻出パターン

  49. 時系列データ ・ 時系列データを解析するには、項目の出現する順番が重要  - 「始まり ⇒ 終り」 と 「終り⇒始まり」 では意味がまったく違う ・ 文字列も同様 ゲノムデータ: ATGCGGCTGAGGCTGTTTT… 文書データ: 今日午前5時新宿区西新宿の交差点でトラックが… 購買履歴データ: {ビデオ}、{テープ,CD-R}、{デジカメ,電池,ケーブル}、{インク}… ・ 「部分文字列」では、パターンが少なすぎる  (見えているもの、しか見つからない)   シークエンスを見つける

  50. シークエンス ・ シークエンス: データ列に順番を変更せずに現れる要素列 例) ABCDEAB に対して、 ACEA は部分シークエンスだが、 BBA は部分シークエンスでない ・ アイテム集合シークエンス: アイテム集合の列の中に、順番を変更せず現れるアイテムセットの列 例){ビデオ}、{テープ,CD-R}、{デジカメ,電池,ケーブル}、{インク} {ビデオ}、{デジカメ,ケーブル} は部分アイテム集合シークエンス {インク}、{ケーブル} は部分アイテム集合シークエンスではない 頻出(アイテム集合)シークエンス列挙問題が研究されている (大体同じテクニックで、同じような計算時間で列挙できる)

More Related