Top Banner
1 オーム情報解析(第3回) 1 東京大学 情報学環・学際情報学府 2 東京大学・大学院農学生命科学研究科 アグリバイオインフォマティクス教育研究ユニット 3 東京大学・微生物科学イノベーション連携研究機構 門田幸二(かどた こうじ) [email protected] http://www.iu.a.u-tokyo.ac.jp/~kadota/ 2020.06.18(自称ですが)講義資料のみで十二分に 中身がわかるようにしております。評価 は出席点とレポートで行う予定です。レ ポート課題はITC-LMSに掲示してありま す。
187

オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5)...

Jul 18, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

1

オーム情報解析(第3回)

1東京大学 情報学環・学際情報学府2東京大学・大学院農学生命科学研究科

アグリバイオインフォマティクス教育研究ユニット3東京大学・微生物科学イノベーション連携研究機構

門田幸二(かどた こうじ)[email protected]

http://www.iu.a.u-tokyo.ac.jp/~kadota/

2020.06.18版 (自称ですが)講義資料のみで十二分に中身がわかるようにしております。評価は出席点とレポートで行う予定です。レポート課題はITC-LMSに掲示してあります。

Page 2: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

各科目へのアクセス

2

①教育プログラム、②各講義のページ、③「オーム情報解析」の場合。ブラウザは、Google Chromeを推奨。

Page 3: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

講義予定 06月04日木曜日(17:15-20:30)

Introduction、解析データの概観

分類の全体像を把握、データセットの分割の手前まで

06月11日木曜日(17:15-20:30) モデル構築、ハイパーパラメータのチューニング(MLSeq)

テストセットの予測、混同行列

06月18日木曜日(17:15-20:30) 誤分類サンプルに関する詳細な解析(PHATE)、線形SVMと非線形SVM(kernlab)

分離境界の把握(ggplot2)、ハイパーパラメータのチューニング(caret)

06月25日木曜日(17:15-20:30) バイオマーカーの同定(MLSeq)、発現変動遺伝子の同定(TCC, edgeR, DESeq2)

scRNA-seqでDEGが多数得られる理由、発現変動遺伝子を利用したモデル構築

3

全てZoomオンライン講義でA方式予定。「MLSeqを用いた発現データの分類」が大枠です。

Page 4: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ4

Page 5: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

事前準備1

5

①事前準備として、トレーニングセットとテストセットのオブジェクトを作成するところまで行っておく。4行目から…

Page 6: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

事前準備2

6

①事前準備として、トレーニングセットとテストセットのオブジェクトを作成するところまで行っておく。4行目から27行目までを実行。

Page 7: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

事前準備3

7

①事前準備として、トレーニングセットとテストセットのオブジェクトを作成するところまで行っておく。4行目から27行目までを実行。実行結果。

Page 8: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ8

Page 9: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E38:NSCでエラー体験1

9

Documentの13ページ目。E37では、①でcontrol listを作成したのち、②SVMでモデル構築を行った。

Page 10: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E38:NSCでエラー体験2

10

Documentの13ページ目。E37では、①でcontrol listを作成したのち、②SVMでモデル構築を行った。前回③NSCという方法でモデル構築を行う作業をやらなかったのは、④を実行するとエラーが出ることが分かっていたため。⑤がNSCとなっていて、⑥method=“pam”となっていることからNSCがpamに相当すると判断する。

⑤ ⑥

Page 11: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E38:NSCでエラー体験3

11

①E38の反転部分を実行して、②pam実行に必要な「pamrパッケージ」がインストールされていないことに起因するエラー遭遇と対処の経験を積む。

Page 12: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E38:NSCでエラー体験4

12

①E38の反転部分を実行して、②pam実行に必要な「pamrパッケージのインストール」がインストールされていないことに起因するエラー遭遇と対処の経験を積む。実行結果。予め何が起こるかが分かっていれば、③で聞かれていることがよくわかると思います。「このモデル(NSCのこと)を利用するためには、pamrというパッケージをインストールせねばならない。今インストールしたければ1を、そうでなければ2を押してね。」と書かれています。

Page 13: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E38:NSCでエラー体験5

13

①E38の反転部分を実行して、②pam実行に必要な「pamrパッケージのインストール」がインストールされていないことに起因するエラー遭遇と対処の経験を積む。実行結果。予め何が起こるかが分かっていれば、③で聞かれていることがよくわかると思います。「このモデル(NSCのこと)を利用するためには、pamrというパッケージをインストールせねばならない。今インストールしたければ1を、そうでなければ2を押してね。」と書かれています。④「2」を押してインストールせずに一旦抜けたところ。⑤のメッセージはごもっともですね。

Page 14: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ14

Page 15: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E39:MLSeq再訪と…1

15

①MLSeqパッケージのページを再訪。②ページ下部に移動。

Page 16: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E39:MLSeq再訪と…2

16

①MLSeqパッケージのページを再訪。②ページ下部に移動。③pamrパッケージはここにありました。④Suggestsというカテゴリのようです。

Page 17: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E39:MLSeq再訪と…3

17

①MLSeqパッケージのページを再訪。②ページ下部に移動。③pamrパッケージはここにありました。④Suggestsというカテゴリのようです。どっぷり依存しているcaretパッケージは⑤Dependsというカテゴリに含まれるが、確かに③pamrはNSCという方法を使わなければインストールする必要のないものなので、④Suggestsという程度の位置づけなのだろうと読み解く。

Page 18: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E39:MLSeq再訪と…4

18

①MLSeqパッケージのページを再訪。②ページ下部に移動。③pamrパッケージはここにありました。④Suggestsというカテゴリのようです。どっぷり依存しているcaretパッケージは⑤Dependsというカテゴリに含まれるが、確かに③pamrはNSCという方法を使わなければインストールする必要のないものなので、④Suggestsという程度の位置づけなのだろうと読み解く。③pamrのリンク先のURLなどをみることで、このパッケージが(Bioconductorではなく)CRANから提供されているものだと認識できます。インストール法自体は、ほとんどの場合、E14(6月4日の講義資料)で示されているコードを参考にして、パッケージ名部分のみ変更してコピペすればうまくいきます。

Page 19: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E39:MLSeq再訪と…5

19

つまり、①E39の、②のように実行すればよいということです。③「pamr」の部分を任意のパッケージに変更することで、CRANおよびBioconductor両方から提供されているパッケージのインストールに対応できるやり方です。しかもupdate=Fにしているので「updateしますか?」的なことを聞かれる手間もない。②を実行。

Page 20: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E39:MLSeq再訪と…6

20

つまり、①E39の、②のように実行すればよいということです。③「pamr」の部分を任意のパッケージに変更することで、CRANおよびBioconductor両方から提供されているパッケージのインストールに対応できるやり方です。しかもupdate=Fにしているので「updateしますか?」的なことを聞かれる手間もない。②を実行。インストール中…。我々はほぼ遭遇しないのでやらないですが、④「RStudio」起動時に、「管理者として実行(起動)」すると、管理者権限がないことに起因するエラーを防げるようです。

Page 21: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E39:MLSeq再訪と…7

21

つまり、①E39の、②のように実行すればよいということです。③「pamr」の部分を任意のパッケージに変更することで、CRANおよびBioconductor両方から提供されているパッケージのインストールに対応できるやり方です。しかもupdate=Fにしているので「updateしますか?」的なことを聞かれる手間もない。②を実行。インストール中…。我々はほぼ遭遇しないのでやらないですが、④「RStudio」起動時に、「管理者として実行(起動)」すると、管理者権限がないことに起因するエラーを防げるようです。インストール完了後の状態(数分もかからないはず)。⑤赤枠のような感じになっていればOK。②

Page 22: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ22

Page 23: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E40:NSC再挑戦1

23

(E38と同じですが)①E40のNSC実行用スクリプトを、とりあえず先程エラーが出ることを確認した反転部分のみでよいので行う。

Page 24: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E40:NSC再挑戦2

24

(E38と同じですが)①E40のNSC実行用スクリプトを、とりあえず先程エラーが出ることを確認した反転部分のみでよいので行う。数秒ほどで終了し、②さきほどコケタところを無事クリアしていることがわかる。

Page 25: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E40:NSC再挑戦3

25

(E38と同じですが)①E40のNSC実行用スクリプトを、とりあえず先程エラーが出ることを確認した反転部分のみでよいので行う。数秒ほどで終了し、②さきほどコケタところを無事クリアしていることがわかる。③残りのスクリプトも実行して、テストセットの予測性能(accuracy)の結果まで得る。

Page 26: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E40:NSC再挑戦4

26

(E38と同じですが)①E40のNSC実行用スクリプトを、とりあえず先程エラーが出ることを確認した反転部分のみでよいので行う。数秒ほどで終了し、②さきほどコケタところを無事クリアしていることがわかる。③残りのスクリプトも実行して、テストセットの予測性能(accuracy)の結果まで得る。赤枠が実行結果。④accuracy = 0.8888889という結果が得られています。

Page 27: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E40:NSC再挑戦5

27

⑤ ⑦

(E38と同じですが)①E40のNSC実行用スクリプトを、とりあえず先程エラーが出ることを確認した反転部分のみでよいので行う。数秒ほどで終了し、②さきほどコケタところを無事クリアしていることがわかる。③残りのスクリプトも実行して、テストセットの予測性能(accuracy)の結果まで得る。赤枠が実行結果。④accuracy = 0.8888889という結果が得られています。⑤Table 2のNSCのaccuracyと同じですね。⑥でも示されていますが、E31のvoomNSC実行結果ではsparsity = 0.02でした。NSC単体でも⑦0.910となっていることがわかるので、その情報をtrained関数で調べてみます。

Page 28: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E40:NSC再挑戦6

28

(E38と同じですが)①E40のNSC実行用スクリプトを、とりあえず先程エラーが出ることを確認した反転部分のみでよいので行う。数秒ほどで終了し、②さきほどコケタところを無事クリアしていることがわかる。③残りのスクリプトも実行して、テストセットの予測性能(accuracy)の結果まで得る。赤枠が実行結果。④accuracy = 0.8888889という結果が得られています。⑤Table 2のNSCのaccuracyと同じですね。⑥でも示されていますが、E31のvoomNSC実行結果ではsparsity = 0.02でした。NSC単体でも⑦0.910となっていることがわかるので、その情報をtrained関数で調べてみます。⑧trained(fit)実行結果の前半部分。

Page 29: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E40:NSC再挑戦7

29

(E38と同じですが)①E40のNSC実行用スクリプトを、とりあえず先程エラーが出ることを確認した反転部分のみでよいので行う。数秒ほどで終了し、②さきほどコケタところを無事クリアしていることがわかる。③残りのスクリプトも実行して、テストセットの予測性能(accuracy)の結果まで得る。赤枠が実行結果。④accuracy = 0.8888889という結果が得られています。⑤Table 2のNSCのaccuracyと同じですね。⑥でも示されていますが、E31のvoomNSC実行結果ではsparsity = 0.02でした。NSC単体でも⑦0.910となっていることがわかるので、その情報をtrained関数で調べてみます。⑧trained(fit)実行結果の前半部分。最後の方。「E31:cross-validation39」では「On the

average 2 out of 100 features was used in the classifier.」という記載がありましたが、そのような記載がないことに気づく。

Page 30: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E40:NSC再挑戦8

30

(E38と同じですが)①E40のNSC実行用スクリプトを、とりあえず先程エラーが出ることを確認した反転部分のみでよいので行う。数秒ほどで終了し、②さきほどコケタところを無事クリアしていることがわかる。③残りのスクリプトも実行して、テストセットの予測性能(accuracy)の結果まで得る。赤枠が実行結果。④accuracy = 0.8888889という結果が得られています。⑤Table 2のNSCのaccuracyと同じですね。⑥でも示されていますが、E31のvoomNSC実行結果ではsparsity = 0.02でした。NSC単体でも⑦0.910となっていることがわかるので、その情報をtrained関数で調べてみます。⑧trained(fit)実行結果の前半部分。最後の方。「E31:cross-validation39」では「On the

average 2 out of 100 features was used in the classifier.」という記載がありましたが、そのような記載がないことに気づく。⑨もしかしたら100×0.910 = 91個の予測に用いられた遺伝子リストが得られるかもと思ったが表示されませんでした。

参考

Page 31: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ31

Page 32: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)1

32

Documentの13ページ目。おさらいとして、①でcontrol listを作成したのち、②E37ではSVMで、③E40ではNSCでモデル構築を行い、④Table 2のaccuracyの結果と、⑤一致することまでを確認した。

Page 33: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)2

33

Documentの13ページ目。おさらいとして、①でcontrol listを作成したのち、②E37ではSVMで、③E40ではNSCでモデル構築を行い、④Table 2のaccuracyの結果と、⑤一致することまでを確認した。⑥他の4つの分類器(classifier)の性能は各自確認してもらうとして、ここでは④Table 2にリストアップされていない、⑦caretパッケージ提供のcontinuous classifiersの一種であるランダムフォレストを実行する。

Page 34: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)3

34

Documentの13ページ目。おさらいとして、①でcontrol listを作成したのち、②E37ではSVMで、③E40ではNSCでモデル構築を行い、④Table 2のaccuracyの結果と、⑤一致することまでを確認した。⑥他の4つの分類器(classifier)の性能は各自確認してもらうとして、ここでは④Table 2にリストアップされていない、⑦caretパッケージ提供のcontinuous classifiersの一種であるランダムフォレストを実行する。実行手段は、例えばまずE28でRandom Forest (RF)利用時に指定する方法名が”rf”であることを学習しておき、①と③をテンプレートとして⑧をrfに変更したものを実行するだけである。

Page 35: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)4

35

①E41のコードを実行。ここでは106行目までしか反転させていないが、一気に115行目まで実行してもよい。

Page 36: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)5

36

①E41のコードを実行。ここでは106行目までしか反転させていないが、一気に115行目まで実行してもよい。②115行目まで実行した結果。③accuracy = 0.833333となりました。18個中15個正確に予測できたということですね。④Table 2の結果と比べると平凡な結果だということが分かります。

Page 37: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)6

37

「フィールドインフォマティクス」の大森先生(6月30日予定)のところでも解説があるかとは思いますが、Random Forestは遺伝子(features or predictors)ごとに分類への寄与度を知ることができます。従って、トレーニングセットに対してk-fold repeated cross-validationで行っていることは、いくつの遺伝子(features)を分類に用いるのかというハイパーパラメータの探索に相当すると解釈すればよいです。①trained(fit)の表示結果。

Page 38: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)7

38

「フィールドインフォマティクス」の大森先生(6月30日予定)のところでも解説があるかとは思いますが、Random Forestは遺伝子(features or predictors)ごとに分類への寄与度を知ることができます。従って、トレーニングセットに対してk-fold repeated cross-validationで行っていることは、いくつの遺伝子(features)を分類に用いるのかというハイパーパラメータの探索に相当すると解釈すればよいです。①trained(fit)の表示結果。②mtryがRandomly Selected Predictorsであり、これがハイパーパラメータです。③にも書かれているように、④Accuracyが最も高いmtry = 2がベストなモデルとして採用されていることが分かります。

② ④

Page 39: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)8

39

「E40:NSC再挑戦8」でも示しましたが、

①selectedGenes関数実行結果として、②何も出力されないのでおそらくうまく機能していないのだろうと思います。

参考

Page 40: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)9

40

①trained(fit)の表示結果の、②最後のほうで分類への寄与度が高い2遺伝子の情報を知る手段を考える。MLSeqで提供されているselectedGenes関数がうまく機能しないが、このRandomForest自体はcaretパッケージで提供されている関数が利用されていることを思い出すところがポイント。

参考

Page 41: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)10

41

①trained(fit)の表示結果の、②最後のほうで分類への寄与度が高い2遺伝子の情報を知る手段を考える。MLSeqで提供されているselectedGenes関数がうまく機能しないが、このRandomForest自体はcaretパッケージで提供されている関数が利用されていることを思い出すところがポイント。次に「caret importance」などでググってvarImpという関数がほぼドンピシャであることを学習する。③でfitオブジェクトを入力としてもうまくいかない経験などを積みながら…試行錯誤の末④trained(fit)を入力とすればよいことに辿り着く。

参考

Page 42: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)11

42

これまでに、trained(fit)の表示結果より、predictorとして2個使うときが最もトレーニングセットにおける分類精度が高いことが分かっている。遺伝子(features or predictors or variables)ごとの分類への寄与度を調べる関数が①varImp。②最も寄与度が高いのは、Random Forestの場合は「miR-145*」であったことが分かります。本日の課題は「E40のNSCの上位5個の結果」を調べ、「③Random Forestの上位5個の結果」と比較・考察せよ、です。

Page 43: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)12

43

さきほどの①varImp(trained(fit))をそのまま入力としてggplotを実行することができます。②を実行すると、③Plotsタブ上に、④全100遺伝子(100 features)の寄与度が、⑤横軸の長さとして示されます。

①②

Page 44: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)13

44

さきほどの①varImp(trained(fit))をそのまま入力としてggplotを実行することができます。②を実行すると、③Plotsタブ上に、④全100遺伝子(100 features)の寄与度が、⑤横軸の長さとして示されます。寄与度が⑥最も高いものと、⑦最も低いもののように読み解きます。Featureの名前まではわかりませんが、寄与度の全体像の把握目的で描画させたりします。

Page 45: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)14

45

さきほどの①varImp(trained(fit))をそのまま入力としてggplotを実行することができます。②を実行すると、③Plotsタブ上に、④全100遺伝子(100 features)の寄与度が、⑤横軸の長さとして示されます。寄与度が⑥最も高いものと、⑦最も低いもののように読み解きます。Featureの名前まではわかりませんが、寄与度の全体像の把握目的で描画させたりします。例えば、⑧上位30%のみにすると、⑨importanceの下限は38くらいになるだろうと予想しながら、反転部分を実行。

Page 46: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E41:RF(repeats=10)15

46

作業ディレクトリ上に、①横幅300×②縦幅450ピクセルの③importance.pngというファイルが作成されます。④上位30個に限定しているので、⑤予想通りimportanceの下限は38くらいになっていることがわかります。

②③ ①

Page 47: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ47

Page 48: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E42:RF(repeats=5)1

48

①Documentの14ページ目上部のTable 2。Accuracyは、②E37でSVMが0.944 (17/18正解)、③E40でNSCが0.889(16/18正解)、そしてさきほどE41でRandom Forest (RF)が0.833(15/18正解)という結果であった。RFは性能が低いのだろうか?という疑問を持たれると思いますが、少しパラメータをいじるだけで結果が変わる例を示します。

②③

Page 49: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E42:RF(repeats=5)2

49

①さきほどのE41では、②5-fold cross-validationを、③10回繰り返してパラメータチューニングを行いましたが…

②③

Page 50: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E42:RF(repeats=5)3

50

①さきほどのE41では、②5-fold cross-validationを、③10回繰り返してパラメータチューニングを行いましたが、④E42では、⑤repeats=5として実行しています。

Page 51: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E42:RF(repeats=5)4

51

①さきほどのE41では、②5-fold cross-validationを、③10回繰り返してパラメータチューニングを行いましたが、④E42では、⑤repeats=5として実行しています。⑥153行目までを実行した結果。⑦Accuracy = 0.889(16/18正解)となり、先程のAccuracy = 0.833(15/18正解)とは異なる結果であることがわかります。「5-fold cross-validationを5回繰り返して構築したモデルのほうが10回繰り返して構築したモデルよりもテストセットの予測性能が高い」という結果に違和感があるかもしれませんが、こういうものだということを正しく認識しておかねばなりません。

Page 52: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E42:RF(repeats=5)5

52

①trained(fit)実行結果。「E41:

RF(repeats=10)7」ではmtry = 2のときのAccuracy = 0.935873でしたが、②ぱっと見でmtry = 2のときがaccuracy = 0.9472222が最高なのだろうと判断できる。

Page 53: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E42:RF(repeats=5)6

53

①trained(fit)実行結果。「E41:

RF(repeats=10)7」ではmtry = 2のときのAccuracy = 0.935873でしたが、②ぱっと見でmtry = 2のときがaccuracy = 0.9472222が最高なのだろうと判断できる。出力結果の最後のほう。③やはりそうですね。

Page 54: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ54

Page 55: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E43:追加のtuning1

55

さきほどの最後のスライドを出発点として精度向上の手がかりの探し方の一例を示します。まず①の結果はAccuracyが単調減少っぽいので、②mtry ≧ 12あたりを一生懸命探索しても無意味だろうと判断する。

Page 56: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E43:追加のtuning2

56

さきほどの最後のスライドを出発点として精度向上の手がかりの探し方の一例を示します。まず①の結果はAccuracyが単調減少っぽいので、②mtry ≧ 12あたりを一生懸命探索しても無意味だろうと判断する。もしかしたら③mtry=3とか4あたりを利用したらよかったかもしれないが、④探索空間を10しか与えていないので①で見えているように「2, 12, 23, …, 100」のようになっているのだろうと判断する。そして④tuneLengthを98とか99にして実行すればmtry = 2, 3, 4, 5, …のような感じで1刻みで探索してくれるだろうと想像する。

Page 57: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E43:追加のtuning3

57

さきほどの最後のスライドを出発点として精度向上の手がかりの探し方の一例を示します。まず①の結果はAccuracyが単調減少っぽいので、②mtry ≧ 12あたりを一生懸命探索しても無意味だろうと判断する。もしかしたら③mtry=3とか4あたりを利用したらよかったかもしれないが、④探索空間を10しか与えていないので①で見えているように「2, 12, 23, …, 100」のようになっているのだろうと判断する。そして④tuneLengthを98とか99にして実行すればmtry = 2, 3, 4, 5, …のような感じで1刻みで探索してくれるだろうと想像する。⑤repearts=5で構築したモデルについても、念のため遺伝子ごとの寄与度をみておく。

Page 58: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E43:追加のtuning4

58

さきほどの最後のスライドを出発点として精度向上の手がかりの探し方の一例を示します。まず①の結果はAccuracyが単調減少っぽいので、②mtry ≧ 12あたりを一生懸命探索しても無意味だろうと判断する。もしかしたら③mtry=3とか4あたりを利用したらよかったかもしれないが、④探索空間を10しか与えていないので①で見えているように「2, 12, 23, …, 100」のようになっているのだろうと判断する。そして④tuneLengthを98とか99にして実行すればmtry = 2, 3, 4, 5, …のような感じで1刻みで探索してくれるだろうと想像する。⑤repearts=5で構築したモデルについても、念のため遺伝子ごとの寄与度をみておく。比較を容易にすべく、⑥「E41:RF(repeats=10)11」でも示した

repearts=10で得られた遺伝子ごとの寄与度も示している。モデル構築時のcross-validationのリピート回数を変えるだけでこれだけの違いが生じうるという事実は正しく認識しておかねばならない。

Page 59: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E43:追加のtuning5

59

①E43の反転部分を実行。E42との違いは、②tuneLength=98の部分だけです。探索数が10から98になっているのでその分だけ時間がかかります(約3分;それでもdeep learningに比べれば誤差範囲)。

Page 60: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E43:追加のtuning6

60

①E43の反転部分を実行。E42との違いは、②tuneLength=98の部分だけです。探索数が10から98になっているのでその分だけ時間がかかります(約3分;それでもdeep learningに比べれば誤差範囲)。③trained(fit)の最初のほう。④意図通りにmtryを1刻みで探索できていることがわかる。Accuracyは全体的には下落傾向ではあるが、⑤mtry = 5がmtry = 2と同じAccuracyであり、(どういう指標かまではわからないが)Kappaという指標で最大値になっていることがわかる。それでも結局採用されているのはmtry = 2であることが表示結果の最後のほうをみるとわかる。

Page 61: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E43:追加のtuning7

61

①E43の反転部分を実行。E42との違いは、②tuneLength=98の部分だけです。探索数が10から98になっているのでその分だけ時間がかかります(約3分;それでもdeep learningに比べれば誤差範囲)。③trained(fit)の最初のほう。④意図通りにmtryを1刻みで探索できていることがわかる。Accuracyは全体的には下落傾向ではあるが、⑤mtry = 5がmtry = 2と同じAccuracyであり、(どういう指標かまではわからないが)Kappaという指標で最大値になっていることがわかる。それでも結局採用されているのはmtry = 2であることが表示結果の最後のほうをみるとわかる。「E33:Optimizing…20」と同じく

⑥plot関数を用いて、⑦横軸がmtryの値、⑧縦軸がAccuracyで全体の傾向を見ているだけ。さきほどのmtry = 5は、⑨に相当する。こんな感じで全体傾向を大まかに把握してから、細かく確認する流れが一般的。

Page 62: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ62

Page 63: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析1

63

①E44の反転部分では、E43で構築したモデルを用いてテストセットの予測を行い、Accuracyを表示しているだけ。詳細に1刻みでmtry値(用いる遺伝子数)を探索したものの、結局mtry=2が採用されたため、②AccuracyがE43と同じになるのは当然です。

Page 64: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析2

64

①E44の反転部分では、E43で構築したモデルを用いてテストセットの予測を行い、Accuracyを表示しているだけ。詳細に1刻みでmtry値(用いる遺伝子数)を探索したものの、結局mtry=2が採用されたため、②AccuracyがE43と同じになるのは当然です。②Accuracy = 0.8888889なので、18サンプル中16サンプルの予測結果が正解。よって、残りの2サンプルが不正解(誤分類;misclassification)です。これらのサンプルに対する議論は当然必要です。③の大元である、④outオブジェクト内にある混同行列をもう一度眺めて不正解のサンプルを把握します。

Page 65: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析3

65

⑤outオブジェクトの、⑥混同行列部分を眺めているところ。⑦真の癌(Tumor)状態をPositiveと定義しているので、混同行列の一般的な表現と対応させると、⑧のようになります。E36とはPositiveとNegativeがそれぞれ入れ替わっているのでご注意ください。

Negative Positive

Negative True Negative (TN) False Negative (FN)

Positive False Positive (FP) True Positive (TP)

Actual

Pre

dicte

d

Page 66: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析4

66

⑤outオブジェクトの、⑥混同行列部分を眺めているところ。⑦真の癌(Tumor)状態をPositiveと定義しているので、混同行列の一般的な表現と対応させると、⑧のようになります。E36とはPositiveとNegativeがそれぞれ入れ替わっているのでご注意ください。不正解(誤分類)に相当するのは、「本当はPositive(癌)であるにも関わらず、Negative(正常)だと予測してしまった⑨False Negative (FN)」と、「本当はNegative(正常)であるにも関わらず、Positive(癌)だと予測してしまった⑩False Positive (FP)」の2種類。

Negative Positive

Negative True Negative (TN) False Negative (FN)

Positive False Positive (FP) True Positive (TP)

Actual

Pre

dicte

d

Page 67: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析5

67

Negative Positive

Negative True Negative (TN) False Negative (FN)

Positive False Positive (FP) True Positive (TP)

Actual

Pre

dicte

d

⑤outオブジェクトの、⑥混同行列部分を眺めているところ。⑦真の癌(Tumor)状態をPositiveと定義しているので、混同行列の一般的な表現と対応させると、⑧のようになります。E36とはPositiveとNegativeがそれぞれ入れ替わっているのでご注意ください。不正解(誤分類)に相当するのは、「本当はPositive(癌)であるにも関わらず、Negative(正常)だと予測してしまった⑨False Negative (FN)」と、「本当はNegative(正常)であるにも関わらず、Positive(癌)だと予測してしまった⑩False Positive (FP)」の2種類。この場合は⑪False Negative (FN)となったのが2個というのをなんとなく覚えておきつつ、そのサンプル名を同定するのがこれから行う作業です。

Page 68: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析6

68

目的:誤分類サンプルの同定。具体的な作業に入っていきます。まずは①テストセット中のサンプル名を確認。E27やE35で見えているものと同じですね。

Page 69: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析7

69

目的:誤分類サンプルの同定。具体的な作業に入っていきます。まずは①テストセット中のサンプル名を確認。E27やE35で見えているものと同じですね。次は、②テストセット中のサンプルに割り当てたラベル情報(classts$condition)と予測結果(pred)を表示。前者はE24で、そして後者はE42で作成しています。

Page 70: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析8

70

目的:誤分類サンプルの同定。具体的な作業に入っていきます。まずは①テストセット中のサンプル名を確認。E27やE35で見えているものと同じですね。次は、②テストセット中のサンプルに割り当てたラベル情報(classts$condition)と予測結果(pred)を表示。前者はE24で、そして後者はE42で作成しています。③が「本当はPositive(癌; Tumor)であるにも関わらず、Negative(正常; Non-tumor or Normal)だと予測してしまったFalse Negative (FN)」。③の要素位置に相当するサンプルが、④T11とT12だということは一応目視確認可能。しかし、ここでは基本テクを駆使して該当サンプル名のみ抽出します。

③ ③

④④

Page 71: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析9

71

目的:誤分類サンプルの同定。①要素数が同じベクトル同士であれば、要素ごとに同じかどうかを判定したTRUE or FALSEからなる論理値ベクトルを得ることができます。これは「同じかどうか?」を判定しているので、TRUEとなってほしい要素位置がFALSEになってしまっていることがわかります。

Page 72: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析10

72

目的:誤分類サンプルの同定。①要素数が同じベクトル同士であれば、要素ごとに同じかどうかを判定したTRUE or FALSEからなる論理値ベクトルを得ることができます。これは「同じかどうか?」を判定しているので、TRUEとなってほしい要素位置がFALSEになってしまっていることがわかります。なのでこの結果を得た段階で、②「違うかどうか?」を判定する記号である「!=」を用いて、③のようにすればよいと頭を切り替えます。④が実行結果。確かにTRUEとFALSEが入れ替わっていますね。

③②

Page 73: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析11

73

目的:誤分類サンプルの同定。①要素数が同じベクトル同士であれば、要素ごとに同じかどうかを判定したTRUE or FALSEからなる論理値ベクトルを得ることができます。これは「同じかどうか?」を判定しているので、TRUEとなってほしい要素位置がFALSEになってしまっていることがわかります。なのでこの結果を得た段階で、②「違うかどうか?」を判定する記号である「!=」を用いて、③のようにすればよいと頭を切り替えます。④が実行結果。確かにTRUEとFALSEが入れ替わっていますね。③の条件判定結果が、⑤赤枠内の赤下線部分で利用されています。⑥テストセットのサンプル名からなる文字列ベクトルの中から、論理値ベクトルobjがTRUEの要素のみ表示させることで、⑦目的を達成しています。

Page 74: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E44:分類結果の分析12

74

目的:誤分類サンプルの同定。ちなみに、さきほどの①と同じ結果は、②でも得られます。③と④のところが異なります。特に、④「!obj」のようにして、objのTRUE or FALSEを入れ替えることができます。⑤が実行結果。確かに同じ結果ですね。

②③

参考

Page 75: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ75

Page 76: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…1

76

①Documentの14ページ目。E40やE41で既にやりましたが、分類に寄与する遺伝子(features)を同定する話です。本科目で一貫して入力として利用しているcervical(子宮頸がん)データは714 miRNAs×58 samplesなので、②hundreds of featuresの範囲に入ります。これは少ないほうで、通常のRNA-seqカウントデータは数万遺伝子からなります。

Page 77: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…2

77

③大抵の場合、比較する群(class)間で発現が異なる(Differentially Expressed; DE) featuresはそれほど多くない。そしてこのようなDE featuresが分類への寄与度が高い。それゆえ、発現変動遺伝子(この場合はDE features)の同定はRNA-seq研究の主な目的の1つ。MLSeqでは、NSC, PLDA, and voomNSCのようなsparse algorithm (sparse classifiers)を用いることでDE featuresを検出可能。

Page 78: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…3

78

④スパースモデル(sparse models; sparse algorithmsと同じ)は、それぞれの変数選択基準(variable selection criterias)を用いて分類に寄与する重要なfeaturesを同定することができる。E40やE41でselectedGenes関数の利用経験がある状態で見れば、getter functionという言葉に狼狽しなくてすむはず。selected featuresの情報を得ているだけです。業界では特徴選択(feature selection)という表現もなされます。このようにこの業界は表記の揺れが一定程度存在するため、慣れるまでが大変ですが慣れれば世界が広がります。

Page 79: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…4

79

④スパースモデル(sparse models; sparse algorithmsと同じ)は、それぞれの変数選択基準(variable selection criterias)を用いて分類に寄与する重要なfeaturesを同定することができる。E40やE41でselectedGenes関数の利用経験がある状態で見れば、getter functionという言葉に狼狽しなくてすむはず。selected featuresの情報を得ているだけです。業界では特徴選択(feature selection)という表現もなされます。このようにこの業界は表記の揺れが一定程度存在するため、慣れるまでが大変ですが慣れれば世界が広がります。E30やE31でも少し触れていますが、⑤voomNSCで再度モデル構築して⑥の結果を得ます。⑦fit.voomNSCは、Documentの13ページ目で作成しているので、それに従います。

Page 80: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…5

80

①E45の反転部分が、Documentの13ページ目にあるvoomNSCでモデル構築するスクリプトに相当する。②最後のselectedGenes関数実行結果は、確かにDocumentの14ページ目にあるfeature namesと一致する。

Page 81: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…6

81

Documentの14ページ目の下部。①は様々なsparse classifiersで得られたselected features(分類に寄与する遺伝子のサブセット)の一致度をベン図(venn-diagram)で示し、4つの方法で共通しているのは(②で見えている)2 featuresだということを述べている。

Page 82: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…7

82

Documentの14ページ目の下部。①は様々なsparse classifiersで得られたselected features(分類に寄与する遺伝子のサブセット)の一致度をベン図(venn-diagram)で示し、4つの方法で共通しているのは(②で見えている)2 featuresだということを述べている。③Figure 2で示されている話の本筋には異論はない。しかし、④NSCの結果に違和感を持つ。⑤Table 2でも示されているように、⑥本来なら91 featuresが得られるはずである。しかしE40の最後のスライドで示すように、NSCで構築したモデルに対するselectedGenes関数実行結果では何も得られなかったからである。

Page 83: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…8

83

①の反転部分が、Documentの13ページ目にあるNSCでモデル構築するスクリプトに相当する。②最後のselectedGenes関数実行結果は、確かにE40と同様に何も表示されない。ではどうやってNSCで構築したモデルであるfit.NSCから91 featuresの情報を取得したのか?この疑問を解消していきます。①

Page 84: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…9

84

①MLSeqのBioconductorのトップページ。「E15:Documentation4」でも紹介済み

だが、②Document内で見られる図(この場合はFigure 2)は、③R Scriptを用いて作成可能。③を新規タブで開いたのが…

Page 85: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…10

85

①MLSeqのBioconductorのトップページ。「E15:Documentation4」でも紹介済み

だが、②Document内で見られる図(この場合はFigure 2)は、③R Scriptを用いて作成可能。③を新規タブで開いたのが、この状態。Figure 2(ベン図)を作成しているあたりを探す。

Page 86: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…11

86

①MLSeqのBioconductorのトップページ。「E15:Documentation4」でも紹介済み

だが、②Document内で見られる図(この場合はFigure 2)は、③R Scriptを用いて作成可能。③を新規タブで開いたのが、この状態。Figure 2(ベン図)を作成しているあたりを探す。④がvoomNSCで2featuresの名前を表示する部分であり、⑤でベン図を作成してるようなので、⑥のあたりにNSCで91 featuresの情報を取得するコードがあるだろうと予想する。

Page 87: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…12

87

④と⑤を目印として当該領域を拡大。⑦の部分でfit.NSCが使われていることや、NSCの実体がpamrパッケージである(E39)ことなどから、⑧をコピペ実行して得られるgenes.pamの中に91個のfeature names情報があるのだろうと予想する。そして⑨と比較して、やはりNSCはselectedGenesではダメだと確信する。

Page 88: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E45:Determining…13

88

④と⑤を目印として当該領域を拡大。⑦の部分でfit.NSCが使われていることや、NSCの実体がpamrパッケージである(E39)ことなどから、⑧をコピペ実行して得られるgenes.pamの中に91個のfeature names情報があるのだろうと予想する。そして⑨と比較して、やはりNSCはselectedGenesではダメだと確信する。⑩の反転部分をコピペ実行した結果。赤枠がさきほどのスライド中の⑧に相当する。⑪確かにgenes.pamには91個の feature names情報が含まれていますね。こんな感じで納得しながら進めていくとよいと思います。

Page 89: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ89

Page 90: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E46:探索的な解析1

90

今回用いたcervicalデータ(714 features×58 samples)の探索的な解析を通じて、サンプル間の類似性に関する全体像を把握します。「(Rで)塩基配列解析」の、①PHATEのところをクリック。

Page 91: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E46:探索的な解析2

91

今回用いたcervicalデータ(714 features×58 samples)の探索的な解析を通じて、サンプル間の類似性に関する全体像を把握します。「(Rで)塩基配列解析」の、①PHATEのところをクリック。こんな感じになる。②は例題1なので、③下矢印キーを押して、例題4を探す。

Page 92: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E46:探索的な解析3

92

①例題4が、本科目で一貫して利用しているcervicalデータを入力ファイルとしています。②PHATEについては、「機能ゲノム学」2020年6月2日実施分の「正規化を含む手順で手持ちデータをPHATE実行(スライド207-219)」でも解説しています。③例題2とは、基本的に入力データが異なるだけです。

Page 93: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E46:探索的な解析4

93

今はPHATEで次元削減(714 dimensions 2 dimensions)を行って、2次元平面上

でサンプル間の類似度を眺めようとしています。今は答え(どのサンプルがどの群に属するか)が既知で、誤分類サンプルがどのあたりに位置していたかを眺めるのが主目的なので、④で示しているように、⑤でラベル情報を付与しています。

Page 94: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E46:探索的な解析5

94

今はPHATEで次元削減(714 dimensions 2 dimensions)を行って、2次元平面上

でサンプル間の類似度を眺めようとしています。今は答え(どのサンプルがどの群に属するか)が既知で、誤分類サンプルがどのあたりに位置していたかを眺めるのが主目的なので、④で示しているように、⑤でラベル情報を付与しています。⑥入出力ファイル。⑦入力ファイルはここからもダウンロード可能。⑧遺伝子や細胞(ここではサンプルと読み替える)のフィルタリング条件。PHATEのデフォルト。⑨例題4をコピペ実行。

⑦⑨

Page 95: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E46:探索的な解析6

95

赤枠が、①実行結果ファイルの中身。大まかに②左側にN群(ラベルは1)が、そして③右側にT群(ラベルは2)が位置していることがわかる。

②③

Page 96: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E46:探索的な解析7

96

赤枠が、①実行結果ファイルの中身。大まかに②左側にN群(ラベルは1)が、そして③右側にT群(ラベルは2)が位置していることがわかる。誤分類サンプルはT11とT12であったことから(E44:分類結果の分析11)、④で見えているT群が多

数派を占める領域にプロットされている本当はN群に属する2サンプルは、おそらくトレーニングセットを用いたモデル構築時に誤分類されていたものなのだろうと推測する。これらの個別のサンプルを同定するためには、PHATE実行結果オブジェクトを詳細に見る必要がある。

Page 97: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ97

Page 98: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果1

98

目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。目的2:①T群が多数派を占める領域にプロットされている本当はN群に属する2サンプルの名前を知りたい。いずれの目的を達成する上でも重要なのは、②PHATE実行結果オブジェクトoutを自在に操るスキル。

Page 99: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果2

99

目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。目的2:①T群が多数派を占める領域にプロットされている本当はN群に属する2サンプルの名前を知りたい。いずれの目的を達成する上でも重要なのは、②PHATE実行結果オブジェクトoutを自在に操るスキル。赤枠内は、③例題4のスクリプトの最後のほう。②PHATE実行結果のoutは、④ggplotの入力として使われており、⑤PHATE1という名前の列がx軸で、⑥PHATE2という名前の列がy軸で使われていると解釈する。これらの知識をうまく活用してやりたいことをどう実現するかを考えていきます。

⑤ ⑥

Page 100: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果3

100

目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。目的2:①T群が多数派を占める領域にプロットされている本当はN群に属する2サンプルの名前を知りたい。目的2を達成するためには、②y軸(PHATE2)が、③-0.05未満という条件を満たす3サンプルを表示させればよいと判断した。④outオブジェクトをベースとして考えていく。

Page 101: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果4

101

目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。目的2:①T群が多数派を占める領域にプロットされている本当はN群に属する2サンプルの名前を知りたい。目的2を達成するためには、②y軸(PHATE2)が、③-0.05未満という条件を満たす3サンプルを表示させればよいと判断した。④outオブジェクトをベースとして考えていく。⑤E47。⑥まずはoutオブジェクトを眺める。⑦を見た段階で、out$embeddingでよいのだろうと判断できる。

Page 102: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果5

102

目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。目的2:①T群が多数派を占める領域にプロットされている本当はN群に属する2サンプルの名前を知りたい。目的2を達成するためには、②y軸(PHATE2)が、③-0.05未満という条件を満たす3サンプルを表示させればよいと判断した。④outオブジェクトをベースとして考えていく。⑤E47。⑥まずはoutオブジェクトを眺める。⑦を見た段階で、out$embeddingでよいのだろうと判断できる。⑧の実行結果を眺めることで、out$embedding内に描画に必要なサンプルごとの2次元の数値情報が格納されていることが確定する。次は、条件判定したい⑨PHATE2列の情報取得。

Page 103: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果6

103

目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。目的2:①T群が多数派を占める領域にプロットされている本当はN群に属する2サンプルの名前を知りたい。目的2を達成するためには、②y軸(PHATE2)が、③-0.05未満という条件を満たす3サンプルを表示させればよいと判断した。④outオブジェクトをベースとして考えていく。⑤E47。⑥まずはoutオブジェクトを眺める。⑦を見た段階で、out$embeddingでよいのだろうと判断できる。⑧の実行結果を眺めることで、out$embedding内に描画に必要なサンプルごとの2次元の数値情報が格納されていることが確定する。次は、条件判定したい⑨PHATE2列の情報取得。⑩のようなことを試すことで、⑪が目的の数値ベクトルだと判断する。

Page 104: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果7

104

目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。目的2:①T群が多数派を占める領域にプロットされている本当はN群に属する2サンプルの名前を知りたい。目的2を達成するためには、②y軸(PHATE2)が、③-0.05未満という条件を満たす3サンプルを表示させればよいと判断した。④outオブジェクトをベースとして考えていく。⑤E47。⑥まずはoutオブジェクトを眺める。⑦を見た段階で、out$embeddingでよいのだろうと判断できる。⑧の実行結果を眺めることで、out$embedding内に描画に必要なサンプルごとの2次元の数値情報が格納されていることが確定する。次は、条件判定したい⑨PHATE2列の情報取得。⑩のようなことを試すことで、⑪が目的の数値ベクトルだと判断する。さきほどの⑪はこの部分で条件判定に使われている。⑫予定通り3サンプルが条件を満たしている。

Page 105: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果8

105

目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。目的2:T群が多数派を占める領域にプロットされている本当はN群に属する2サンプルの名前を知りたい。①の結果を眺めることで、②がN21、③がN14であることがx軸のPHATE1の数値から確定し、目的2のミッションクリア。

Page 106: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果9

106

次は目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。①をよく見ると、実は誤分類サンプルの1つであるT12は④だったことが分かる。二次元平面上で表示させているとはいえ、「③N14と④T12がこれだけ近接していればそりゃ無理だ」と納得がいく。←分類系の論文のdiscussionによく記載される事柄。

Page 107: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果10

107

次は目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。①をよく見ると、実は誤分類サンプルの1つであるT12は④だったことが分かる。二次元平面上で表示させているとはいえ、「③N14と④T12がこれだけ近接していればそりゃ無理だ」と納得がいく。←分類系の論文のdiscussionによく記載される事柄。少し脱線して、②と③は誤分類サンプルでないことは既知であるが、トレーニングセットとテストセットのどちらだったか定かではないため、⑤テストセットのサンプル名を表示。

Page 108: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E47:PHATE実行結果11

108

次は目的1:誤分類サンプル(T11とT12)がPHATE実行結果でどこに位置しているのか知りたい。①をよく見ると、実は誤分類サンプルの1つであるT12は④だったことが分かる。二次元平面上で表示させているとはいえ、「③N14と④T12がこれだけ近接していればそりゃ無理だ」と納得がいく。←分類系の論文のdiscussionによく記載される事柄。少し脱線して、②と③は誤分類サンプルでないことは既知であるが、トレーニングセットとテストセットのどちらだったか定かではないため、⑤テストセットのサンプル名を表示。結果として、②N21はテストセットに含まれているが正しくNと分類されていたことがわかる。そしてその理由付けとして、③N14がトレーニングセットに含まれていたためだと解釈できる。「もし②N21がトレーニングセット、③N14がテストセットだったら、N14は間違いなく誤分類されるだろう。」また、「もし②と③が共にテストセットだったら、2つとも間違いなく誤分類されるだろう。」

Page 109: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ109

Page 110: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル…1

110

目的1:誤分類サンプル(T11と④T12)がPHATE実行結果でどこに位置しているのか知りたい。やっと目的1の本番。既にT12の位置は④だと分かっているので、残りはT11のみ。直感的に「もし⑤がテストセットのサンプルなら、これだろうな」と予想がつく(実際それで正解)。

Page 111: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル…2

111

目的1:誤分類サンプル(T11と④T12)がPHATE実行結果でどこに位置しているのか知りたい。やっと目的1の本番。既にT12の位置は④だと分かっているので、残りはT11のみ。直感的に「もし⑤がテストセットのサンプルなら、これだろうな」と予想がつく(実際それで正解)。ここでは、「N群が赤系、T群が青系という色合いを保持したまま」で、「トレーニングセットのサンプルは塗りつぶさない(pch=1; 〇)、テストセットのサンプルは塗りつぶす(pch=19; ●)」、そして「誤分類サンプルの

みサイズを大きく(size=4 ; ●)」した図を作成します。つまり左図が完成形。

Page 112: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル…3

112

①E48。②E48_1.png、③E48_2.png、④E48_3.pngを作成するコードは、ggplotに慣れることを目的として提供しているだけですので、各自で実行して下さい。

Page 113: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル…4

113

①E48。②E48_1.png、③E48_2.png、④E48_3.pngを作成するコードは、ggplotに慣れることを目的として提供しているだけですので、各自で実行して下さい。特に深い意味はないが、⑤E48_4.pngを作成するスクリプトから実行していきます。

Page 114: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル…5

114

①E48。②E48_1.png、③E48_2.png、④E48_3.pngを作成するコードは、ggplotに慣れることを目的として提供しているだけですので、各自で実行して下さい。特に深い意味はないが、⑤E48_4.pngを作成するスクリプトから実行していきます。⑥実行結果。現時点ではまだ色分けされているだけです。

Page 115: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル…6

115

①E48_6.png作成用スクリプトです。②さきほどのE48_4.png作成用スクリプトとの違いは、③pch=1というオプションが追加されているだけです。pch=1は、○のような感じで塗りつぶさない丸の指定に相当します。④でN群が1、T群が2という色指定は保持されたままなので、N群が○、T群が○のような感じにプロットされます。

③④

Page 116: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル…7

116

①E48_6.png作成用スクリプトです。②さきほどのE48_4.png作成用スクリプトとの違いは、③pch=1というオプションが追加されているだけです。pch=1は、○のような感じで塗りつぶさない丸の指定に相当します。④でN群が1、T群が2という色指定は保持されたままなので、N群が○、T群が○のような感じにプロットされます。実行結果。③pch=1によって、全てのサンプルが塗りつぶさない丸になってます。

Page 117: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル…8

117

①E48_6.png作成用スクリプトです。②さきほどのE48_4.png作成用スクリプトとの違いは、③pch=1というオプションが追加されているだけです。pch=1は、○のような感じで塗りつぶさない丸の指定に相当します。④でN群が1、T群が2という色指定は保持されたままなので、N群が○、T群が○のような感じにプロットされます。実行結果。③pch=1によって、全てのサンプルが塗りつぶさない丸になってます。次は、③pchオプションのところに与える情報を「トレーニングセットのサンプルは塗りつぶさない(pch=1; 〇)、テストセットのサンプルは塗りつぶす(pch=19; ●)」作業に移行します。

Page 118: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル…9

118

①E48_6.png作成用スクリプトです。②さきほどのE48_4.png作成用スクリプトとの違いは、③pch=1というオプションが追加されているだけです。pch=1は、○のような感じで塗りつぶさない丸の指定に相当します。④でN群が1、T群が2という色指定は保持されたままなので、N群が○、T群が○のような感じにプロットされます。実行結果。③pch=1によって、全てのサンプルが塗りつぶさない丸になってます。次は、③pchオプションのところに与える情報を「トレーニングセットのサンプルは塗りつぶさない(pch=1; 〇)、テストセットのサンプルは塗りつぶす(pch=19; ●)」作業に移行します。赤枠部分でトレーニングセットとテストセットのサンプルに与えるプロットの形状(pch=1で塗りつぶさないか、pch=19で塗りつぶすか)という数値ベクトルからなる④param_pchを、⑤pchオプションのところで与えています。まずは赤枠内を実行。

Page 119: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル..10

119

③④

実行結果。①でサンプル数分だけの1からなる数値ベクトルを作成してparam_pchに格納。②でサンプル名情報をparam_pchのnames属性に代入。③で、④テストセットのサンプルに相当する要素に19を代入。ここまででトレーニングセットとテストセットの各サンプルに意図通りのプロットの形状(pch=1で塗りつぶさないか、pch=19で塗りつぶすか)を与えるためのparam_pchの作成完了。

Page 120: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル..11

120

⑥⑤

実行結果。①でサンプル数分だけの1からなる数値ベクトルを作成してparam_pchに格納。②でサンプル名情報をparam_pchのnames属性に代入。③で、④テストセットのサンプルに相当する要素に19を代入。ここまででトレーニングセットとテストセットの各サンプルに意図通りのプロットの形状(pch=1で塗りつぶさないか、pch=19で塗りつぶすか)を与えるためのparam_pchの作成完了。⑤E48_7.pngを作成する残りのコードを実行。⑥さきほど作成したparam_pchは、⑦の部分で利用されています。

Page 121: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル..12

121

⑥⑤

実行結果。ここまでで、「N群が赤系、T群が青系という色合いを保持したまま」で、「トレーニングセットのサンプルは塗りつぶさない(pch=1; 〇)、テストセットのサンプルは塗りつぶす(pch=19; ●)」までができました。残りは、「誤分類サンプルの

みサイズを大きく(size=4 ; ●)」です。

Page 122: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル..13

122

最終段階。①を行います。②で誤分類サンプル情報をmisclassifiedオブジェクトに格納。③は、さきほどのparam_pch作成と同じノリでプロットの大きさ情報を格納した数値ベクトルparam_sizeを作成している部分。まずは反転部分を実行。

①②

Page 123: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル..14

123

最終段階。①を行います。②で誤分類サンプル情報をmisclassifiedオブジェクトに格納。③は、さきほどのparam_pch作成と同じノリでプロットの大きさ情報を格納した数値ベクトルparam_sizeを作成している部分。まずは反転部分を実行。実行結果。確かに②誤分類サンプルに相当する要素のみが、③で指定した4になっていることが、④で確認できます。

Page 124: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル..15

124

⑤E48_8.png作成部分のスクリプト実行結果。③で作成したparam_sizeは、⑥の部分で利用されています。

Page 125: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル..16

125

考察1。誤分類サンプルであった①T11と②T12は、Normal (Non-tumor)群との境界線上にあったと考えられる。③隠れて見辛いがN12はトレーニングセットのサンプルなので、これがN群に分類されるような判別曲線が構築されているはずなので、②T12が誤分類されるは至極当然。①は、どうみても④よりも⑤のほうに近いのでN群と判定されるのは致し方ないと(私なら)考える。

Page 126: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E48:誤分類サンプル..17

126

考察2。今度はもし①T11と②T12がトレーニングセットに含まれていたならと考える。さらに④N21もトレーニングセットに、そして③N12がテストセットに含まれていたとしたら、おそらくトレーニングセット内の分類精度はパーフェクトとなっていたであろう。そしてテストセットの予測結果は、③N12のみ誤分類だっただろう。「当て物」系は、このようなトレーニングセットとテストセットに割り当てられるサンプルの巡りあわせよっても結果が変わる。逆に言えば、ここで考察しているように、分類精度はデータセット全体の探索的な解析の結果を眺めれば容易に想像可能。

Page 127: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ127

Page 128: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E49:入力データ取得1

128

深層学習利用時につまづくポイントの1つはハイパーパラメータ。K-meansクラスタリング利用時にKの値を事前に決めておくというのは何となくわかると思いますが、それと同じです(Kがハイパーパラメータに相当)。ここからは、問題を簡略化すべく、714次元からなるcervicalデータではなく、赤枠で示されている2次元のPHATE実行後のデータを入力として取り扱います。線形SVMと非線形SVMでどのような分離境界が設定される(予測モデルが構築される)かを、赤枠の2次元平面上で確認していきます。

Page 129: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E49:入力データ取得2

129

深層学習利用時につまづくポイントの1つはハイパーパラメータ。K-meansクラスタリング利用時にKの値を事前に決めておくというのは何となくわかると思いますが、それと同じです(Kがハイパーパラメータに相当)。ここからは、問題を簡略化すべく、714次元からなるcervicalデータではなく、赤枠で示されている2次元のPHATE実行後のデータを入力として取り扱います。線形SVMと非線形SVMでどのような分離境界が設定される(予測モデルが構築される)かを、赤枠の2次元平面上で確認していきます。非線形SVMとしてよく用いられるRBFカーネルは、Cとgamma (or sigma)という2つのハイパーパラメータを持ちます(E33)。kernlabとcaretパッケージを用いてパラメータの挙動やグリッドサーチなどを行い、ggplot2の豊富な描画例を示すことを通じて、「アルゴリズムの詳細までは分からないが使いこなせる」ことを目指します。AI系のより詳細については「知識情報処理論」で知識を深めてください。

参考:https://logics-of-blue.com/svm-concept/

Page 130: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E49:入力データ取得3

130

①E49。②前処理を含むPHATEによる次元削減については、「機能ゲノム学(2020年6月2日実施分)」で紹介済み。③2次元平面上にプロットできるということは、サンプルごとに元となるPHATE1(x軸)とPHATE2(y軸)の数値が存在するということ。その情報に相当するout$embeddingオブジェクトの中身を取り出したものが、④data_phate.txt。

Page 131: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E49:入力データ取得4

131

①E49。②前処理を含むPHATEによる次元削減については、「機能ゲノム学(2020年6月2日実施分)」で紹介済み。③2次元平面上にプロットできるということは、サンプルごとに元となるPHATE1(x軸)とPHATE2(y軸)の数値が存在するということ。その情報に相当するout$embeddingオブジェクトの中身を取り出したものが、④data_phate.txt。⑤が出力ファイルの中身。確かに⑥N群のサンプルはPHATE1(x軸)の値が全てマイナスなので、⑦妥当ですね。PHATE実行結果の数値は毎回微妙に変わるので細かい違いは気にしない。

Page 132: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ132

Page 133: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E50:分割から描画まで1

133

①E50。②data_phate.txtを入力として、これまでと同じサンプルからなるトレーニングセットとテストセットに分割するところまで。反転部分を実行。数値行列とラベル情報は以下の通り:data:全58サンプルの数値行列cl:全58サンプルのラベル情報data.train:トレーニングセットの数値行列cl.train:トレーニングセットのラベル情報data.test:テストセットの数値行列cl.test:テストセットのラベル情報

Page 134: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E50:分割から描画まで2

134

①E50。②data_phate.txtを入力として、これまでと同じサンプルからなるトレーニングセットとテストセットに分割するところまで。反転部分を実行。数値行列とラベル情報は以下の通り:data:全58サンプルの数値行列cl:全58サンプルのラベル情報data.train:トレーニングセットの数値行列cl.train:トレーニングセットのラベル情報data.test:テストセットの数値行列cl.test:テストセットのラベル情報③412行目まで実行後に、④のような感じで確認してもよい(optional)。

Page 135: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E50:分割から描画まで3

135

①次は散布図。モデル構築はトレーニングセットのみで行うので、軸の範囲が変わらないように、②で全データから得られた最大と最小値を与えている。②の情報は③で使われている。ggplotのノリに慣れるのも目的の1つ。

Page 136: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E50:分割から描画まで4

136

①次は散布図。モデル構築はトレーニングセットのみで行うので、軸の範囲が変わらないように、②で全データから得られた最大と最小値を与えている。②の情報は③で使われている。ggplotのノリに慣れるのも目的の1つ。④出力結果。⑤pch=18としてプロットの形状を変更しています。全58サンプルのデータです。

Page 137: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E50:分割から描画まで5

137

①次はトレーニングセットの散布図(計40サンプル)。予測モデルの構築(分離境界の設定)は、この散布図に基づいて行われます。

Page 138: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E50:分割から描画まで6

138

①次はトレーニングセットの散布図(計40サンプル)。予測モデルの構築(分離境界の設定)は、この散布図に基づいて行われます。②最後はテストセットの散布図(計18サンプル)。ここでプロットされているものたちがどのように判定(予測)されるかを想像しながら、トレーニングセットから構築されたモデルを評価します。

Page 139: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ139

Page 140: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E51:サンプル名で描画1

140

①E51。プロットを記号ではなくテキストで描画するテクニックです。②geom_text関数を用います。指定に用いている情報がgeom_point関数のときと異なる点に注意。重なると見辛いので、geom_point関数部分はコメントアウトしています。

参考

Page 141: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E51:サンプル名で描画2

141

参考

①E51。プロットを記号ではなくテキストで描画するテクニックです。②geom_text関数を用います。指定に用いている情報がgeom_point関数のときと異なる点に注意。重なると見辛いので、geom_point関数部分はコメントアウトしています。③実行結果。

Page 142: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E51:サンプル名で描画3

142

参考 ①E51。プロットを記号ではなくテキストで描画するテクニックです。②geom_text関数を用います。指定に用いている情報がgeom_point関数のときと異なる点に注意。重なると見辛いので、geom_point関数部分はコメントアウトしています。③実行結果。④トレーニングセットの結果。

Page 143: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E51:サンプル名で描画4

143

参考 ①E51。プロットを記号ではなくテキストで描画するテクニックです。②geom_text関数を用います。指定に用いている情報がgeom_point関数のときと異なる点に注意。重なると見辛いので、geom_point関数部分はコメントアウトしています。③実行結果。④トレーニングセットの結果。⑤テストセットの結果。

Page 144: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ144

Page 145: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel1

145

①E52。線形カーネルを用いたSVMなので、線形SVMとも呼ばれます。(必ずしもそうする必要はありませんが)ここでは②の参考URLに従って、③のような感じでクラスラベル情報の列名を与えたdata.frame形式のhoguオブジェクトをSVMの入力として用います。

Page 146: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel2

146

①E52。線形カーネルを用いたSVMなので、線形SVMとも呼ばれます。(必ずしもそうする必要はありませんが)ここでは②の参考URLに従って、③のような感じでクラスラベル情報の列名を与えたdata.frame形式のhoguオブジェクトをSVMの入力として用います。(E50でひっそりロードしている)kernlabパッケージ提供の、④ksvm関数を用いてSVMを実行します。⑤PHATE2とPHATE1という2つの説明変数を用いて、⑥classという(1 or 2)という質的なクラスラベル情報を目的変数として与えています。⑤と⑥で与えている情報は、③で作成したhoguの列名です。細かい話として、⑤で指定するのは「PHATE1 + PHATE2」としてもよいですが、最終的にプロットする際に「y軸+ x軸」の順番で描画されることが経験的に分かっているので、x軸をPHATE1にすべくそうしています。

⑥⑤

Page 147: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel3

147

⑤と⑥で与えているのは列名情報のみなので、⑦参照元情報としてhoguを与えています。ここでは分類(classification)に適用するので、⑧svcという文字列を含むものを指定します。尚、SVMは回帰分析用(regression)としても利用可能です。その場合はsvrという文字列を含むオプションを指定します(サポートベクター回帰;Support Vector Regressionと呼ばれるものです)。⑨ここではまず線形分離(2つの群の分離境界を直線で設定)したいので、vanilladotを指定します。他にもk-fold cross validationを行うためのcrossオプション(デフォルトは0で実行しない)などもありますが、ここでは割愛します。反転部分を実行。

⑥⑤

⑧ ⑨

Page 148: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel4

148

実行後の状態。①ksvm実行結果を格納したtrainedオブジェクトの表示結果。②線形SVMも「誤分類をどの程度許容するかというコストパラメータC」 を指定可能であったのだろうということがわかります。Cの値が小さいほど誤分類の許容度が大きいことを意味します(E33)。③を見ることで、④で指定したvanilladotのvanillaがlinearに相当するのだろうということが分かります。

Page 149: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel5

149

実行後の状態。①ksvm実行結果を格納したtrainedオブジェクトの表示結果。②線形SVMも「誤分類をどの程度許容するかというコストパラメータC」 を指定可能であったのだろうということがわかります。Cの値が小さいほど誤分類の許容度が大きいことを意味します(E33)。③を見ることで、④で指定したvanilladotのvanillaがlinearに相当するのだろうということが分かります。⑤SVMの名前の由来でもある「サポートベクターの数」は6。分離境界を決めるために用いたサンプル数は6個だと解釈する。入力は行列だが、各サンプルはベクトル(vector)だと思えば納得しやすいでしょう。この場合はどちらかといえばサポートベクトルと表現したほうがよいですが、私の感覚ではSVMのことをサポートベクターマシンと呼ぶほうが多数派だと思うので、その表現に合わせているだけです。

Page 150: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel6

150

⑥は私もよく理解しきれておりません、すみませんm(_ _)m。⑦トレーニングセットの分類精度。エラー率が0.025で全40サンプルなので、40×0.025 = 1サンプルだけミスってることがわかる。⑧「E51:サンプル名で描画3」の結果を思い出し、⑨

誤分類サンプルはN14だろうと想像する。

⑦⑥

Page 151: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel7

151

参考 ⑥は私もよく理解しきれておりません、すみませんm(_ _)m。⑦トレーニングセットの分類精度。エラー率が0.025で全40サンプルなので、40×0.025 = 1サンプルだけミスってることがわかる。⑧「E51:サンプル名で描画3」の結果を思い出し、⑨

誤分類サンプルはN14だろうと想像する。どうにかしてN14というサンプル名情報を取得したいヒト用に、私の思考回路を紹介。⑩strでtrainedの構造を把握し、誤分類サンプル名そのものはとれなそうだが、502-503行目でも見えているymatrixやfittedというslotに40個の要素からなるベクトルがあることを見出し、これを利用すればいいんじゃないかという当たりをつける。⑪でN14の要素位置が大体11番目くらいであることを把握。502-503行目を実行し、ほぼこれで間違いないだろうと判断し、⑫でTRUEor FALSEの論理値ベクトルobjを作成。⑬で!objでTRUE or FALSEを入れ替えて、目的のN14を表示。このやり方で本当によいかはわからないが、ミスが確定するまでこの手段を採用。

Page 152: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel8

152

SVMの肝となる部分である、①分離境界を決めるために用いた6個のサンプル(サポートベクター)に関する詳細を知る。

Page 153: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel9

153

SVMの肝となる部分である、①分離境界を決めるために用いた6個のサンプル(サポートベクター)に関する詳細を知る。②SVindex関数は、(トレーニングセットの)サンプルのインデックス情報を返す。これは入力データであるdata.trainの行番号情報に相当するので、③のようにすれば、目的のサンプル名情報を得ることができる。△や○で示すように、確かに分離境界上に位置するサンプルが利用されていることがわかりますね。

Page 154: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel10

154

①plot関数で簡単に分離境界を視覚化できる。②濃い赤ほどN群(ラベルが1)、③濃い青ほどT群(ラベルが2)に分類されるのだろうということが分かる。サポートベクターとして使われているサンプルは塗りつぶされていることがわかります。④線形SVMで分離境界を設定しただけあって、確かに直線ですね。

Page 155: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel11

155

PNGファイルへの保存例。軸の範囲指定も同時に行っています。ggplot関数ではないので、①の部分がE50のとき(xlimやylimと指定)とは異なっている点に注意してください。

参考

Page 156: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel12

156

①テストセットの予測(E35)。②1つだけ本当はラベル1のものをラベル2と予測してしまっていることがわかる。

Page 157: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel13

157

①テストセットの予測(E35)。②1つだけ本当はラベル1のものをラベル2と予測してしまっていることがわかる。③分類精度を表示。E36ではpositive = “T”としていたが、E50で④cl.testを1 or 2に設定しているので、positive = “2”としている。

Page 158: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E52:linear kernel14

158

テストセットの予測結果を追加で描画しようとしてコケた例。参考まで。①右にずれた結果になる理由については、527-529行目にたぶんそうだろうと思われる理由を記載。

参考

Page 159: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ159

Page 160: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E53:Cを変える1

160

①E53。反転部分は、さきほどのE52をデフォルトの②C=1を明記して再実行しているだけ。③E53_1.pngが先程のE52と同じ分離境界になっていることを確認。

②③

Page 161: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E53:Cを変える2

161

②③

①554行目。C=1の場合はTraining error = 0.025となっており、トレーニングセットで構築したモデルの段階で1つ誤分類となっていた。そこで誤分類の許容度を下げるべく、(実際にはいろいろ試してうまくいくことを確認したうえで)②C = 50で実行。③E53_2.pngの分離境界が変わっていることを確認。

Page 162: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E53:Cを変える3

162

①554行目。C=1の場合はTraining error = 0.025となっており、トレーニングセットで構築したモデルの段階で1つ誤分類となっていた。そこで誤分類の許容度を下げるべく、(実際にはいろいろ試してうまくいくことを確認したうえで)②C = 50で実行。③E53_2.pngの分離境界が変わっていることを確認。④Training errorが0になっていることからもわかるように、⑤トレーニングセットのN14がギリギリN群に分類されるようになっています。⑥サポートベクターも3つに変更されてますね。

Page 163: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E53:Cを変える4

163

①C=50で構築したモデルを用いてテストセットの予測。②C=1のとき(N21)とは異なるサンプル(T12)が誤分類されていることがわかる。

Page 164: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E53:Cを変える5

164

①C=50で構築したモデルを用いてテストセットの予測。②C=1のとき(N21)とは異なるサンプル(T12)が誤分類されていることがわかる。③テストセットで誤分類サンプルを表示させるコマンド例。

参考

Page 165: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ165

Page 166: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E54:RBF kernel1

166

①E54。E17・E30・E33でも述べた、②RBFカーネル(kernel = “rbfdot”)を用いて非線形SVMを行うスクリプト。実行結果として、③Training errorは0(誤分類サンプルはなし)。それゆえ、④誤分類サンプルを表示するコマンド実行結果は、表示するものがないので「character(0)」となる。

Page 167: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E54:RBF kernel2

167

①E54。E17・E30・E33でも述べた、②RBFカーネル(kernel = “rbfdot”)を用いて非線形SVMを行うスクリプト。実行結果として、③Training errorは0(誤分類サンプルはなし)。それゆえ、④誤分類サンプルを表示するコマンド実行結果は、表示するものがないので「character(0)」となる。⑤分離境界を描画。塗りつぶされたプロットが多いことから、多くのサンプルがサポートベクターとして利用されたことが分かります。非線形っぽいですね。

Page 168: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E54:RBF kernel3

168

①E54。E17・E30・E33でも述べた、②RBFカーネル(kernel = “rbfdot”)を用いて非線形SVMを行うスクリプト。実行結果として、③Training errorは0(誤分類サンプルはなし)。それゆえ、④誤分類サンプルを表示するコマンド実行結果は、表示するものがないので「character(0)」となる。⑤分離境界を描画。塗りつぶされたプロットが多いことから、多くのサンプルがサポートベクターとして利用されたことが分かります。非線形っぽいですね。⑥テストセットの予測。⑦18個中16個正解(Accuracy = 0.8888889)。⑧誤分類サンプルは2つ。線形SVMよりも劣ることがわかります。⑦の記述法はE42やE44と同じ。

Page 169: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ169

Page 170: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E55:sigmaを変える1

170

①E55。②さきほどデフォルト設定で構築した「RBFカーネルの非線形SVMモデル」であるtrainedオブジェクトの中身を表示。 RBFカーネルを利用する際によく議論されるハイパーパラメータは、③E53でも議論した「誤分類をどの程度許容するかというコストパラメータC(小さい値ほど誤分類の許容度が高い)」と、④これから議論する「クラス分類の境界をどの程度複雑にするかを指定するgamma (or sigma)と呼ばれるパラメータ(小さい値ほど複雑度が低い)」の2つが挙げられます。

Page 171: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E55:sigmaを変える2

171

①E55。②さきほどデフォルト設定で構築した「RBFカーネルの非線形SVMモデル」であるtrainedオブジェクトの中身を表示。 RBFカーネルを利用する際によく議論されるハイパーパラメータは、③E53でも議論した「誤分類をどの程度許容するかというコストパラメータC(小さい値ほど誤分類の許容度が高い)」と、④これから議論する「クラス分類の境界をどの程度複雑にするかを指定するgamma (or sigma)と呼ばれるパラメータ(小さい値ほど複雑度が低い)」の2つが挙げられます。一般には分離境界を複雑にするためには、より多くのサポートベクターが必要になります。このトレーニングセットのデータの場合は、④sigma ≒ 7のときに⑤24個のサポートベクターが必要でした。以降は、sigmaの値を小さく(分離境界の複雑度を低く)していくとどんな感じになるかを見ていきます。

Page 172: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E55:sigmaを変える3

172

①602行目以降。「sigma ≒ 7のときにはサポートベクターが24個必要だった」を踏まえて、②sigma=1.0としてモデル構築した結果。結果として、③ 「sigma = 1のときにはサポートベクターが11個必要だった」ことがわかる。この結果だけからも、分離境界の複雑度が低くなっているであろうことが予想できる。ちなみにトレーニングセットでの誤分類サンプルは、④N14。

Page 173: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E55:sigmaを変える4

173

①602行目以降。「sigma ≒ 7のときにはサポートベクターが24個必要だった」を踏まえて、②sigma=1.0としてモデル構築した結果。結果として、③ 「sigma = 1のときにはサポートベクターが11個必要だった」ことがわかる。この結果だけからも、分離境界の複雑度が低くなっているであろうことが予想できる。ちなみにトレーニングセットでの誤分類サンプルは、④N14。⑤描画結果。E54と比べて、複雑度が低下している意味がよくわかる。

Page 174: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E55:sigmaを変える5

174

①テストセットの予測。②sigmaが変わっても誤分類サンプルは2個のままですが、E54のときはT12とN21だったので、今回のT11とは異なりますね。③「E51:サンプル名で描画4」で得られたテストセット

の散布図と、それぞれの分離境界を自分で当てはめると納得できるでしょう。

Page 175: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ175

Page 176: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E56:E33で得た…1

176

「E33:Optimizing…16」では、MLSeqを用いたハイパーパラメータチューニングの結果としてC=8 and sigma = 0.006054987という結果が得られていた。①E56では、それらの値を、②で指定して実行してみる。結果として、③サポートベクター数は19、④Training errorは0.025となった。

Page 177: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E56:E33で得た…2

177

⑤誤分類サンプルはN14。⑥分離境界のプロットが、線形SVM(linear kernel)をデフォルト設定で実行した結果と酷似している(E52)ので少々驚く。

Page 178: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E56:E33で得た…3

178

⑤誤分類サンプルはN14。⑥分離境界のプロットが、線形SVM(linear kernel)をデフォルト設定で実行した結果と酷似している(E52)ので少々驚く。⑦E52の線形SVMの分離境界を再掲。似てますよね。確かに「sigmaの値を小さくすることは分離境界の複雑度を低くすることに相当」し、非常に小さい値(sigma = 0.006)を指定したから直線なのだろうと納得。

Page 179: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ179

Page 180: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E57:本当の…1

180

①E57。MLSeqはsigmaの値を固定して最適なC値のみ探索していたが、本来のグリッドサーチは2つ以上のパラメータ(この場合Cとsigma)について、しらみつぶしに探索するもの。MLSeqが内部的に利用している②caretパッケージは、本来その機能を持つ。ここでは、③Cとsigmaの探索する数値範囲をそれぞれベクトルで指定して、④train関数で実行する。細かい話だが、赤下線部分にも注意。

Page 181: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E57:本当の…2

181

①E57。MLSeqはsigmaの値を固定して最適なC値のみ探索していたが、本来のグリッドサーチは2つ以上のパラメータ(この場合Cとsigma)について、しらみつぶしに探索するもの。MLSeqが内部的に利用している②caretパッケージは、本来その機能を持つ。ここでは、③Cとsigmaの探索する数値範囲をそれぞれベクトルで指定して、④train関数で実行する。細かい話だが、赤下線部分にも注意。パラメータの探索空間が広いので約1分ほどかかる。⑤のような結果が得られたが、最適値が探索範囲の端っこかどうかに注目すべし。この場合は0.005-0.1の範囲で探索したsigmaが該当するので、「sigmaを0.1よりも大きい値を追加探索したほうがよいだろうな」という点を意識しながら、描画して傾向を把握する。

Page 182: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E57:本当の…3

182

①の実行結果。②ggplotの入力は、先程作成したtunedオブジェクトです。③図の横軸はsigma、縦軸はAccuracy。Cの値ごとに折れ線グラフが作成されていることがわかる。C = 0.25や0.50のところではsigmaが大きくなるほどAccuracyが高くなる傾向にある一方で、C = 16ではsigmaを限りなく0に近づけたほうがよさそうなのだろうと解釈する。

Page 183: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E57:本当の…4

183

①の実行結果。②ggplotの入力は、先程作成したtunedオブジェクトです。③図の横軸はsigma、縦軸はAccuracy。Cの値ごとに折れ線グラフが作成されていることがわかる。C = 0.25や0.50のところではsigmaが大きくなるほどAccuracyが高くなる傾向にある一方で、C = 16ではsigmaを限りなく0に近づけたほうがよさそうなのだろうと解釈する。ここでは④C = 0.25と0.50に限定して、sigmaの値を0.1から4.0まで0.2刻みで探索してみる。

Page 184: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E57:本当の…5

184

①追加tuningの実行結果。②と描画結果の全体像からもわかるが、sigma = 0.3 and C = 0.50が最適だと判断されていることがわかる。このポイントは③に相当するが、実は④さきほどまでのsigma = 0.1 and C = 0.50も同率1位だったと判断できる。

③④

Page 185: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

Contents MLSeqのDocument (Beginner's guide)

事前準備、E38:NSCでエラー体験

E39:MLSeq再訪とpamrインストール

E40:NSC再挑戦(E38と同じ)

E41:Random Forest (repeats=10)

E42:Random Forest (repeats=5)

E43:追加のチューニング、E44:分類結果の分析

E45:Determining possible biomarkers using sparse classifiers

E46:探索的な解析(PHATEを実行して全体像を把握)

E47:PHATE実行結果を調査して個別のサンプルを同定する

E48:誤分類サンプルを色分けして表示する(ggplotにも慣れる)

SVMの挙動を掌握する(kernlab, caret, ggplot2, ハイパーパラメータ) E49:入力データ取得、E50:分割から描画まで、E51:サンプル名で描画

E52:linear kernel、E53:Cを変える、E54:RBF kernel、E55:sigmaを変える

E56:E33で得たパラメータを利用、E57:本当のグリッドサーチ、E58:総仕上げ185

Page 186: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E58:総仕上げ1

186

①E58。最適パラメータ(C = 0.5 and sigma = 0.3)でモデル構築したところ。

Page 187: オーム情報解析(第3回)kadota/20200618_kadota.pdf · 2020-06-25 · E41:Random Forest (repeats=10) E42:Random Forest (repeats=5) E43:追加のチューニング、E44:分類結果の分析

E58:総仕上げ2

187

①E58。最適パラメータ(C = 0.5 and sigma = 0.3)でモデル構築したところ。描画とテストセットの予測まで。分離境界は妥当な感じですね。