740 likes | 789 Views
オフライン類似項目発見問題と 複数分類アルゴリズム. 宇野 毅明 国立情報学研究所 津田 宏治 産業総合研究所 杉山 将 東京工業大学. 2009 年 2 月 26 日. 簡単に自己紹介. 名前: 宇野 毅明 年齢・職種: 国立情報学研究所・准教授・ 38 歳 研究分野: アルゴリズム理論とその応用 - グラフアルゴリズムを中心とした離散アルゴリズム - 組合せ最適化とそれにまつわる数理 - 列挙アルゴリズムと、頻出パターンマイニングへの応用
E N D
オフライン類似項目発見問題と複数分類アルゴリズムオフライン類似項目発見問題と複数分類アルゴリズム 宇野 毅明国立情報学研究所 津田 宏治産業総合研究所 杉山 将 東京工業大学 2009 年 2 月 26 日
簡単に自己紹介 名前: 宇野 毅明 年齢・職種:国立情報学研究所・准教授・38歳 研究分野: アルゴリズム理論とその応用 - グラフアルゴリズムを中心とした離散アルゴリズム - 組合せ最適化とそれにまつわる数理 - 列挙アルゴリズムと、頻出パターンマイニングへの応用 最近の研究: ゲノム情報学やデータマイングで出てくる巨大なデータベースの基礎的(とはいっても非常に時間のかかる)な解析を超高速で行うアルゴリズムの開発 もっとー: 速い安い(単純)うまい 趣味(日課?): 子供と遊ぶこと
ゲノム情報学の計算面での到達点 ・ ゲノム情報学の問題、解けるようになったでしょうか? 情報学的には: 「基礎的なものは解けてます」 「知識発見など、複雑な問題が解けないですね」 生物学的には: 「計算ができなくて困っています」 「難しいことより、まず簡単なことができないんです」 ・ 非常に大きなギャップがある ・ 聞き込みをしてみると、「計算量がわかっても意味がない」「研究のフォーカスがずれている」「実装がない」「基礎的な問題が解きたいが、(モデル化、あるいはアルゴリズム的な意味で)筋が違う」 などなど (考慮する要因や、問題の定式化など)
ゲノム相同領域発見問題 (注)ゲノム情報学の分野では、文字列の類似する部分を相同領域、類似する部分を見つける問題(類似検索)を相同領域検索、あるいは相同検索といいます ゲノムは種の進化や個体差、実験のエラーなどにより、同じ機能を持つものでも、異なる形でコードされていることが多い そもそも、似たものを見つけるのも重要 - 機能が未知の遺伝子と類似する遺伝子を探す - 異なる種のゲノムの比較 (類似部分には意味がある) - ゲノム読み取り時に、断片配列をつなげる - 固有な部分配列の同定をして、マーカーとして使う - 同じく、プライマーとしてPCR増幅に使う
ゲノムの読み取り ゲノムを読み取る方法 1. DNAを薬で溶かして、ひも状にする 2.放射線などを当てて、短い切片にぶつぶつ切る 3.機械で読む。1回で500文字程度読める ただし、精度は99.9%程度。1000文字に1文字くらいミスる 4.読んだ結果をつなぎ合わせて、もとのゲノムを構築する
系統樹作り ・ 各生物種が、どれくらい前に分かれたものかという、進化の系統樹を推測する ・ ゲノムが似ているものは最近分かれた種である、という推測で樹を作る ・ いくつかのまったく違う生物から大まかな樹を作るものと、ターゲットとなる種を(例えばイネとか)決めて、その中でどのように細かい種が分かれていったかを調べるものがあるようだ
類似性のモデル ・ ゲノムの変化(変異、あるいは実験での読み取りエラー)は、局所的には、1文字単位で起きる ・ 既存研究では、文字列の尺度で類似度を判定している (コスト付き)編集距離 (ときどき)ハミング距離 ・ 両者ともに、数理的に美しい尺度であり、計算も容易 - 長さ nの文字列の比較 ハミング距離: O(n)時間、 編集距離 O(n2)時間 ・ 実際には、大域的な入れ替わり構造がある
横移動:左側に空白を挿入 縦移動:下側に空白を挿入 斜め移動:空白無し(同じ文字ならコスト0) 最短路問題 ATGCA AGCAT A C G T A ・2つのゲノムに対して、グリッド型のネットワークを作る ATGCA* A*GCAT A G C A T しかし、巨大な n の2乗は果てしなく大きい
相同検索の応用と困難さ ・相同検索は、ゲノム解析における中心的な道具 計算のうち半分以上は相同検索とも… ・しかし、類似検索なので計算資源が必要 現在は並列計算にたよっている ・類似検索なので、基本的に2分探索のような手法は使えない ソフトにより性能は異なるが、100万文字の配列(文字列)2つを比較するのにもかなり(数分から数時間)かかる 染色体のような、数億文字ある配列の比較には多大な計算資源が必要 (あるいはヒューリスティックでやる) もし、相同領域を短時間で行えるようになるなら、 それがゲノム研究に与える影響は大きい
相同領域発見の研究(アルゴリズム的) ・2つ文字列の編集距離(挿入/削除/変化の最小数)は最短路アルゴリズムを使って、ある程度高速に求められる 2つの文字列が似ていないと有効でない 入れ替わり構造は発見できない ・ BLASTを始めとする相同発見アルゴリズム (例えば11文字の)短い完全一致領域を見つけ、そこを種として検索 文字列が長いと、大量の完全一致がある 11文字を長くすると精度が落ちる 良く現れる単語は候補から除外、遺伝子部分だけ注目 といった処理をしているようだ ・ 類似検索 大量のクエリを実行しなければならない 類似検索は通常、完全一致検索より大幅に時間がかかる
100項目 100万項目 2-3倍 10000倍 アルゴリズム理論からのアプローチ ・ 計算の高速化において、並列計算は強力であるが、コストがかかるのが欠点 (プログラミングの複雑さも含め) ・ アルゴリズム理論による高速化は、問題の大きさに対する計算時間の増加を、計算手法の設計変更により、抑える データが巨大になるほど、アルゴリズム改良の加速率は上がる アルゴリズム理論から、相同領域発見のモデルに取り組んでみる
アルゴリズム 問題 アルゴリズムからモデル・定式化へ ・ 通常、モデル化(定式化)とアルゴリズムは、解ける問題と解きたい問題のすりあわせして、うまい落としどころを見つける ・しかし、相同性検索では、状況が少し違うように見える 「うまく解ける問題」の単純な拡張 or ヒューリスティック手法 ・完全一致の検索がうまくできる、うまく評価できる類似性の尺度がある、という2つを単純に組み合わせただけ ・アルゴリズムの視点から問題の定式化を見直せば、よりうまく解けるモデルが提唱できるかも
何がほんとに似ているか ・生物系の研究者に聞くと、編集距離は(距離が大きいと)研究者の直感に対応していないようだ 同じ編集距離(ハミング距離)でも、似てる感が大きく違う ATGCATGCATATATATATGCATGC ATGCATGCATATATATATGCATGC ATGCATGCGCGCGCGCATGCATGC AAGGAAGGAAAAAAAAAAGGAAGG ・ どうも、部分的に集中して似てるところが効いているようだ ・ あまり短い部分だけが似ていても、意味がないようだ ・ さらに、実用上は「似ている部分が見つかればいい」ので、解の中に「似ていない部分が混ざっていてもいい」 (見つけ損ないはダメだが、偽者を見つけても大きな被害はない)
短い文字列の比較 問題:各項目が同じ長さ lの短い文字列(50文字程度)であるデータベースを入力したときに、文字列のペアで異なり数(ハミング距離)が d文字以下である組を全て見つけよ ・ ゲノム全体から各ポジションを先頭とする長さ lの部分文字列を全て集めてこの問題を解くと、似ている部分列が全て見つかる (ハミング距離の意味で似ている部分文字列) ATGCCGCG GCGTGTAC GCCTCTAT TGCGTTTC TGTAATGA ... ・ATGCCGCG と AAGCCGCC ・GCCTCTAT と GCTTCTAA ・TGTAATGA と GGTAATGG ...
問題の難しさ ・全ての項目が同じだと、O(項目数2)個の出力がある lを定数だと思えば、単純な全対比較のアルゴリズムが 計算量の意味では最適になる 計算量理論的には面白くない問題 ・現実には、やたらと似ているものを比較しても意味が無い 出力は少ないと仮定する ATGCCGCG GCGTGTAC GCCTCTAT TGCGTTTC TGTAATGA ... ・ATGCCGCG と AAGCCGCC ・GCCTCTAT と GCTTCTAA ・TGTAATGA と GGTAATGG ...
基本のアイディア:文字列の分割 ・各文字列を、k(>d) 個のブロックに分割する ・k-d 個のブロックの場所を指定したときに、そこがまったく等しくて、かつハミング距離がd以下となるようなペアを全て見つけよ、という部分問題を考える 各文字列の k-d 個のブロックをつなげてキーにし、ソートをする。同じものはグループになる。それを総当りで比較すればよい ・ k-d 個のグループ数が大きければ、平均的にグループのメンバー数は小さくなるので、総当りで比較してもたいしたことない
全ての場合を尽くす ・先の部分問題を、全ての場所の組合せについて解く 2つの文字列が似てれば、必ずどこか k-d 個のブロックが同じ 必ずどれかの組合せで見つかる ・部分問題は、バケツソートやRadixソートで速く解ける ・ 組合せの数は kCd。のk=5で d=2なら10通り ソート10回 +α で解ける。全対比較よりもかなり高速 ・各文字の数から、1文字比較した場合に等しくなる確率を求め、適切な分割数 kを使用する
例題 ABCDE ABDDE ADCDE CDEFG CDEFF CDEGG AAGAB A BCDE A BDDE A DCDE C DEFG C DEFF C DEGG A AGAB A BC DE A BD DE A DC DE C DE FG C DE FF C DE GG A AG AB ABC DE ABD DE ADC DE CDE FG CDE FF CDE GG AAG AB ・ ABC、ABD、ACC、EFG、FFG、AFG、GAB のペアでハミング距離が1以下のものを求めよ
Computation 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)
重複の回避 ・ まったく同じ文字列があると、全てのブロックの組合せで見つかるので、 kCd。回出力される 重複を回避する必要がある ・ 各見つかったペアについて、選択されていないブロックが選択したブロックの間にあったら出力しないようにする 等しいブロックが一番左端によっている場合にのみ出力 メモリに解を保持せずとも、重複が回避できる
k の選択 ・ 一番良い kをあらかじめ計算するのは不可能(と思われる) ・どの k が良いか推定する問題を解いて、選ぶ ・2つの文字をランダムに選んだときの一致する確率を元に、l/k 個の文字を使ってグループ分けしたときの、各グループのメンバーの平均値を計算 ・ それを元に、計算コストを算定する。これを全ての k について行ってベストなものを選ぶ
なぜBLASTより速くできるのか? ・オリジナルのBLASTは、連続して11文字同じところを見つける 大雑把に言って、分類精度は、4の11乗 ≒ 400万 100万塩基あたりから苦しそう ・ 今回の手法は、例えば 30文字中間違い3文字(連続して7文字同じ、と同じ精度)で6個に分割するなら、 大雑把に、分類精度は、4の15乗 ≒ 10億を20回 2億塩基あたりから苦しいが、そうなったら分割数を7にすればいい ただし、(短い配列の)検索は苦手 (全部の比較と一部の比較の速度があまり変わらない)
なぜ高速化できるのか? ・チェックするマスを図示してみる ・アクセスするマス目の面積が大きく違う ・グループの数が増えると、より速くなる
イメージ的には ・似ているもののペアを探す問題は、マトリクスのセルの中で必要なものを全て見つける問題 ・全対比較は、マトリクスのセルをすべて見ていることに対応 ・分類によるアルゴリズムは、 分類を順々にしていると思えば、 木構造の探索を行っていることに対応
Prefixes of Y-chromosome of Human, on a note PC with Pentium M 1.1GHz, 256MB RAM Exp: fix length to 20, and change distance d
Web texts written in Japanese, Core2duo, E8400 3GHz, 4GB RAM Exp.: fix length to 30, and change distance d
人のY染色体から部分配列をとって実験。PenMのノートPC人のY染色体から部分配列をとって実験。PenMのノートPC 実験:長さ20文字で異なり数 dを変化
長さ l が大きい場合 ・lおよび kが大きくなると、ソートの回数が増えるため、計算は遅くなる 複数分類法と同じアイディアで高速化できる ・長さ l の文字列を h個に分割する 2つの文字列の距離がk 以下なら、必ず距離がk/h 以下のブロックが存在 ・kの選択と同じように、計算コストを算定して最適な h を選ぶ
任意の部分列の組に対して A B このように部分列が比較される 比較する部分文字列の省略 ・ 少し長めの類似構造を調べたいときには、比較する部分文字列を省略しても効果がある - 比較する文字列AとB (両者が同じこともあり得る)から長さ lの文字列を取るときに、適当な kを定めて、A の部分文字列のうち k/l、B の 1/k を選び出して比較 - どのような(少し長い)部分列の組に対しても、1/l 程度の比較される部分列を含む
分割の効能 ・ 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 文字なので、グループ数は同じ
文字列の比較だけでなく ・ 今まで、文字列の問題だけを考えてきたが、別に文字列にこだわる必要はない - 行列の部分行列 - 離散ベクトル(行列)データの比較 ・ ベクトルデータを離散化して比較、01ベクトルの比較、画像の部分比較などに使える 大規模データに対して近傍グラフが短時間で作れる! 0101000011 1101000011 1100101010 0000110000 ・・・・ 10, 143, 29, 13 33, 29, 143, 35 1, 76, 33, 24 132, 7, 24, 24 ・・・
string A String B Visualization 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 substrings will be seen as diagonal lines
ヒト 21番染色体 チンパンジー22番染色体 ゲノムの比較 (1) ヒト21番染色体とチンパンジー22番染色体の比較 ・長さ3000万の配列×2 から、30文字の切片を3000万個取る ・ 似ている部分配列のペアの数に応じて、各ドットの明るさを変える ・ 白い部分が 「似ている可能性のある部分」 ・ 黒い部分が 「(絶対に)似ていない部分」 ・ 格子模様は、繰り返し 配列を拾っている PCで 1時間で可能
Dot Plot for Long Genome Sequence Mouse 11th chr. ・ 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 Human 17th chr 2 min by PC
Same Intensity ・ 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
Box Filtering ・ 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
新しいモデル ・ 2つの文字列の類似を「似ている短い区間がいくつかある」で定義 (距離ではなく、似ているかいないかの2値になる) ・ この条件は、ある意味で、 既存の類似性の条件を弱めている ・既存の意味での類似性の下界にもなる 例:長さ3000でハミング距離が10%弱 (間違い290)なら、長さ30で間違い2の部分列を、少なくとも3つは含む ・離れた位置にある部分が似ていても全体が似ていることにはならないので、ずれの最大をβで制限する ・2つの文字列が似ている部分文字列を持つ 「長さα、幅βの領域に閾値以上の類似部分文字列のペアがある」 ということになる
効率良く計算できるか ・類似部分文字列を持つ長さα幅βの領域をどう見つけるか ペア長さαの部分文字列を全対比較 2乗の時間かかる 別の方法を考えないと、とても解けない ・ 最初に、短くて似ている部分 文字列のペアを全部見つけておく ・ 幅2βの斜めの線に沿って、長さαの領域に 閾値以上のペアがあるところを探す ・ 斜め線をβずつずらして、全ての部分について似ている部分を探す ・ 長さα幅βの似ている部分列は必ず見つかる(そうでないものも発見) ・ 短くて似ている部分列を効率良く見つければよい
Dot Plot for Long Genome Sequence Mouse 11th chr. ・ 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 almost the noise pattern ・In high resolution, we can remove the noise much Human 17th chr 3 min by PC
Mouse X chr. Dot Plot for Long Genome Sequence 15 min by PC Human X chr Comparison mouse X chr. and human X chr. Note: BLASTZ: 7days MURASAKI: 2-3 hours with small error ratio
ゲノムの比較 (3) バクテリアを30種 ABC順の取得し つなげて比較 ・一度に複数の ゲノムを比較できる PCで 1時間で可能
Superimpose Many Images by Coloring all chr’s of mouse (all start form leftmost) ・ We can superimpose the comparisons between a fixed string and the other strings, by using many colors Human 22nd chr 6 hours by a PC
まとめ ・ 類似する部分列をいくつ含むかに着目した新しい類似の尺度を提案した ・ 部短時間で類似する部分列を全て見つけ出す高速なアルゴリズムを提案 ・ 実際にゲノムで比較を行い、既存の方法よりはるかに短時間である程度の保証をもつ解を得た - ヒト、チンパンジー、マウスの染色体の比較 バクテリアゲノムの多対多比較 ・ツールとしての完成度を高める(UI、解の圧縮など) ・機能の追加 (特にアセンブリ)
類似部分文字列によるミスマッチ頻出文字列発見類似部分文字列によるミスマッチ頻出文字列発見 宇野 毅明 (国立情報学研究所 &総合研究大学院大学) 2008年 11月
頻出文字列 ・ (巨大な)文字列データから、頻出する文字列を見つけたい (頻出する=あちこちに現れる) ・ suffix array やradix sort などで、ほぼ線形時間で、多数現れる部分文字列は見つけられる (閾値以上の回数現れる者の中で極大なもの、といった設定もOK) ・ しかし、アイテムセットのように、「現れる」ことが包含関係で表されているものに比べると、自由度が低い ( = きっちりと全体が現れるものしか見つけられない) ・ ゲノムなどエラーのあるデータ、ひな形や定型文書のような一部変化するデータでは、今ひとつ
あいまい性の導入 ・ エラーや、部分的な変化に対応するには、厳密に一致する文字列だけでなく、曖昧マッチングの意味であちこちに現れる文字列を見つける必要がある ・ 曖昧性の尺度は、ハミング距離、編集距離、固定回数のギャップ、マルチプルアラインメントのスコアが小さい、など ・ しかし、こうすると、短い頻出文字列がたくさん存在してしまう ・ いくら高速なアルゴリズムを作っても、これらを全部列挙するのは無理だし、そもそも見つけてもうれしくない ・ 困った困った、ので、違うアプローチを考える
類似部分文字列を使う ・ 文字列パターンAが、データ文字列S のあちこちに現れるとする つまり、{x1,…,xn}番目から始まる部分文字列とA が似ている ・ このとき、x1,…,xn番目から始まる部分文字列は、互いに似てる ・ 文字列パターンを見つけるのは難しいので、似ている部分文字列のグループを見つけよう 文字列パターンの出現位置集合の候補になるだろう ・ 当然、似ている部分文字列の組を見つけても、それが文字列パターンの出現集合になっているとは限らない
多数決による文字列パターン決め ・ 出現に対応する文字列パターンは、似ている文字列を重ね合わせて、多数決で勝つ者を選んで決めよう ABCDHFG AABDEFH ABCDEFH BBHDEGH ABHDHFG AAHDEFG ------- AB*DEF[GH]
グループは極大クリークで 似ているもののグループ化は、「似ている者の間に枝がある」グラフの中からクリーク、特に極大なクリークを見つければいいでしょう。 ・クリーク: 全ての頂点間に枝がある部分グラフ (全てのペアが似ている) ・指数的に沢山あるので、極大なものだけでいいでしょう
似てる文字列の発見 問題:各項目が同じ長さ lの短い文字列(50文字程度)であるデータベースを入力したときに、文字列のペアで異なり数(ハミング距離)が d文字以下である組を全て見つけよ ・ 長い文字列の比較には、各ポジションを先頭とする長さ lの部分文字列を全てに対してこの問題を解く。 (似ている部分列はペアを沢山含むところとして見つかる) ATGCCGCG GCGTGTAC GCCTCTAT TGCGTTTC TGTAATGA ... ・ATGCCGCG と AAGCCGCC ・GCCTCTAT と GCTTCTAA ・TGTAATGA と GGTAATGG ...