オフライン類似項目発見問題と 複数分類アルゴリズム

74
オオオオオオオオオオオオオオ オオオオオオオオオオオオオオ オオオオオオオオオオ オオオオオオオオオオ 2009 オ 2 オ 26 オ オオ オオ オオ オオ オオオオオオオオ オオ オオ オオ オオ オオオオオオオ オオ オ オオ オ オオオオオオ

description

オフライン類似項目発見問題と 複数分類アルゴリズム. 宇野 毅明 国立情報学研究所 津田 宏治 産業総合研究所 杉山 将   東京工業大学. 2009 年 2 月 26 日. 簡単に自己紹介. 名前: 宇野 毅明 年齢・職種: 国立情報学研究所・准教授・ 38 歳 研究分野: アルゴリズム理論とその応用 - グラフアルゴリズムを中心とした離散アルゴリズム - 組合せ最適化とそれにまつわる数理 - 列挙アルゴリズムと、頻出パターンマイニングへの応用 - PowerPoint PPT Presentation

Transcript of オフライン類似項目発見問題と 複数分類アルゴリズム

Page 1: オフライン類似項目発見問題と 複数分類アルゴリズム

オフライン類似項目発見問題とオフライン類似項目発見問題と

複数分類アルゴリズム複数分類アルゴリズムオフライン類似項目発見問題とオフライン類似項目発見問題と

複数分類アルゴリズム複数分類アルゴリズム

2009 年 2 月 26 日

宇野 毅明宇野 毅明 国立情報学研究所

津田 宏治津田 宏治 産業総合研究所杉山 将杉山 将   東京工業大学

Page 2: オフライン類似項目発見問題と 複数分類アルゴリズム

簡単に自己紹介簡単に自己紹介簡単に自己紹介簡単に自己紹介

名前: 名前: 宇野 毅明年齢・職種:年齢・職種:国立情報学研究所・准教授・ 38 歳研究分野: 研究分野: アルゴリズム理論とその応用  -- グラフアルゴリズムを中心とした離散アルゴリズム  -- 組合せ最適化とそれにまつわる数理  -- 列挙アルゴリズムと、頻出パターンマイニングへの応用

最近の研究: 最近の研究: ゲノム情報学やデータマイングで出てくる巨大なデータベースの基礎的(とはいっても非常に時間のかかる)な解析を超高速で行うアルゴリズムの開発

もっとー: もっとー: 速い安い(単純)うまい

趣味(日課?): 趣味(日課?): 子供と遊ぶこと

Page 3: オフライン類似項目発見問題と 複数分類アルゴリズム

ゲノム情報学の計算面での到達点ゲノム情報学の計算面での到達点ゲノム情報学の計算面での到達点ゲノム情報学の計算面での到達点

・・ ゲノム情報学の問題、解けるようになったでしょうか?

情報学的には:情報学的には:  「基礎的なものは解けてます」 「知識発見など、複雑な問題が解けないですね」生物学的には:生物学的には:  「計算ができなくて困っています」 「難しいことより、まず簡単なことができないんです」

・・ 非常に大きなギャップがある

・・ 聞き込みをしてみると、「計算量がわかっても意味がない」「研究のフォーカスがずれている」「実装がない」「基礎的な問題が解きたいが、(モデル化、あるいはアルゴリズム的な意味で)筋が違う」 などなど(考慮する要因や、問題の定式化など)

Page 4: オフライン類似項目発見問題と 複数分類アルゴリズム

ゲノム相同領域発見問題ゲノム相同領域発見問題ゲノム相同領域発見問題ゲノム相同領域発見問題

(注)(注) ゲノム情報学の分野では、文字列の類似する部分を相同領域相同領域、類似する部分を見つける問題(類似検索)を相同相同領域検索領域検索、あるいは相同検索相同検索といいます ゲノムは種の進化や個体差、実験のエラーなどにより、同じ機能を持つものでも、異なる形でコードされていることが多い そもそも、似たものを見つけるのも重要

- - 機能が未知の遺伝子と類似する遺伝子を探す- - 異なる種のゲノムの比較 (類似部分には意味がある)- - ゲノム読み取り時に、断片配列をつなげる- - 固有な部分配列の同定をして、マーカーとして使う- - 同じく、プライマーとして PCR 増幅に使う

Page 5: オフライン類似項目発見問題と 複数分類アルゴリズム

ゲノムの読み取りゲノムの読み取りゲノムの読み取りゲノムの読み取り

ゲノムを読み取る方法1. 1. DNA を薬で溶かして、ひも状にする2.2.放射線などを当てて、短い切片にぶつぶつ切る3.3.機械で読む。 1回で 500 文字程度読める ただし、精度は 99.9%程度。 1000 文字に 1 文字くらいミスる4.4.読んだ結果をつなぎ合わせて、もとのゲノムを構築する

Page 6: オフライン類似項目発見問題と 複数分類アルゴリズム

系統樹作り系統樹作り系統樹作り系統樹作り

・・ 各生物種が、どれくらい前に分かれたものかという、進化の系統樹を推測する

・・ ゲノムが似ているものは最近分かれた種である、という推測で樹を作る

・・ いくつかのまったく違う生物から大まかな樹を作るものと、ターゲットとなる種を(例えばイネとか)決めて、その中でどのように細かい種が分かれていったかを調べるものがあるようだ

Page 7: オフライン類似項目発見問題と 複数分類アルゴリズム

類似性のモデル類似性のモデル類似性のモデル類似性のモデル

・・ ゲノムの変化(変異、あるいは実験での読み取りエラー)は、局所的には、 1 文字単位で起きる

・・ 既存研究では、文字列の尺度で類似度を判定している  (コスト付き)編集距離  (ときどき)ハミング距離

・・ 両者ともに、数理的に美しい尺度であり、計算も容易 - - 長さ n の文字列の比較     ハミング距離: O(n) 時間、 編集距離 O(n2) 時間

・・ 実際には、大域的な入れ替わり構造がある

Page 8: オフライン類似項目発見問題と 複数分類アルゴリズム

最短路問題最短路問題最短路問題最短路問題

・・ 2つのゲノムに対して、グリッド型のネットワークを作る

ATGCAAGCAT

横移動  : 左側に空白を挿入縦移動  : 下側に空白を挿入斜め移動 :  空白無し(同じ文字ならコスト0)

ACGTAA G C A T

ATGCA*A*GCAT

しかし、巨大な n の2乗は果てしなく大きい

しかし、巨大な n の2乗は果てしなく大きい

Page 9: オフライン類似項目発見問題と 複数分類アルゴリズム

相同検索の応用と困難さ相同検索の応用と困難さ相同検索の応用と困難さ相同検索の応用と困難さ

・・ 相同検索は、ゲノム解析における中心的な道具 計算のうち半分以上は相同検索とも…

・ ・ しかし、類似検索なので計算資源が必要 現在は並列計算にたよっている

・・ 類似検索なので、基本的に2分探索のような手法は使えない ソフトにより性能は異なるが、 100万文字の配列(文字列)2つを比較するのにもかなり(数分から数時間)かかる 染色体のような、数億文字ある配列の比較には多大な計算資源が必要 (あるいはヒューリスティックでやる)もし、相同領域を短時間で行えるようになるなら、

それがゲノム研究に与える影響は大きいもし、相同領域を短時間で行えるようになるなら、

それがゲノム研究に与える影響は大きい

Page 10: オフライン類似項目発見問題と 複数分類アルゴリズム

相同領域発見の研究相同領域発見の研究(アルゴリズム的)(アルゴリズム的)相同領域発見の研究相同領域発見の研究(アルゴリズム的)(アルゴリズム的)

・・ 2つ文字列の編集距離(挿入/削除/変化の最小数)は最短路アルゴリズムを使って、ある程度高速に求められる    2つの文字列が似ていないと有効でない    入れ替わり構造は発見できない

・ ・ BLAST を始めとする相同発見アルゴリズム(例えば 11 文字の)短い完全一致領域を見つけ、そこを種として検索    文字列が長いと、大量の完全一致がある   11 文字を長くすると精度が落ちる    良く現れる単語は候補から除外、遺伝子部分だけ注目    といった処理をしているようだ

・ ・ 類似検索    大量のクエリを実行しなければならない    類似検索は通常、完全一致検索より大幅に時間がかかる

Page 11: オフライン類似項目発見問題と 複数分類アルゴリズム

 アルゴリズム理論からのアプローチ アルゴリズム理論からのアプローチ アルゴリズム理論からのアプローチ アルゴリズム理論からのアプローチ

・・ 計算の高速化において、並列計算は強力であるが、コストがかかるのが欠点 (プログラミングの複雑さも含め)

・・ アルゴリズム理論による高速化は、問題の大きさに対する計算時間の増加を、計算手法の設計変更により、抑える

データが巨大になるほど、アルゴリズム改良の加速率は上がるデータが巨大になるほど、アルゴリズム改良の加速率は上がる

100 項目2-3倍

100万項目

10000倍

アルゴリズム理論から、相同領域発見のモデルに取り組んでみる

アルゴリズム理論から、相同領域発見のモデルに取り組んでみる

Page 12: オフライン類似項目発見問題と 複数分類アルゴリズム

アルゴリズムからモデル・定式化へアルゴリズムからモデル・定式化へアルゴリズムからモデル・定式化へアルゴリズムからモデル・定式化へ

・・ 通常、モデル化(定式化)とアルゴリズムは、解ける問題と解きたい問題のすりあわせして、うまい落としどころを見つける

・ ・ しかし、相同性検索では、状況が少し違うように見える   「うまく解ける問題」の単純な拡張 or ヒューリスティック手法

・ ・ 完全一致の検索がうまくできる、うまく評価できる類似性の尺度がある、という2つを単純に組み合わせただけ

・ ・ アルゴリズムの視点から問題の定式化を見直せば、よりうまく解けるモデルが提唱できるかも

問題問題 アルゴリズムアルゴリズム

Page 13: オフライン類似項目発見問題と 複数分類アルゴリズム

何がほんとに似ているか何がほんとに似ているか何がほんとに似ているか何がほんとに似ているか

・・ 生物系の研究者に聞くと、編集距離は(距離が大きいと)研究者の直感に対応していないようだ    同じ編集距離(ハミング距離)でも、似てる感が大きく違う

ATGCATGCATGCATGCATATATATATATATATATGCATGC ATGCATGC AATTGGCCAATTGGCCAATTAATTAATTAATTAATTGGCCAATTGGCC ATGCATGCATGCATGCGCGCGCGCGCGCGCGCATGCATGC ATGCATGC AAAAGGGGAAAAGGGGAAAAAAAAAAAAAAAAAAAAGGGGAAAAGGGG

・ ・ どうも、部分的に集中して似てるところが効いているようだ・ ・ あまり短い部分だけが似ていても、意味がないようだ

・ ・ さらに、実用上は「似ている部分が見つかればいい」ので、解の中に「似ていない部分が混ざっていてもいい」(見つけ損ないはダメだが、偽者を見つけても大きな被害はない)

Page 14: オフライン類似項目発見問題と 複数分類アルゴリズム

短い文字列の比較短い文字列の比較短い文字列の比較短い文字列の比較

問題:問題: 各項目が同じ長さ l の短い文字列( 50 文字程度)であるデータベースを入力したときに、文字列のペアで異なり数(ハミング距離)が d 文字以下である組を全て見つけよ

・ ・ ゲノム全体から各ポジションを先頭とする長さ l の部分文字列を全て集めてこの問題を解くと、似ている部分列が全て見つかる(ハミング距離の意味で似ている部分文字列)

ATGCCGCGGCGTGTACGCCTCTATTGCGTTTCTGTAATGA  ...

ATGCCGCGGCGTGTACGCCTCTATTGCGTTTCTGTAATGA  ...

・・  ATGCCGCG と  AAGCCGCC・・  GCCTCTAT と  GCTTCTAA・・  TGTAATGA と  GGTAATGG     ...

・・  ATGCCGCG と  AAGCCGCC・・  GCCTCTAT と  GCTTCTAA・・  TGTAATGA と  GGTAATGG     ...

Page 15: オフライン類似項目発見問題と 複数分類アルゴリズム

問題の難しさ問題の難しさ問題の難しさ問題の難しさ

・・ 全ての項目が同じだと、 O( 項目数 2) 個の出力がある  l を定数だと思えば、単純な全対比較のアルゴリズムが     計算量の意味では最適になる  計算量理論的には面白くない問題

・・ 現実には、やたらと似ているものを比較しても意味が無い  出力は少ないと仮定する

ATGCCGCGGCGTGTACGCCTCTATTGCGTTTCTGTAATGA  ...

ATGCCGCGGCGTGTACGCCTCTATTGCGTTTCTGTAATGA  ...

・・  ATGCCGCG と  AAGCCGCC・・  GCCTCTAT と  GCTTCTAA・・  TGTAATGA と  GGTAATGG     ...

・・  ATGCCGCG と  AAGCCGCC・・  GCCTCTAT と  GCTTCTAA・・  TGTAATGA と  GGTAATGG     ...

Page 16: オフライン類似項目発見問題と 複数分類アルゴリズム

基本のアイディア:文字列の分割基本のアイディア:文字列の分割基本のアイディア:文字列の分割基本のアイディア:文字列の分割

・・ 各文字列を、 k ( >d ) 個のブロックに分割する・・   k-d 個のブロックの場所を指定したときに、そこがまったく等しくて、かつハミング距離が d 以下となるようなペアを全て見つけよ、という部分問題を考える

各文字列の k-d 個のブロックをつなげてキーにし、ソートをする。同じものはグループになる。それを総当りで比較すればよい・ ・   k-d 個のグループ数が大きければ、平均的にグループのメンバー数は小さくなるので、総当りで比較してもたいしたことない

Page 17: オフライン類似項目発見問題と 複数分類アルゴリズム

全ての場合を尽くす全ての場合を尽くす全ての場合を尽くす全ての場合を尽くす

・・ 先の部分問題を、全ての場所の組合せについて解く 2つの文字列が似てれば、必ずどこか k-d 個のブロックが同じ 必ずどれかの組合せで見つかる

・・ 部分問題は、バケツソートや Radixソートで速く解ける・ ・ 組合せの数は kCd 。の k=5 で d=2 なら 10通り

     ソート 10回 + α で解ける。全対比較よりもかなり高速

・・各文字の数から、1文字比較した場合に等しくなる確率を求め、適切な分割数 k を使用する

Page 18: オフライン類似項目発見問題と 複数分類アルゴリズム

例題例題例題例題

・ ・ ABC 、 ABD 、 ACC 、 EFG 、 FFG 、 AFG 、 GAB のペアでハミング距離が 1以下のものを求めよ

A BCDEA BDDEA DCDEC DEFGC DEFFC DEGGA AGAB 

A BCDEA BDDEA DCDEC DEFGC DEFFC DEGGA AGAB 

ABCDEABDDEADCDECDEFGCDEFFCDEGGAAGAB

ABCDEABDDEADCDECDEFGCDEFFCDEGGAAGAB

A BC DEA BD DEA DC DEC DE FGC DE FFC DE GGA AG AB

A BC DEA BD DEA DC DEC DE FGC DE FFC DE GGA AG AB

ABC DEABD DEADC DECDE FGCDE FFCDE GGAAG AB

ABC DEABD DEADC DECDE FGCDE FFCDE GGAAG AB

Page 19: オフライン類似項目発見問題と 複数分類アルゴリズム

Computation TimeComputation TimeComputation TimeComputation Time

・ ・ The classification is done by a radix sort, or simply bucket sort,

in O(l |S|) time

・ ・ By recursively classify the blocks one-by-one to sharing the classification of the same position of blocks, reduces to O((l/k) |S|)

・ ・ Time for classification is O((l/k) |S| kCd) in total

・ ・ Time for pairwise comparison depends on the group size

we choose a good k before execution of the algorithm

・ ・ When k=l, any pair in a group is similar

The time complexity is O((|S| + dN) kCd)

Page 20: オフライン類似項目発見問題と 複数分類アルゴリズム

重複の回避重複の回避重複の回避重複の回避

・ ・ まったく同じ文字列があると、全てのブロックの組合せで見つかるので、 kCd 。回出力される

   重複を回避する必要がある

・ ・ 各見つかったペアについて、選択されていないブロックが選択したブロックの間にあったら出力しないようにする   等しいブロックが一番左端によっている場合にのみ出力

メモリに解を保持せずとも、重複が回避できるメモリに解を保持せずとも、重複が回避できる

Page 21: オフライン類似項目発見問題と 複数分類アルゴリズム

k k の選択の選択k k の選択の選択

・ ・ 一番良い k をあらかじめ計算するのは不可能(と思われる)・・ どの k が良いか推定する問題を解いて、選ぶ

・・ 2 つの文字をランダムに選んだときの一致する確率を元に、l/k 個の文字を使ってグループ分けしたときの、各グループのメンバーの平均値を計算

・ ・ それを元に、計算コストを算定する。これを全ての k について行ってベストなものを選ぶ

Page 22: オフライン類似項目発見問題と 複数分類アルゴリズム

なぜなぜ BLASTBLAST より速くできるのか?より速くできるのか?なぜなぜ BLASTBLAST より速くできるのか?より速くできるのか?

・・オリジナルの BLAST は、連続して 11 文字同じところを見つける   大雑把に言って、分類精度は、 4 の 11乗 ≒ 400万   100万塩基あたりから苦しそう

・ ・ 今回の手法は、例えば 30 文字中間違い 3 文字(連続して 7 文字同じ、と同じ精度)で 6 個に分割するなら、  大雑把に、分類精度は、 4 の 15乗 ≒ 10億を 20回   2億塩基あたりから苦しいが、そうなったら分割数を 7 にすればいい

ただし、 (短い配列の)検索は苦手(全部の比較と一部の比較の速度があまり変わらな

い)

ただし、 (短い配列の)検索は苦手(全部の比較と一部の比較の速度があまり変わらな

い)

Page 23: オフライン類似項目発見問題と 複数分類アルゴリズム

なぜ高速化できるのか?なぜ高速化できるのか?なぜ高速化できるのか?なぜ高速化できるのか?

・・チェックするマスを図示してみる

・・アクセスするマス目の面積が大きく違う・・グループの数が増えると、より速くなる

Page 24: オフライン類似項目発見問題と 複数分類アルゴリズム

イメージ的にはイメージ的にはイメージ的にはイメージ的には

・・ 似ているもののペアを探す問題は、マトリクスのセルの中で必要なものを全て見つける問題・・ 全対比較は、マトリクスのセルをすべて見ていることに対応・・ 分類によるアルゴリズムは、分類を順々にしていると思えば、木構造の探索を行っていることに対応

Page 25: オフライン類似項目発見問題と 複数分類アルゴリズム

Exp: fix length to 20, and change distance Exp: fix length to 20, and change distance ddExp: fix length to 20, and change distance Exp: fix length to 20, and change distance dd

0.1

1

10

100

1000

10000

200

700

2000

7000

22953length(1000lett.)

CPU time(sec)

d=0d=1d=2d=3

Prefixes of Y-chromosome of Human, on a note PC with Pentium M1.1GHz, 256MB RAM

Page 26: オフライン類似項目発見問題と 複数分類アルゴリズム

Exp.: fix length to 30, and change distance Exp.: fix length to 30, and change distance ddExp.: fix length to 30, and change distance Exp.: fix length to 30, and change distance dd

Web texts written in Japanese, Core2duo, E8400 3GHz, 4GB RAM

Japanese text

0.1

1

10

100

1000

1366 2556 5272 10637 21046 40915 letters (1000)time,

tim

e/#p

airs

(sec

)

30,0

30,1

30,2

30,3

30,4

30,0 ave

30,1 ave

30,2 ave

30,3 ave

30,4 ave

Page 27: オフライン類似項目発見問題と 複数分類アルゴリズム

実験:長さ実験:長さ 2020 文字で異なり数 文字で異なり数 dd を変化を変化実験:長さ実験:長さ 2020 文字で異なり数 文字で異なり数 dd を変化を変化

0.1

1

10

100

1000

10000

200

700

2000

7000

22953

(1000 )長さ 文字

()

計算

時間秒

d=0d=1d=2d=3

人の Y染色体から部分配列をとって実験。 PenM のノート PC

Page 28: オフライン類似項目発見問題と 複数分類アルゴリズム

長さ 長さ l l が大きい場合が大きい場合長さ 長さ l l が大きい場合が大きい場合

・・ l および k が大きくなると、ソートの回数が増えるため、計算は遅くなる 複数分類法と同じアイディアで高速化できる

・・ 長さ l の文字列を h 個に分割する 2つの文字列の距離が k 以下なら、必ず距離が k/h 以下のブロックが存在

・・   k の選択と同じように、計算コストを算定して最適な h を選ぶ

Page 29: オフライン類似項目発見問題と 複数分類アルゴリズム

比較する部分文字列の省略比較する部分文字列の省略比較する部分文字列の省略比較する部分文字列の省略

・ ・ 少し長めの類似構造を調べたいときには、比較する部分文字列を省略しても効果がある

- - 比較する文字列 A と B (両者が同じこともあり得る)から長さ l の文字列を取るときに、適当な k を定めて、 A の部分文字列のうち k/l 、 B の 1/k を選び出して比較- - どのような(少し長い)部分列の組に対しても、 1/l 程度の比較される部分列を含む

A

B

任意の部分列の組に対して

このように部分列が比較される

Page 30: オフライン類似項目発見問題と 複数分類アルゴリズム

分割の効能分割の効能分割の効能分割の効能

・ ・ 1000 文字でハミング距離 100以下の組を見つけるとする・・ k=103 ブロックに分割とすると、 103 個の中から 3 個を選ぶ組合せはおよそ 100*100*100/6 で 15万通りくらい

・・ 3 つのブロックの文字数は およそ 29 文字。 ( 文字種 ^29) 程度のグループに分類

・ ・ h=10 とし、 k=14 としてその中から 6 個を選ぶとすると、ソート回数は 14*13*12*11/4*3*2*1 =およそ 1000通り(コストが 150 分の 1 ×10回)

・ ・ ブロック 4 つの文字数はおよそ 29 文字なので、グループ数は同じ

Page 31: オフライン類似項目発見問題と 複数分類アルゴリズム

文字列の比較だけでなく文字列の比較だけでなく文字列の比較だけでなく文字列の比較だけでなく

・ ・ 今まで、文字列の問題だけを考えてきたが、別に文字列にこだわる必要はない -  - 行列の部分行列 -  - 離散ベクトル(行列)データの比較

・ ・ ベクトルデータを離散化して比較、 01 ベクトルの比較、画像の部分比較などに使える 大規模データに対して近傍グラフが短時間で作れる!

0101000011110100001111001010100000110000・・・・

10, 143, 29, 13

33, 29, 143, 35

1, 76, 33, 24

132, 7, 24, 24

・・・

Page 32: オフライン類似項目発見問題と 複数分類アルゴリズム

Visualization by Dot PlotVisualization by Dot PlotVisualization by Dot PlotVisualization by Dot Plot

・ ・ To capture the global similarity, visualize it by drawing a figure・ ・ Consider a matrix, whose cell corresponds to pair of (long) substrings of two strings

・ ・ Intensity of a cell is given by the number of similar substrings taken from the corresponding (long) substrings Strings taken from all positions

・ ・ Long similar substringswill be seen as diagonal lines

string A

Str

ing

B

Page 33: オフライン類似項目発見問題と 複数分類アルゴリズム

ゲノムの比較 ゲノムの比較 (1)(1)ゲノムの比較 ゲノムの比較 (1)(1)

ヒト 21番染色体とチンパンジー 22番染色体の比較・・長さ 3000万の配列 ×2 から、 30 文字の切片を 3000万個取る・ ・ 似ている部分配列のペアの数に応じて、各ドットの明るさを変える

・ ・ 白い部分が「似ている可能性のある部分」・ ・ 黒い部分が「 (絶対に ) 似ていない部分」

・ ・ 格子模様は、繰り返し  配列を拾っている

ヒト 21番染色体

チンパンジー

22

番染色体

PC で 1 時間で可能

Page 34: オフライン類似項目発見問題と 複数分類アルゴリズム

Dot Plot for Long Genome SequenceDot Plot for Long Genome SequenceDot Plot for Long Genome SequenceDot Plot for Long Genome Sequence

・・  The comparison of mouse 11th chromosome and human 17th chromosome is … not visible

・ ・ Huge amount of noisy similar pairs hide everything

・ ・ By restricting #output pairs to 10, for each string, we can see something

Still noisy, and lose completeness

2 min by PC2 min by PC

Mouse 11th chr.

Hu

man

17th

ch

r

Page 35: オフライン類似項目発見問題と 複数分類アルゴリズム

・ ・ Even if a cell includes many pairs, it does not always represent the similarity

・ ・ Pairs composing diagonal a line are important Pairs distributed are not Pairs concentrated into a small area are also not

・・ There would be many models representing “pairs on a line”, but we use a simple one

Same IntensitySame IntensitySame IntensitySame Intensity

Page 36: オフライン類似項目発見問題と 複数分類アルゴリズム

・ ・ One of simple models is to consider the number of pairs in a diagonal long box, (of length α, and width β) If there are pairs of a certain number h in a box, we consider they are a part of a line

・ ・ On the other hand, if such pairs are in quite small area, we would say they are not a line

・ ・ By removing pairs not composing a line, and replace pairs in a box by a point, we can simplify the figure

Box FilteringBox FilteringBox FilteringBox Filtering

Page 37: オフライン類似項目発見問題と 複数分類アルゴリズム

・ ・ 2つの文字列の類似を「似ている短い区間がいくつかある」で定義 (距離ではなく、似ているかいないかの2値になる)

・ ・ この条件は、ある意味で、既存の類似性の条件を弱めている

・・既存の意味での類似性の下界にもなる例:長さ 3000 でハミング距離が 10%弱( 間違い 290) なら、長さ 30 で間違い 2 の部分列を、少なくとも 3つは含む

・・ 離れた位置にある部分が似ていても全体が似ていることにはならないので、ずれの最大を β で制限する ・・ 2つの文字列が似ている部分文字列を持つ   「長さ α 、幅 β の領域に閾値以上の類似部分文字列のペアがある」ということになる

新しいモデル新しいモデル新しいモデル新しいモデル

Page 38: オフライン類似項目発見問題と 複数分類アルゴリズム

・・類似部分文字列を持つ長さ α 幅 β の領域をどう見つけるか ペア長さ α の部分文字列を全対比較 2乗の時間かかる 別の方法を考えないと、とても解けない

・ ・ 最初に、短くて似ている部分文字列のペアを全部見つけておく

・ ・ 幅2 β の斜めの線に沿って、長さ α の領域に閾値以上のペアがあるところを探す

・ ・ 斜め線を β ずつずらして、全ての部分について似ている部分を探す

・ ・ 長さ α 幅 β の似ている部分列は必ず見つかる ( そうでないものも発見 )・ ・ 短くて似ている部分列を効率良く見つければよい

効率良く計算できるか効率良く計算できるか効率良く計算できるか効率良く計算できるか

Page 39: オフライン類似項目発見問題と 複数分類アルゴリズム

Dot Plot for Long Genome SequenceDot Plot for Long Genome SequenceDot Plot for Long Genome SequenceDot Plot for Long Genome Sequence

・・  Again, the comparison of mouse 11th chromosome and human 17th chromosome

・ ・ We set the width, length, #pairs of the box to 3000, 300, 3 similar pairs hide everything

・ ・ We could erase almostthe noise pattern

・・ In high resolution, we can remove the noise much

3 min by PC3 min by PC

Mouse 11th chr.

Hu

man

17th

ch

r

Page 40: オフライン類似項目発見問題と 複数分類アルゴリズム

Dot Plot for Long Genome SequenceDot Plot for Long Genome SequenceDot Plot for Long Genome SequenceDot Plot for Long Genome Sequence

Comparison mouse X chr. and human X chr.

15 min15 min by PCby PC

Mouse X chr.

Hu

man

X

chrNote:

BLASTZ:BLASTZ: 7days

MURASAKI:MURASAKI:

2-3 hours with

small error ratio

Page 41: オフライン類似項目発見問題と 複数分類アルゴリズム

ゲノムの比較 ゲノムの比較 (3)(3)ゲノムの比較 ゲノムの比較 (3)(3)

バクテリアを 30 種ABC順の取得しつなげて比較

・・ 一度に複数のゲノムを比較できる

PC で 1 時間で可能

Page 42: オフライン類似項目発見問題と 複数分類アルゴリズム

Superimpose Many Images by ColoringSuperimpose Many Images by ColoringSuperimpose Many Images by ColoringSuperimpose Many Images by Coloring

・ ・ We can superimpose the comparisons between a fixed string and the other strings, by using many colors

6 hours by a PC

all chr’s of mouse (all start form leftmost)

Hu

man

22n

d c

hr

Page 43: オフライン類似項目発見問題と 複数分類アルゴリズム

まとめまとめまとめまとめ

・ ・ 類似する部分列をいくつ含むかに着目した新しい類似の尺度を提案した

・ ・ 部短時間で類似する部分列を全て見つけ出す高速なアルゴリズムを提案

・ ・ 実際にゲノムで比較を行い、既存の方法よりはるかに短時間である程度の保証をもつ解を得た

 -- ヒト、チンパンジー、マウスの染色体の比較

             バクテリアゲノムの多対多比較

・・ツールとしての完成度を高める( UI 、解の圧縮など)・・機能の追加 (特にアセンブリ)

・・ツールとしての完成度を高める( UI 、解の圧縮など)・・機能の追加 (特にアセンブリ)

Page 44: オフライン類似項目発見問題と 複数分類アルゴリズム

類似部分文字列による類似部分文字列による

ミスマッチ頻出文字列発見ミスマッチ頻出文字列発見類似部分文字列による類似部分文字列による

ミスマッチ頻出文字列発見ミスマッチ頻出文字列発見

2008 年 11 月

宇野 毅明  宇野 毅明  (国立情報学研究所       &総合研究大学院大学)

Page 45: オフライン類似項目発見問題と 複数分類アルゴリズム

頻出文字列頻出文字列頻出文字列頻出文字列

・ ・ (巨大な)文字列データから、頻出する文字列を見つけたい (頻出する=あちこちに現れる)

・ ・ suffix array や radix sort などで、ほぼ線形時間で、多数現れる部分文字列は見つけられる (閾値以上の回数現れる者の中で極大なもの、といった設定も OK )

・ ・ しかし、アイテムセットのように、「現れる」ことが包含関係で表されているものに比べると、自由度が低い ( = きっちりと全体が現れるものしか見つけられない)

・ ・ ゲノムなどエラーのあるデータ、ひな形や定型文書のような一部変化するデータでは、今ひとつ

Page 46: オフライン類似項目発見問題と 複数分類アルゴリズム

あいまい性の導入あいまい性の導入あいまい性の導入あいまい性の導入

・ ・ エラーや、部分的な変化に対応するには、厳密に一致する文字列だけでなく、曖昧マッチングの意味であちこちに現れる文字列を見つける必要がある

・ ・ 曖昧性の尺度は、ハミング距離、編集距離、固定回数のギャップ、マルチプルアラインメントのスコアが小さい、など

・ ・ しかし、こうすると、短い頻出文字列がたくさん存在してしまう

・ ・ いくら高速なアルゴリズムを作っても、これらを全部列挙するのは無理だし、そもそも見つけてもうれしくない

・ ・ 困った困った、ので、違うアプローチを考える

Page 47: オフライン類似項目発見問題と 複数分類アルゴリズム

類似部分文字列を使う類似部分文字列を使う類似部分文字列を使う類似部分文字列を使う

・ ・ 文字列パターン A が、データ文字列 S のあちこちに現れるとする つまり、 {x1,…,xn}番目から始まる部分文字列と A が似ている

・ ・ このとき、 x1,…,xn 番目から始まる部分文字列は、互いに似てる

・ ・ 文字列パターンを見つけるのは難しいので、似ている部分文字列のグループを見つけよう   文字列パターンの出現位置集合の候補になるだろう

・ ・ 当然、似ている部分文字列の組を見つけても、それが文字列パターンの出現集合になっているとは限らない

Page 48: オフライン類似項目発見問題と 複数分類アルゴリズム

多数決による文字列パターン決め多数決による文字列パターン決め多数決による文字列パターン決め多数決による文字列パターン決め

・ ・ 出現に対応する文字列パターンは、似ている文字列を重ね合わせて、多数決で勝つ者を選んで決めよう

ABCDHFGAABDEFHABCDEFHBBHDEGHABHDHFGAAHDEFG-------AB*DEF[GH]

Page 49: オフライン類似項目発見問題と 複数分類アルゴリズム

似ているもののグループ化は、「似ている者の間に枝がある」グラフの中からクリーク、特に極大なクリークを見つければいいでしょう。

グループは極大クリークでグループは極大クリークでグループは極大クリークでグループは極大クリークで

・ クリーク: 全ての頂点間に枝がある部分グラフ (全てのペアが似ている)・ 指数的に沢山あるので、極大なものだけでいいでしょう

Page 50: オフライン類似項目発見問題と 複数分類アルゴリズム

似てる文字列の発見似てる文字列の発見似てる文字列の発見似てる文字列の発見

問題:問題: 各項目が同じ長さ l の短い文字列( 50 文字程度)であるデータベースを入力したときに、文字列のペアで異なり数(ハミング距離)が d 文字以下である組を全て見つけよ

・ ・ 長い文字列の比較には、各ポジションを先頭とする長さ l の部分文字列を全てに対してこの問題を解く。(似ている部分列はペアを沢山含むところとして見つかる)

ATGCCGCGGCGTGTACGCCTCTATTGCGTTTCTGTAATGA  ...

ATGCCGCGGCGTGTACGCCTCTATTGCGTTTCTGTAATGA  ...

・・  ATGCCGCG と  AAGCCGCC・・  GCCTCTAT と  GCTTCTAA・・  TGTAATGA と  GGTAATGG     ...

・・  ATGCCGCG と  AAGCCGCC・・  GCCTCTAT と  GCTTCTAA・・  TGTAATGA と  GGTAATGG     ...

Page 51: オフライン類似項目発見問題と 複数分類アルゴリズム

・・ 追加できる頂点を効率よく見つけたい

追加できる クリークの全ての頂点に隣接あらかじめ、追加できる候補を調べておくと楽あらかじめ、追加できる候補を調べておくと楽

・ さらに、新しい頂点を1つ追加したとき、候補に残る頂点 新しい頂点に隣接

候補の集合の更新は、候補の集合の更新は、追加する頂点に隣接する頂点と、追加する頂点に隣接する頂点と、候補の共通部分をとればいい候補の共通部分をとればいい

追加できる候補を絞り込む追加できる候補を絞り込む追加できる候補を絞り込む追加できる候補を絞り込む

クリーク一個あたり、頂点の次数の時間

Page 52: オフライン類似項目発見問題と 複数分類アルゴリズム

例題例題例題例題

・・このグラフで実際の親子関係を見てみる

4455

111199 8877

6633

1122

10101212

1 , 21 , 2

1 , 3 , 51 , 3 , 5

3 , 5 , 7 , 9 , 123 , 5 , 7 , 9 , 12

9 , 119 , 11

11

2 , 4 , 6 , 82 , 4 , 6 , 8

6 , 8 , 106 , 8 , 10

10

4 , 8 , 114 , 8 , 11

11

8 , 10, 118 , 10, 11

11

10, 1210, 12

12

Page 53: オフライン類似項目発見問題と 複数分類アルゴリズム

末広がり性末広がり性末広がり性末広がり性

・・ バックトラックは、各反復で複数の再帰呼び出しをする 計算木は、下に行くほど大きくなる 計算時間を支配するのは一番下の数レベル

多くの列挙アルゴリズムが似たような再帰構造を持つので、下のレベルの仕事を上のレベルがやれば、同様の改良ができ

多くの列挙アルゴリズムが似たような再帰構造を持つので、下のレベルの仕事を上のレベルがやれば、同様の改良ができ

ほぼ全ての反復が短時間で終了( 1秒間におよそ 100万個)

ほぼ全ての反復が短時間で終了( 1秒間におよそ 100万個)

・・・・・・

次数大きい頂点

次数大きい頂点

次数小さい頂点

次数小さい頂点

Page 54: オフライン類似項目発見問題と 複数分類アルゴリズム

新旧アルゴリズムの比較新旧アルゴリズムの比較新旧アルゴリズムの比較新旧アルゴリズムの比較

 

既存と提案手法の比較

0

5000

10000

15000

20000

25000

30000

頂点数

1(

)万

個あ

たり

の計

算時

間秒

 r=10既存 r=10提案 r=30既存 r=30提案

次数巨大あり

Page 55: オフライン類似項目発見問題と 複数分類アルゴリズム

実験してみると実験してみると実験してみると実験してみると

・ ・ クリーク数は意外と小さく、大きさ/個数のヒストグラムも特殊               (ロングテールよりテールが立っている)                                      ・ ・ 同じもの、続いているものが沢山ある   GAATAGAATCGAATGGAATGGCATCGAATGGAATGGAATG   AATAGAATCGAATGGAATGGCATCGAATGGAATGGAATGG   ATAGAATCGAATGGAATGGCATCGAATGGAATGGAATGGA   TAGAATCGAATGGAATGGCATCGAATGGAATGGAATGGAA   AGAATCGAATGGAATGGCATCGAATGGAATGGAATGGAAT   GAATCGAATGGAATGGCATCGAATGGAATGGAATGGAATG   GGAATAGAATGGAATGGAGTGTAATGGAAAGATATCGAAT   GAATAGAATGGAATGGAGTGTAATGGAAAGATATCGAATG   AATAGAATGGAATGGAGTGTAATGGAAAGATATCGAATGG   ATAGAATGGAATGGAGTGTAATGGAAAGATATCGAATGGA   TAGAATGGAATGGAGTGTAATGGAAAGATATCGAATGGAA ・・・・・

・ ・ 同じものは1つに、続いているものはつなげてしまいたい

Page 56: オフライン類似項目発見問題と 複数分類アルゴリズム

重なりをつなげる重なりをつなげる重なりをつなげる重なりをつなげる

・ ・ 重なっているクリークとは

{ 1, 6, 30, 51, 85 } { 2, 31, 52, 74, 86 }

のように、中身を1つずらしたら多くの位置が同一になるもの

・ ・ クリークの集合と、クリークの中身を1増じたものを比較し、共通部分が大きいものの組を見つけると、重なるものの検出ができる

・ ・ 共通部分の大きいペアの発見    大きさ2の頻出集合発見なので、簡単・短時間

Page 57: オフライン類似項目発見問題と 複数分類アルゴリズム

ヒューリスティックによるつなげ方ヒューリスティックによるつなげ方ヒューリスティックによるつなげ方ヒューリスティックによるつなげ方

・ ・ 重なり方の関係は、有向グラフになる・ ・ クリークに対して、そのクリークが出枝で隣接するクリークの集合を、続きクリーク集合と呼ぶ

・ ・ つなげるときには ①① 入り次数が0の頂点 v を見つけ、 v と続きクリーク集合をある程度(半分以上)共有するクリークの集合を見つける( S とする) ②② S の続きクリーク集合の和集合を求める。 S のクリークの続きクリーク集合の最大値が、和集合の半分より小さければ、分岐していると見なす。(そこまでの共通部分を出力) ③③ 分岐していなければ、 S を和集合として ②② へ

Page 58: オフライン類似項目発見問題と 複数分類アルゴリズム

つながった解つながった解つながった解つながった解・ ・ ヒト Y染色体頭から 200万文字、 50 文字中違い 2 、頻出度 10

   GTGGCGGGCGCCTGTAGTCCCAGCTACT#GGGAGGCTGAGGCAGGAGAAT   GTGGTTTTGATTTGCATTTCTCTGATGGCCAGTGATGATGAGCATTTTTTCATGTGT   GTTTCTTTTGCTGTGCAGAAGCTCTTTAGTTTAATTAGATCCCATTTGTCAATTTTG   GTTTTTTTCTTGTAAATTTGTTTGAGTTCATTGTAGATTCTGGATATTAGCCCTTTGT     CAGATGAGTAGGTTGC   TAAAAAATGATAAAGGGGATATCACCACCGATCCCACAGAAATACAAACTACCA   TAAGTCTTTAATCCATCTTGAATT#ATTTTTGTATAAGGTGTAAGGAAGG   TACCATTCAGGACATAGGCATGGGCAAGGACTTCATGTCTAAAACACCAAAA

・ ・ 全部で 122 個。この手の問題としては、解の数が非常に小さい

Page 59: オフライン類似項目発見問題と 複数分類アルゴリズム

つながった解2つながった解2つながった解2つながった解2・ ・ 日本語 webテキスト、 100万文字、 20 文字中違い 2 、頻出度 20

# まじめに恋人 # 結婚相手を探している # のための出会い系サイトです。## ・ # 105(フリーダイヤル)052・48 # ・75 # 7##700 1,000 2,000 3,000 10,000円以#####All  # ights  # eserved. ##・・・・・・・・・・・・・・・・・・・・ス腕時計激安通販|格安最安値通販へ【ポールスミス 腕時計 PS #0金土123456789101112131415161718192   02122232425262728293031年10月200 #年09月200 #年08月200名:女性1 #名のご参加で、5組の成立となりました。お

・・解は 38 個

Page 60: オフライン類似項目発見問題と 複数分類アルゴリズム

まとめまとめまとめまとめ

・ ・ 類似する文字列を高速発見するアルゴリズムを使って、ミスマッチ頻出部分文字列を見つける問題を高速で解く方法を提案しました

・ ・ 面白いものそんなに多くなく出てくるので、実にいい感じです

・ ・ 他のものでも(共通部分が取れるものなら、ある程度)使えると思います

・ ・ さあ、がんばって実験と論文書きしましょう

Page 61: オフライン類似項目発見問題と 複数分類アルゴリズム

大規模近傍グラフの高速近似作成大規模近傍グラフの高速近似作成

宇野 毅明  宇野 毅明  (国立情報学研究所        &総合研究大学院大学)津田 宏治  津田 宏治  (産業総合研究所         &マックスプランツ研究所)杉山 将    杉山 将    (東京工業大学)

2008 年 12 月 26 日 T-primal

Page 62: オフライン類似項目発見問題と 複数分類アルゴリズム

基本的な問題設定基本的な問題設定基本的な問題設定基本的な問題設定

・・ データがあり、その中から似ているものの組を見つける、という問題設定

・・ データの項目数の2乗の時間をかければ解ける。つまり多項式性は明らか 項目数が巨大で、2乗では動かない状況を考えよう

・・ 最悪の場合、出力の大きさからして2乗 出力は少ないと仮定しよう(項目数の ××倍、という感じ)

・・ 実問題ではけっこうよく見られるケース  実問題の特徴を生かした計算方法を考えよう

項目

項目

Page 63: オフライン類似項目発見問題と 複数分類アルゴリズム

データの種類データの種類データの種類データの種類

・・ データ/尺度はいろいろ  -   - 多次元ベクトル、集合、文字列、画像・・・  -   - ユークリッド距離、ハミング距離、編集距離、・・・・・ 応用もいろいろ  -   - 類似グラフ上での × ×

    = クラスタリング、ブリーフプロパゲーション、などなど

・・ 博物学にならぬよう、根底に流れる理論・知見を得たい・・ 応用で使いやすいよう、単純な作りで、いいインプリを用意したい

Page 64: オフライン類似項目発見問題と 複数分類アルゴリズム

研究の始まり研究の始まり研究の始まり研究の始まり

・・ 津田さんから電話がありまして。

「こんな論文あるんすけど、 sachica と組合せて使えないですか」 「うまくいきそうですね。やってみましょう」

・・ プログラミングして実験して、けっこういい感じです

というのが現在の状況。その後、杉山さん、比戸さんに仲間に入っていただきました。

・ ・ 学習ではないので、 KDD に出そうかと思ってます。

Page 65: オフライン類似項目発見問題と 複数分類アルゴリズム

超平面で分類超平面で分類超平面で分類超平面で分類

・・ 多次元ベクトルデータ(点データ) x1, ..., xn ∈ Rd が与えられる

・・ ここで、ランダムに作った(原点を通る)超平面で点を分類する・・ 似た方向のベクトルは、超平面の同じ側にいる確率が高い

・・  h 個のランダム超平面を発生させると、似た方向のベクトルは、多くの超平面に対して同じ側にいる確率が高い

・・  2 つのベクトルのなす角度が θであるとき、その確率は 1 – (θ/π)

・・  01 ベクトル(集合)の場合、θ=cos-1(|A∩B| / √|A| ・ |B|) です

Page 66: オフライン類似項目発見問題と 複数分類アルゴリズム

複数のランダム超平面複数のランダム超平面複数のランダム超平面複数のランダム超平面・ ・ 2つのベクトルのなす角度が θ 以内なら、 h 個のランダム超平面 π1,..., πh のうち多くのもので符号(どちら側にいるか)が一致

2 項分布を使って計算すると、確率 XX以上 で k 個以上が一致する、という最大の k を見つけることができる

少し大きめの h を選んでおくと、角度が θ以上のベクトル対が上記の条件を満たすことが少なくなる

・ ・ 多くのベクトルからなるデータベースの中から、この条件を使って、なす角度が小さいものを近似的に見つけられる

・ ・ 符号の一致数が多いもの = ハミング距離の短いものなので、先のアルゴリズム sachica が使える

Page 67: オフライン類似項目発見問題と 複数分類アルゴリズム

ランダム超平面の使い方ランダム超平面の使い方ランダム超平面の使い方ランダム超平面の使い方

① ① 多次元ベクトルデータベース(点データ) x1, ..., xn ∈ Rd

、角度閾値 θ 、精度閾値 σ を入力 ② ② n 、 θ 、 σ から、ハミング距離を見つけやすいよう十分に

大きい h を選び、2項分布を使ってハミング距離の閾値 z を計算

③ ③ ランダムな原点を通る超平面(法線ベクトル) π1 ・・・πh を生成

④ ④ 各ベクトル xi について符号列 H(xi) = π1(xi) ・・・ π(xi) を計算

⑤ ⑤ H(xi) と H(xj) のハミング距離が閾値 z より短いペア xi, xj を列挙

⑥⑥見つけたペアの中で 実際になす角度が θ以下のものを出力

簡単簡単

簡単簡単

簡単簡単

簡単簡単

簡単簡単

先日のアルゴリズム sachica を利用先日のアルゴリズム sachica を利用

Page 68: オフライン類似項目発見問題と 複数分類アルゴリズム

実験:ランダム超平面実験:ランダム超平面実験:ランダム超平面実験:ランダム超平面

・ ・ 頻出集合発見のベンチマーク問題・ ・ tiny images という小さい画像のデータベースから取ってきたデータ(無圧縮画像データをバイナリファイルとして比較、およそ 3000次元)

・ ・ t=0.1π,0.2π で実験・ ・ Core2Duo E8400 、 4GB RAM

・ ・ tiny images 6万件、角度 0.1π で、精度保証が 0.84だと 秒、 0.92 だと 65秒、 0.96 で 165秒、 0.98 で 96秒、 0.99 で 260秒、 0.995 で

Page 69: オフライン類似項目発見問題と 複数分類アルゴリズム

実験結果:実験結果: tiny imagestiny images実験結果:実験結果: tiny imagestiny images

・ ・ tiny images 6万件、角度 0.1π で、 - - 精度保証が 0.84だと 37 秒、 0.92 だと 65秒、 0.96 で165秒、 0.98 で 96秒、 0.99 で 260秒、 0.995 で -- 見つけ損ない数は、 (1-精度 ) にほぼ比例。が安定的でない

・ ・ tiny images 6万件、角度 0.15π で、- - 精度保証が 0.84だと  182秒、 0.92 だと 224秒、 0.96 で291秒、 0.98 で 368秒、 0.99 で 771 秒- - ハミング距離が長いので、計算がきつい( 100 中 40 文字とか)

・ ・ tiny images 6万件、角度 0.05π で、- - 精度保証が 0.84だと  15 秒、 0.92 だと 20秒、 0.96 で25秒、 0.98 で 33秒、 0.99 で 45 秒。ほとんどが問題変換とチェック

Page 70: オフライン類似項目発見問題と 複数分類アルゴリズム

実験結果:実験結果: tiny imagestiny images実験結果:実験結果: tiny imagestiny images

・ ・ tiny images 6万件、角度 0.1π で、 - - 精度保証が 0.84だと 37 秒、 0.92 だと 65秒、 0.96 で165秒、 0.98 で 96秒、 0.99 で 260秒、 0.995 で -- 見つけ損ない数は、 (1-精度 ) にほぼ比例。が安定的でない

・ ・ tiny images 6万件、角度 0.15π で、- - 精度保証が 0.84だと  182秒、 0.92 だと 224秒、 0.96 で291秒、 0.98 で 368秒、 0.99 で 771 秒- - ハミング距離が長いので、計算がきつい( 100 中 40 文字とか)

・ ・ cover tree という nearest neighbor 検索アルゴリズムを全部の点に対して検索かけてみたが、 6 . 7万件では 1 時間たっても終わらず。 3 . 8万件は 50 分ほどで終了

Page 71: オフライン類似項目発見問題と 複数分類アルゴリズム

実験結果:トランザクションデータ実験結果:トランザクションデータ実験結果:トランザクションデータ実験結果:トランザクションデータ

・ ・ 55万件の POS データで θ= .1π のとき ( 3000次元)- - 精度保証が 0.5-0.9 で 30-50秒程度-- データがスパースなので、各ベクトルの非ゼロ要素はせいぜい 5-6 個。よってほとんどが「まったく同じもの」

・ ・ 機械学習のベンチマーク connect 6.6万件、 (100次元、密度 50% くらい ) のときは、 cover tree だと 1000秒くらい

・ ・ sachica を使うと、 θ=.1π 、精度保証 0.9 で 500秒くらい、 0.5 だと 20秒くらい

・ ・ kosarak というクリックストリームデータは、まったく同じもののペアだけで 1億以上のペアがあり、計算できず

Page 72: オフライン類似項目発見問題と 複数分類アルゴリズム

実は実は実は実は・ ・ 精度を上げるには、精度保証を上げて時間を掛けて解くしかない

・ ・ わけではない。例えば精度保証 0.9 の計算を 2回して和集合を求めると、各枝の見つかる確率は 0.99 になる。 3回やれば 0.999。回数を増やすだけで(線形のコスト増加で)精度を指数的に上げられる

・ ・ 確率 0.5 で見つけられれば、それを 10回すると 1023/1024 の確率( 0.999) で各枝が見つかる

・・ 角度 0.1π 、保証 0.5 で実行すると、 38万件でも 2 分程度1000次元、保証 0.5 、角度 0.05π 、 100万件でも 4 分程度

この時点で、入力ファイルの大きさが 1GB を突破。メモリが限界

Page 73: オフライン類似項目発見問題と 複数分類アルゴリズム

さらなる高速化さらなる高速化さらなる高速化さらなる高速化

そのうち前処理・後処理が 8 分以上・・・、

 というわけで、内積の計算を改善したら 2 分になりました。ただ、これでも、 sachica の実行時間は 20秒ほど

少し文字列を長めにするようにして、間違いが起きにくくしてみたら、計算時間が 1/3 程度に短くなりました

・ ・ この作業を 10回ほどやるので、一回が 4 分でも全体は40 分。ただ、出力のチェックは、きっと同じものに対するチェックを何回もするはず。ここのところが将来的な改良ポイント

Page 74: オフライン類似項目発見問題と 複数分類アルゴリズム

まとめまとめまとめまとめ

・ ・ min-wise independence やベクトルとの内積の符号など、「類似すると一致する可能性が高い指標」をランダムに複数用いて文字列を作り、文字列のハミング距離が短いものを見つけることで、短時間で高い精度で類似するものを見つける方法の提案

・ ・ ベクトルデータと集合データ

・ ・ sachica を利用して高速計算

・ ・ 繰り返し計算による精度向上

どなたかいいデータ (多量の項目からなるベクトルデータ) 持ってないでしょうか?