最尤系統樹推定と系統樹の信頼性評価 講義編

96
最尤系統樹推定 と系統樹の信頼性評価 田辺晶史 講義編

Transcript of 最尤系統樹推定と系統樹の信頼性評価 講義編

最尤系統樹推定       と系統樹の信頼性評価

田辺晶史

講義編

最尤法って何?

最大尤度法

って何?

コイントスの例

11

11コイントスで裏が出る確率はXである

11コイントスで裏が出る確率はXである

X はいくつ?

11 0.1

11

10回のコイントスで裏 1回表 9回が出る確率

11

10回のコイントスで裏 1回表 9回が出る確率

● 裏が出る確率は 0.1 であるというモデル

11

10回のコイントスで裏 1回表 9回が出る確率

● 裏が出る確率は 0.1 であるというモデル● (1/10)×(9/10)9

11

10回のコイントスで裏 1回表 9回が出る確率

● 裏が出る確率は 0.1 であるというモデル● (1/10)×(9/10)9=0.03874205

11

10回のコイントスで裏 1回表 9回が出る確率

● 裏が出る確率は 0.1 であるというモデル● (1/10)×(9/10)9=0.03874205

● 裏が出る確率は 0.5 であるというモデル

11

10回のコイントスで裏 1回表 9回が出る確率

● 裏が出る確率は 0.1 であるというモデル● (1/10)×(9/10)9=0.03874205

● 裏が出る確率は 0.5 であるというモデル● (1/2)10

11

10回のコイントスで裏 1回表 9回が出る確率

● 裏が出る確率は 0.1 であるというモデル● (1/10)×(9/10)9=0.03874205

● 裏が出る確率は 0.5 であるというモデル● (1/2)10=0.0009765625

11

10回のコイントスで裏 1回表 9回が出る確率

● 裏が出る確率は 0.1 であるというモデル● (1/10)×(9/10)9=0.03874205

● 裏が出る確率は 0.5 であるというモデル● (1/2)10=0.0009765625

11

10回のコイントスで裏 1回表 9回が出る確率

● 裏が出る確率は 0.1 であるというモデル● (1/10)×(9/10)9=0.03874205

● 裏が出る確率は 0.5 であるというモデル● (1/2)10=0.0009765625

尤度

11あるモデルを仮定したとき、データが実現する確率

11あるモデルを仮定したとき、データが実現する確率

尤度||

尤度が最大になるようにパラメータ値を決める

尤度が最大になるようにパラメータ値を決める

最尤法||

系統樹推定の場合

樹形間の比較では分子進化モデルは固定(パラメータ値は推定 )

樹形間の比較では分子進化モデルは固定(パラメータ値は推定 )

||パラメータ数 (K)は全樹形で等しい

樹形間の比較では分子進化モデルは固定(パラメータ値は推定 )

||パラメータ数 (K)は全樹形で等しい

||

最大尤度樹形はAICも最小

最尤系統樹推定

最尤系統樹推定||

尤度が最大になる系統樹を採用する

問題

尤度最大な樹形

をどう決める?

総当たり

総当たり

総当たり無理

そこで、

局所探索

初期樹形

初期樹形

樹形改変によって探索される範囲

初期樹形

樹形改変によって探索される範囲

初期樹形

樹形改変によって探索される範囲

さらに周囲を探索

初期樹形

樹形改変によって探索される範囲

仮の最尤系統樹を更新していく

初期樹形

樹形改変によって探索される範囲

仮の最尤系統樹を更新していく

それ以上尤度が高いものが見つからない

初期樹形

樹形改変によって探索される範囲

仮の最尤系統樹を更新していく

それ以上尤度が高いものが見つからない

終了

局所探索って不安だなぁ

・・・

気休め

無作為配列付加法

無作為配列付加による初期樹形生成

無作為配列付加による初期樹形生成

● 無作為に選んだ 3OTU で系統樹生成 ( 樹形 1 つ )

無作為配列付加による初期樹形生成

● 無作為に選んだ 3OTU で系統樹生成 ( 樹形 1 つ )● 無作為に選んだ 1OTU の枝を最適な場所へ付ける

無作為配列付加による初期樹形生成

● 無作為に選んだ 3OTU で系統樹生成 ( 樹形 1 つ )● 無作為に選んだ 1OTU の枝を最適な場所へ付ける● さらに 1OTU 足す、を繰り返す

無作為配列付加による初期樹形生成

● 無作為に選んだ 3OTU で系統樹生成 ( 樹形 1 つ )● 無作為に選んだ 1OTU の枝を最適な場所へ付ける● さらに 1OTU 足す、を繰り返す● 全 OTU の系統樹を得る

無作為配列付加による初期樹形生成

● 無作為に選んだ 3OTU で系統樹生成 ( 樹形 1 つ )● 無作為に選んだ 1OTU の枝を最適な場所へ付ける● さらに 1OTU 足す、を繰り返す● 全 OTU の系統樹を得る

反復すれば多数の樹形が得られる

はたして

その系統樹は

信頼できるのか?

どれくらい

OTU4

OTU5

OTU1

OTU2

OTU3

OTU4

OTU5

OTU1

OTU2

OTU3

OTU1

OTU2

OTU3

OTU5

OTU4

OTU4

OTU5OTU3

OTU1

OTU2

OTU4

OTU5

OTU1

OTU2

OTU3

OTU1

OTU2

OTU3

OTU5

OTU4

OTU4

OTU5OTU3

OTU1

OTU2

OTU4

OTU5

OTU1

OTU2

OTU3

系統樹は多数の系統仮説の

集合体

はたして

その系統樹は

信頼できるのか?

どれくらい

はたして

各系統仮説は

信頼できるのか?

どれくらい

ブートストラップ

解析

OTU1OTU2OTU3OTU4OTU5OTU6OTU7OTU8OTU9

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

AAAAAAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

AAAAAAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCTTTTTT

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

OTU1OTU2OTU3OTU4OTU5OTU6OTU7OTU8OTU9

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

AAAAAAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

AAAAAAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCTTTTTT

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

OTU1OTU2OTU3OTU4OTU5OTU6OTU7OTU8OTU9

CCCTTTTTT

TAACCCGGG

TAACCCGGG

CCCCCCCCC

TTTTTTTTT

TAACCCGGG

CCCTTTTTT

CCCCCCCCC

TTTTTTTTT

CCCTTTTTT

CCCCCCCCC

TAACCCGGG

AATTTTTTT

TTTTTTTTT

AAAAAAAAA

TAACCCGGG

AAAAAAAAA

AAAAAAAAA

TTTTTTTTT

CCCTTTTTT

CCCCCCCCC

CCCTTTTTT

CCCCCCCCC

GGCCCAAAA

CCCTTTTTT

CCCCCCCCC

OTU1OTU2OTU3OTU4OTU5OTU6OTU7OTU8OTU9

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

AAAAAAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

AAAAAAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCTTTTTT

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

OTU1OTU2OTU3OTU4OTU5OTU6OTU7OTU8OTU9

CCCTTTTTT

TAACCCGGG

TAACCCGGG

CCCCCCCCC

TTTTTTTTT

TAACCCGGG

CCCTTTTTT

CCCCCCCCC

TTTTTTTTT

CCCTTTTTT

CCCCCCCCC

TAACCCGGG

AATTTTTTT

TTTTTTTTT

AAAAAAAAA

TAACCCGGG

AAAAAAAAA

AAAAAAAAA

TTTTTTTTT

CCCTTTTTT

CCCCCCCCC

CCCTTTTTT

CCCCCCCCC

GGCCCAAAA

CCCTTTTTT

CCCCCCCCC

データからデータを作る

OTU1OTU2OTU3OTU4OTU5OTU6OTU7OTU8OTU9

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

AAAAAAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

CCCTTTTTT

GGCCCAAAA

AAAAAAAAA

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCTTTTTT

TAACCCGGG

TTTTTTTTT

AATTTTTTT

CCCCCCCCC

OTU1OTU2OTU3OTU4OTU5OTU6OTU7OTU8OTU9

CCCTTTTTT

TAACCCGGG

TAACCCGGG

CCCCCCCCC

TTTTTTTTT

TAACCCGGG

CCCTTTTTT

CCCCCCCCC

TTTTTTTTT

CCCTTTTTT

CCCCCCCCC

TAACCCGGG

AATTTTTTT

TTTTTTTTT

AAAAAAAAA

TAACCCGGG

AAAAAAAAA

AAAAAAAAA

TTTTTTTTT

CCCTTTTTT

CCCCCCCCC

CCCTTTTTT

CCCCCCCCC

GGCCCAAAA

CCCTTTTTT

CCCCCCCCC

リサンプリング

リサンプル

リサンプル

最尤系統樹推定

リサンプル

最尤系統樹推定

ひたすら

反復

D

A

C

B

D

A

C

B

D

A

C

B

A

B

C

D

D

A

C

B

D

A

C

B

D

A

C

B

A

B

C

D

D

A

C

B

D

A

C

B

D

A

C

B

A

B

C

D

75%

25%

D

A

C

B

D

A

C

B

D

A

C

B

A

B

C

D

75%

25%

出現頻度を信頼性の指標に

計算機の性能向上の技術トレンド

計算機の性能向上の技術トレンド

● 2000 年代前半まで

計算機の性能向上の技術トレンド

● 2000 年代前半まで● 一度に処理できる命令数向上と動作周波数の向上

計算機の性能向上の技術トレンド

● 2000 年代前半まで● 一度に処理できる命令数向上と動作周波数の向上● プログラムはそのままでも高速化した

計算機の性能向上の技術トレンド

● 2000 年代前半まで「フリーランチ時代」● 一度に処理できる命令数向上と動作周波数の向上● プログラムはそのままでも高速化した

計算機の性能向上の技術トレンド

● 2000 年代前半まで「フリーランチ時代」● 一度に処理できる命令数向上と動作周波数の向上● プログラムはそのままでも高速化した

● 2000 年代後半以降「フリーランチの終焉」

計算機の性能向上の技術トレンド

● 2000 年代前半まで「フリーランチ時代」● 一度に処理できる命令数向上と動作周波数の向上● プログラムはそのままでも高速化した

● 2000 年代後半以降「フリーランチの終焉」● CPU コア数の向上と一度に処理できるデータ量の向上

計算機の性能向上の技術トレンド

● 2000 年代前半まで「フリーランチ時代」● 一度に処理できる命令数向上と動作周波数の向上● プログラムはそのままでも高速化した

● 2000 年代後半以降「フリーランチの終焉」● CPU コア数の向上と一度に処理できるデータ量の向上● 性能を引き出せるようプログラムを作りなおす必要がある

計算機の性能向上の技術トレンド

● 2000 年代前半まで「フリーランチ時代」● 一度に処理できる命令数向上と動作周波数の向上● プログラムはそのままでも高速化した

● 2000 年代後半以降「フリーランチの終焉」● CPU コア数の向上と一度に処理できるデータ量の向上● 性能を引き出せるようプログラムを作りなおす必要がある

プログラムの並列化 ( 一度に多数の CPU コアを使う )ベクトル化 ( 一度に多量のデータを処理する )

が必要に

Intel CPU の拡張命令とRAxML

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応● raxmlHPC-SSE3 ・ raxmlHPC-PTHREADS-SSE3 で利用

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応● raxmlHPC-SSE3 ・ raxmlHPC-PTHREADS-SSE3 で利用

● Advanced Vector Extensions (AVX)

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応● raxmlHPC-SSE3 ・ raxmlHPC-PTHREADS-SSE3 で利用

● Advanced Vector Extensions (AVX)● 32bit 精度小数値データを一度に最大 8 つ処理

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応● raxmlHPC-SSE3 ・ raxmlHPC-PTHREADS-SSE3 で利用

● Advanced Vector Extensions (AVX)● 32bit 精度小数値データを一度に最大 8 つ処理● Core i5/i7 (SandyBridge) 以降で対応

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応● raxmlHPC-SSE3 ・ raxmlHPC-PTHREADS-SSE3 で利用

● Advanced Vector Extensions (AVX)● 32bit 精度小数値データを一度に最大 8 つ処理● Core i5/i7 (SandyBridge) 以降で対応● raxmlHPC-AVX ・ raxmlHPC-PTHREADS-AVX で利用

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応● raxmlHPC-SSE3 ・ raxmlHPC-PTHREADS-SSE3 で利用

● Advanced Vector Extensions (AVX)● 32bit 精度小数値データを一度に最大 8 つ処理● Core i5/i7 (SandyBridge) 以降で対応● raxmlHPC-AVX ・ raxmlHPC-PTHREADS-AVX で利用

● Fused Multiply-Add

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応● raxmlHPC-SSE3 ・ raxmlHPC-PTHREADS-SSE3 で利用

● Advanced Vector Extensions (AVX)● 32bit 精度小数値データを一度に最大 8 つ処理● Core i5/i7 (SandyBridge) 以降で対応● raxmlHPC-AVX ・ raxmlHPC-PTHREADS-AVX で利用

● Fused Multiply-Add● ±(A×B)±C を一度に実行

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応● raxmlHPC-SSE3 ・ raxmlHPC-PTHREADS-SSE3 で利用

● Advanced Vector Extensions (AVX)● 32bit 精度小数値データを一度に最大 8 つ処理● Core i5/i7 (SandyBridge) 以降で対応● raxmlHPC-AVX ・ raxmlHPC-PTHREADS-AVX で利用

● Fused Multiply-Add● ±(A×B)±C を一度に実行● Core i5/i7 (Haswell) 以降で対応

Intel CPU の拡張命令とRAxML

● Streaming SIMD Extensions 3 (SSE3)● 32bit 精度小数値データを一度に最大 4 つ処理● Pentium 4 (Prescott) 以降で対応● raxmlHPC-SSE3 ・ raxmlHPC-PTHREADS-SSE3 で利用

● Advanced Vector Extensions (AVX)● 32bit 精度小数値データを一度に最大 8 つ処理● Core i5/i7 (SandyBridge) 以降で対応● raxmlHPC-AVX ・ raxmlHPC-PTHREADS-AVX で利用

● Fused Multiply-Add● ±(A×B)±C を一度に実行● Core i5/i7 (Haswell) 以降で対応● raxmlHPC-AVX2 ・ raxmlHPC-PTHREADS-AVX2 で利用