Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
1
オーム情報解析(第1回)
1東京大学 情報学環・学際情報学府2東京大学・大学院農学生命科学研究科
アグリバイオインフォマティクス教育研究ユニット3東京大学・微生物科学イノベーション連携研究機構
門田幸二(かどた こうじ)[email protected]
http://www.iu.a.u-tokyo.ac.jp/~kadota/
2020.06.05版 (自称ですが)講義資料のみで十二分に中身がわかるようにしております。ノリがわかり、あとは自習で大丈夫だと思われたら(単位取得希望者以外は)遠慮なく退室いただいて構いません。評価は出席点とレポートで行う予定です。レポート課題はITC-LMSに掲示してあります。
各科目へのアクセス
2
①
②
③
①教育プログラム、②各講義のページ、③「オーム情報解析」の場合。ブラウザは、Google Chromeを推奨。
オーム情報解析
3
①「オーム情報解析」のページの一部。②に特化した内容です。③機械学習や深層学習をメインで教える科目は「知識情報処理論」。「フィールドインフォマティクス(6/30の大森先生のところ)」では、葉のイオン濃度データを機械学習の1つであるランダムフォレストを用いて解析する実践例が解説される予定。
①
②
③
オーム情報解析
4
①
②
③
①「オーム情報解析」のページの一部。②に特化した内容です。③機械学習や深層学習をメインで教える科目は「知識情報処理論」。「フィールドインフォマティクス(6/30の大森先生のところ)」では、葉のイオン濃度データを機械学習の1つであるランダムフォレストを用いて解析する実践例が解説される予定。④「機能ゲノム学」では、遺伝子発現データの探索的な解析(機械学習の一種の教師なし学習に相当するもの)を中心に解説しましたが、本科目「オーム情報解析」では、遺伝子発現データを題材として未知サンプルの分類問題(機械学習の一種の教師あり学習に相当するもの)の実践的な利用法を解説します。
④
オーム情報解析
5
①「オーム情報解析」のページの一部。②に特化した内容です。③機械学習や深層学習をメインで教える科目は「知識情報処理論」。「フィールドインフォマティクス(6/30の大森先生のところ)」では、葉のイオン濃度データを機械学習の1つであるランダムフォレストを用いて解析する実践例が解説される予定。④「機能ゲノム学」では、遺伝子発現データの探索的な解析(機械学習の一種の教師なし学習に相当するもの)を中心に解説しましたが、本科目「オーム情報解析」では、遺伝子発現データを題材として未知サンプルの分類問題(機械学習の一種の教師あり学習に相当するもの)の実践的な利用法を解説します。「オーム情報解析」は、⑤全体として学習領域を広げる効果はおそらく非常に小さいです。他で学んだ(これから学ぶ)解析手法がトランスクリプトーム解析分野でどのように活用されているかを学ぶという位置づけです。自力で興味あるパッケージのマニュアルを読み解いて、使いこなしてゆくための実践経験を積むイメージです。
知識情報処理論フィールドインフォマティクス
オーム情報解析
機能ゲノム学 ⑤
講義予定◼ 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が多数得られる理由、発現変動遺伝子を利用したモデル構築
6
全てZoomオンライン講義でA方式予定。「MLSeqを用いた発現データの分類」が大枠です。
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
7
E01:Introduction1
8
本科目で主に利用する項目は、①(Rで)塩基配列解析の…
①
E01:Introduction2
9
本科目で主に利用する項目は、①(Rで)塩基配列解析の、②機械学習(分類)のあたり。③をクリック。
②③
E01:Introduction3
10
④
本科目で主に利用する項目は、①(Rで)塩基配列解析の、②機械学習(分類)のあたり。③をクリック。④「解析 | 機械学習(分類) | について」の項目に飛びます。⑤の文章はそれほど真面目に書いていないので参考程度。全体像や流れは把握できると思います。
⑤
E01:Introduction4
11
①のような手元のデータのみで何かをやる枠組みは、一時期(2005年頃まで?!)は確かに流行っていた。発現データ取得手段として一時代を築いたマイクロアレイが安価になり、1つのデータセットで数十サンプルのデータを比較的容易に取得できた頃とおそらく一致します。
①
E01:Introduction5
12
①
①のような手元のデータのみで何かをやる枠組みは、一時期(2005年頃まで?!)は確かに流行っていた。発現データ取得手段として一時代を築いたマイクロアレイが安価になり、1つのデータセットで数十サンプルのデータを比較的容易に取得できた頃とおそらく一致します。その後(bulk) RNA-seqが流行っていた頃は完全に下火に…。各群3反復(3サンプル)あれば一定の精度で発現変動解析ができるというガイドラインが普及していたのがおそらく一因。各群数十サンプルあることを前提とする分類の枠組みでは、各群数サンプルというのは少なすぎる。
E01:Introduction6
13
①
①のような手元のデータのみで何かをやる枠組みは、一時期(2005年頃まで?!)は確かに流行っていた。発現データ取得手段として一時代を築いたマイクロアレイが安価になり、1つのデータセットで数十サンプルのデータを比較的容易に取得できた頃とおそらく一致します。その後(bulk) RNA-seqが流行っていた頃は完全に下火に…。各群3反復(3サンプル)あれば一定の精度で発現変動解析ができるというガイドラインが普及していたのがおそらく一因。各群数十サンプルあることを前提とする分類の枠組みでは、各群数サンプルというのは少なすぎる。その後、1つのサンプルを~数千個の単一細胞に分けてデータを取得するscRNA-seqが流行り始め、また復活の兆し。「機能ゲノム学」で紹介した探索的な解析(クラスタリング)によって、各細胞がcell typeごとにグループ化されるため、グループ(群)ごとに数十細胞からなる「分類」の枠組みに当てはまるデータとなる。
E01:Introduction7
14
「機能ゲノム学」2020年6月2日分の最後のほうのスライド(タイトル:アノテーション)を再掲。①②clustering based on reference dataの話が…
①
②
見るだけ
E01:Introduction8
15
③
①
「機能ゲノム学」2020年6月2日分の最後のほうのスライド(タイトル:アノテーション)を再掲。①②clustering based on reference dataの話が、参照用のデータ(トレーニングセット)でcell typeごとの特徴を学習しておき(予測モデルの構築)、手元の(グループ化された)scRNA-seqデータの③classification(分類)を行うことと同義です。BLASTっぽく説明すると、手元の(グループ化された)細胞ごとの発現データをquery(問い合わせデータ)として、cell type既知のデータのどれに近いかを返すというもの。
②
見るだけ
②
③
④
E01:Introduction9
16
「機能ゲノム学」2020年6月2日分の最後のほうのスライド(タイトル:アノテーション)を再掲。①②clustering based on reference dataの話が、参照用のデータ(トレーニングセット)でcell typeごとの特徴を学習しておき(予測モデルの構築)、手元の(グループ化された)scRNA-seqデータの③classification(分類)を行うことと同義です。BLASTっぽく説明すると、手元の(グループ化された)細胞ごとの発現データをquery(問い合わせデータ)として、cell type既知のデータのどれに近いかを返すというもの。④最近の手法比較論文によると、サポートベクターマシン(Support Vector Machine; SVM)がよいとのこと。
見るだけ
E01:Introduction10
17
①さきほどの最近の手法比較論文のPubMedサイト。②論文タイトルがautomatic cell identification methodsとなっているが、やっていることの中身は③annotationであり、④classification。表記揺れが半端ないと思われるかもしれないが、慣れです。
②
③
④
見るだけ
①
E01:Introduction11
18
①さきほどの最近の手法比較論文のPubMedサイト。②論文タイトルがautomatic cell identification methodsとなっているが、やっていることの中身は③annotationであり、④classification。表記揺れが半端ないと思われるかもしれないが、慣れです。⑤SVMがよいという結論はこの辺りに書かれています。⑥single-cell-specific classifiersは「機能ゲノム学」で述べたようなscRNA-seqデータの性質を考慮して開発された分類器(classifier)のことを指す一方、general-purpose classifiersはscRNA-seq(を含む生命科学系)以外の分野で一般に用いられる分類器のことを指します。⑤の記載内容からも納得できるように、SVMやRandom Forest (RF)は後者のほうに属します。Single-cell-specificとgeneral-purposeの主な違いはデータ変換の仕方です(原著論文のpage 15の右側。後者はlog変換するのが一般的)。
③
④
見るだけ
⑤
⑥
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
19
利用可能なR package1
20
①の話に戻る。②下矢印キーを10回くらい押して…
①
②
利用可能なR package2
21
①の話に戻る。②下矢印キーを10回くらい押して、③が見えるようにしたところ。④kerasは、機械学習や深層学習(deep learning)系で有名なパッケージ。Kerasは、⑤tensorflow上で動きます*。Python版がメジャーですが、R経由でも利用可能です。
③
④
⑤
*:https://udemy.benesse.co.jp/ai/keras.html
利用可能なR package3
22
⑥
⑦
①の話に戻る。②下矢印キーを10回くらい押して、③が見えるようにしたところ。④kerasは、機械学習や深層学習(deep learning)系で有名なパッケージ。Kerasは、⑤tensorflow上で動きます*。Python版がメジャーですが、R経由でも利用可能です。⑥randomForestは「フィールドインフォマティクス」の大森先生のところで利用予定のパッケージ。⑦caretは機械学習系でよく用いられている汎用(general-purpose)パッケージ。日本語情報も豊富。⑦caretなら、SVMもRandom Forestも統一的に取り扱える。
利用可能なR package4
23
⑦
RNA-seqデータの分類問題に特化したRパッケージはさすがに存在するだろうと思い、PubMed上で見つけたのが⑧MLSeq。⑨その原著論文を読み進める過程で、⑦caretを内部的に利用しているということも後に判明した。
⑧ ⑨
利用可能なR package5
24
RNA-seqデータの分類問題に特化したRパッケージはさすがに存在するだろうと思い、PubMed上で見つけたのが⑧MLSeq。⑨その原著論文を読み進める過程で、⑦caretを内部的に利用しているということも後に判明した。また、⑩NBLDA、⑪voomDDAなども利用可能であることを知り、⑧MLSeqの一通りの使い方を理解しておこうと決断した。
⑧
⑩
⑪
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
25
解析データ取得1
26
解析データファイル(sample51.txt)は「オーム情報解析」のページや、MLSeqパッケージからもダウンロード可能。解説は、①サンプルデータの例題51のところで行います。51番目の例題ということもありページ送りも大変なので、「sample51」とかでページ内検索するほうが手っ取り早いです。
①
解析データ取得2
27
②こんな感じです。③例題51のところに辿り着いてるっぽいことが分かります。
②③
解析データ取得3
28
②こんな感じです。③例題51のところに辿り着いてるっぽいことが分かります。④解析データの概要。
④
解析データ取得4
29
②こんな感じです。③例題51のところに辿り着いてるっぽいことが分かります。④解析データの概要。⑤をコピペ実行すると、⑥sample51.txtが作業ディレクトリ上に作成されます。⑦と同じものです。
⑤
⑥
⑦
解析データ取得5
30
②こんな感じです。③例題51のところに辿り着いてるっぽいことが分かります。④解析データの概要。⑤をコピペ実行すると、⑥sample51.txtが作業ディレクトリ上に作成されます。⑦と同じものです。RStudioでコピペ実行後の状態。⑧作業ディレクトリ上に、確かに⑨sample51.txtが作成されていることが分かります。
⑧
⑨
解析データ取得6
31
コピペ実行した作業は、①filepathで見えている場所にある、②cervical.txtというファイルを読み込んで、③sample51.txtというファイル名で保存しているだけです。
③
①
②
解析データ取得7
32
④
コピペ実行した作業は、①filepathで見えている場所にある、②cervical.txtというファイルを読み込んで、③sample51.txtというファイル名で保存しているだけです。Rパッケージ内で提供されている例題データファイル(この場合はcervical.txt)を読み込むときは、④で示すようなsystem.file関数が利用されることが多いです。慣れておくとよいでしょう。cervical.txtとsample51.txtは同一です。
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
33
sample51.txt
34
①解析データ(sample51.txt orcervical.txt)の詳細情報は、②の赤枠内で示されている。Excelで開いて全体像を示したのが次のスライド。
②
①
sample51.txt
35
①解析データ(sample51.txt or cervical.txt)の詳細情報は、②の赤枠内で示されている。Excelで開いて全体像を示したのがこのスライド。
sample51.txt
36
(①の行名情報を除く)②最初の29列分が子宮頸がん患者の正常サンプルの発現データ。③残りの29列が癌サンプルの発現データ。
② ③①
29正常(Normal)サンプル 29癌(Tumor)サンプル
sample51.txt
37
⑤
② ③①
④
29正常(Normal)サンプル 29癌(Tumor)サンプル
714 m
icro
RN
As(遺
伝子
)(①の行名情報を除く)②最初の29列分が子宮頸がん患者の正常サンプルの発現データ。③残りの29列が癌サンプルの発現データ。(④ヘッダー行を除く)⑤714行分のmicroRNAの発現データから構成されている。microRNAが意味不明なヒトは、遺伝子と読み替えていただいて差し支えありません。以降は分かり易さ重視で遺伝子として話を進めます。
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
38
発現や正規化の必要性1
39
⑤
② ③①
④
29正常(Normal)サンプル 29癌(Tumor)サンプル
そもそも「発現」って何よ?というヒト向けの説明。この場合は「働き具合」という解釈でよい。
714 m
icro
RN
As(遺
伝子
)
発現や正規化の必要性2
40
②
①
そもそも「発現」って何よ?というヒト向けの説明。この場合は「働き具合」という解釈でよい。例えば、①N2というサンプルに着目した場合、画面上で見えている中で最もよく働いている(= 数値が大きい)のは②なので、③の遺伝子が①N2サンプル内で最も高発現だと判断する。
③
発現や正規化の必要性3
41
②
①
そもそも「発現」って何よ?というヒト向けの説明。この場合は「働き具合」という解釈でよい。例えば、①N2というサンプルに着目した場合、画面上で見えている中で最もよく働いている(= 数値が大きい)のは②なので、③の遺伝子が①N2サンプル内で最も高発現だと判断する。原著論文やMLSeqパッケージ中のマニュアルを見ればわかるが、本当は遺伝子ではなくマイクロRNA(miRNA)です。この分野ではないヒトにとっては、miRNAという正確な言葉を用いるほうが難解なので、あえて遺伝子で押し通します。
③
参考
発現や正規化の必要性4
42
④
ある程度経験を積んだ一部のヒトは、④N1サンプルと、⑤N27サンプルを見比べることで、「列ごとの数値の和は、⑤ >> ④なのでは?もしそうなら列ごとの総和を揃える正規化を行ってからでないと、サンプル間の比較はやってはいけないのでは?」ということに気づく。
⑤
発現や正規化の必要性5
43
④
ある程度経験を積んだ一部のヒトは、④N1サンプルと、⑤N27サンプルを見比べることで、「列ごとの数値の和は、⑤ >> ④なのでは?もしそうなら列ごとの総和を揃える正規化を行ってからでないと、サンプル間の比較はやってはいけないのでは?」ということに気づく。このような事実確認などを自在に行う上で、colSums関数などのベーシックな関数を使いこなせるスキルを身につけておくことが重要。
⑤
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
44
E05:ファイルの読込み1
45
①20200604.Rがコピペ用スクリプト集。クリックしてブラウザ経由で利用してもよいですが、講義資料ではダウンロードしてRStudioのエディタ上で利用します。
①
E05:ファイルの読込み2
46
①20200604.Rがコピペ用スクリプト集。クリックしてブラウザ経由で利用してもよいですが、講義資料ではダウンロードしてRStudioのエディタ上で利用します。②作業ディレクトリ上にダウンロードした、③20200604.Rをクリックして、④エディタ上で眺めている状態です。
②
③
④
E05:ファイルの読込み3
47
①やり方1、②やり方2のどちらをコピペ実行しても、同じ中身のオブジェクトdataが得られるはずです。5行目と11行目はRStudio起動直後と同じ(利用可能なオブジェクトが何もない)状態にするコマンドです。
①
②
E05:ファイルの読込み4
48
①
①やり方1、②やり方2のどちらをコピペ実行しても。同じ中身のオブジェクトdataが得られるはずです。5行目と11行目はRstudio起動直後と同じ(利用可能なオブジェクトが何もない)状態にするコマンドです。①やり方1実行後の状態。②オブジェクトdataは714行×58列ですね。
②
E05:ファイルの読込み5
49
①やり方1、②やり方2のどちらをコピペ実行しても。同じ中身のオブジェクトdataが得られるはずです。5行目と11行目はRstudio起動直後と同じ(利用可能なオブジェクトが何もない)状態にするコマンドです。①やり方1実行後の状態。②オブジェクトdataは714行×58列ですね。③やり方2実行後の状態。④確かに同じ結果になりましたね。
③
④
E05:ファイルの読込み6
50
入力ファイルはこんな感じでしたので、妥当ですね。
④
29正常(Normal)サンプル 29癌(Tumor)サンプル
714 遺
伝子
参考
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
51
E06:Tipsの復習1
52
①Clear Consoleや…
①
参考
E06:Tipsの復習2
53
①Clear Consoleや、②コマンド入力履歴(ヒストリー)のクリアも適宜やります。③Yes。
①
②
③
参考
E06:Tipsの復習3
54
①Clear Consoleや、②コマンド入力履歴(ヒストリー)のクリアも適宜やります。③Yes。こんな感じです。以降は特に宣言することなくやりますので、うろたえずについてきてください。
参考
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
55
E07:列ごとの総和1
56
① ②
「発現や正規化の必要性」のスライドを再掲。ある程度経験を積んだ一部のヒトは、①N1サンプルと、②N27サンプルを見比べることで、「列ごとの数値の和は、② >> ①なのでは?もしそうなら列ごとの総和を揃える正規化を行ってからでないと、サンプル間の比較はやってはいけないのでは?」ということに気づく。このような事実確認などを自在に行うために必要なスキルが、例えばcolSums関数。
E07:列ごとの総和2
57
「発現や正規化の必要性」のスライドを再掲。ある程度経験を積んだ一部のヒトは、①N1サンプルと、②N27サンプルを見比べることで、「列ごとの数値の和は、② >> ①なのでは?もしそうなら列ごとの総和を揃える正規化を行ってからでないと、サンプル間の比較はやってはいけないのでは?」ということに気づく。このような事実確認などを自在に行うために必要なスキルが、例えばcolSums関数。③今はこのあたりです。④の行のみを実行したい場合は、そこにカーソルを合わせて、⑤Run。
③
④
⑤
E07:列ごとの総和3
58
こんな感じになります。①を押して、②Console画面の縦幅を最大化します。
①②
E07:列ごとの総和4
59
こんな感じになります。①を押して、②Console画面の縦幅を最大化します。確かに③N27のほうが④N1に比べて10倍弱多いですね。
④
③
E07:列ごとの総和5
60
こんな感じになります。①を押して、②Console画面の縦幅を最大化します。確かに③N27のほうが④N1に比べて10倍弱多いですね。⑤こんな感じで1:29列のみに限定して表示させたりもします(subsettingの復習)。目的を忘れつつあるかもしれませんが、機械学習を実行する前に、どのような前処理をやっておかねばならないかを知る目的で、データの全体像を把握しようとしています。
⑤
E07:列ごとの総和6
61
こんな感じになります。①を押して、②Console画面の縦幅を最大化します。確かに③N27のほうが④N1に比べて10倍弱多いですね。⑤こんな感じで1:29列のみに限定して表示させたりもします(subsettingの復習)。目的を忘れつつあるかもしれませんが、機械学習を実行する前に、どのような前処理をやっておかねばならないかを知る目的で、データの全体像を把握しようとしています。「⑥N27のほうが⑦N1に比べて10倍弱多い」という結果を受けて…
⑦
⑥
E07:列ごとの総和7
62
⑨ ⑧
こんな感じになります。①を押して、②Console画面の縦幅を最大化します。確かに③N27のほうが④N1に比べて10倍弱多いですね。⑤こんな感じで1:29列のみに限定して表示させたりもします(subsettingの復習)。目的を忘れつつあるかもしれませんが、機械学習を実行する前に、どのような前処理をやっておかねばならないかを知る目的で、データの全体像を把握しようとしています。「⑥N27のほうが⑦N1に比べて10倍弱多い」という結果を受けて、⑧N27の数値ベクトルの要素を約1/10にしたら、⑨N1と似たようなプロファイルになると判断する。プロファイルという用語が難解なヒトは、「パターン」などに置き換えて理解すればよい。
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
63
E08:総和のばらつき1
64
さきほどまでは、ぱっと目についた①N1と②N27に着目した。データの全体像の把握の続きとして、ここでは③列ごとの総和のばらつきがどの程度かを群ごとに調べようとしています。
①
②
③
E08:総和のばらつき2
65
さきほどまでは、ぱっと目についた①N1と②N27に着目した。データの全体像の把握の続きとして、ここでは③列ごとの総和のばらつきがどの程度かを群ごとに調べようとしています。まずは④正常サンプル群(N群)のほうから。⑤の表示結果と同じ情報がtmpに格納されることが自明だが、31-32行目をコピペ実行。
④
⑤
E08:総和のばらつき3
66
さきほどまでは、ぱっと目についた①N1と②N27に着目した。データの全体像の把握の続きとして、ここでは③列ごとの総和のばらつきがどの程度かを群ごとに調べようとしています。まずは④正常サンプル群(N群)のほうから。⑤の表示結果と同じ情報がtmpに格納されることが自明だが、31-32行目をコピペ実行。コピペ実行結果。間違い探しのようだが⑥tmpの中身はさきほどと同じですね。これである程度全体像は分かるが、私は通常sortやsummary関数の実行結果も眺めます。
⑥
E08:総和のばらつき4
67
さきほどまでは、ぱっと目についた①N1と②N27に着目した。データの全体像の把握の続きとして、ここでは③列ごとの総和のばらつきがどの程度かを群ごとに調べようとしています。まずは④正常サンプル群(N群)のほうから。⑤の表示結果と同じ情報がtmpに格納されることが自明だが、31-32行目をコピペ実行。コピペ実行結果。間違い探しのようだが⑥tmpの中身はさきほどと同じですね。これである程度全体像は分かるが、私は通常sortやsummary関数の実行結果も眺めます。33-34行目のコピペ実行結果。
E08:総和のばらつき5
68
①まずはソートの実行結果から。②decreasingオプションをFalseにして実行することは、「降順にソートするな(昇順にソートせよ)」という意味。③最も数値の総和が小さいのはN7サンプル。
①②③
E08:総和のばらつき6
69
①まずはソートの実行結果から。②decreasingオプションをFalseにして実行することは、「降順にソートするな(昇順にソートせよ)」という意味。③最も数値の総和が小さいのはN7サンプル。④最も総和が大きいのはN26サンプル。同じ正常サンプル群でも最大と最小の間では900倍近く差があることがわかる。
④
③
E08:総和のばらつき7
70
①まずはソートの実行結果から。②decreasingオプションをFalseにして実行することは、「降順にソートするな(昇順にソートせよ)」という意味。③最も数値の総和が小さいのはN7サンプル。④最も総和が大きいのはN26サンプル。同じ正常サンプル群でも最大と最小の間では900倍近く差があることがわかる。①sort実行結果を踏まえると、⑤summary実行結果の理解は容易。③最小値と④最大値が両端にあり、⑥その間の要約統計量が表示されているだけです。
⑤
①
③ ④⑥
E08:総和のばらつき8
71
①癌サンプル群についても念のため見ておきます。②意図的に若干書き方を変えています。37-41行目までをコピペ実行。
①②
②
E08:総和のばらつき9
72
①癌サンプル群についても念のため見ておきます。②意図的に若干書き方を変えています。37-41行目までをコピペ実行。実行結果。カウント数の総和(=ライブラリサイズ)の③最小値と④最大値間では750倍近い差があることがわかります。正常サンプル群と似たような結果ですね。①
②②
③ ④
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
73
E09:ラベル情報作成1
74
解析データの数値行列に対して、どの列がどの群(正常 or 癌)に属するかという情報を作成する作業を行います。ギョーカイでは「クラスラベル情報(class label information)」みたいな言い方をします。
E09:ラベル情報作成2
75
解析データの数値行列に対して、どの列がどの群(正常 or 癌)に属するかという情報を作成する作業を行います。ギョーカイでは「クラスラベル情報(class label information)」みたいな言い方をします。「クラス」が「グループ(群)」という用語と対応します。「このサンプルさんには正常というラベル(シール)を貼って、このサンプルさんには癌というラベルを貼って…」みたいなことをやるための情報を作成するイメージです。「数値行列の列名からよきに計らってくれよ」と思うヒトが一定数いるとは思いますが、列名はあくまでもただの文字列です。ここで示すように、どの列がどのクラス(群)に属しているかという情報を明確に与えねばなりません。
E09:ラベル情報作成3
76
当然ながら、解析データの数値行列の、どの列がどの群に属しているかという情報は予め知っておかねばなりません。①今取り扱っている行列(dataオブジェクト)は、②最初の29列分が正常サンプル、③残りの29列分が癌サンプルのデータだと分かっています。
①
②
③
E09:ラベル情報作成4
77
当然ながら、解析データの数値行列の、どの列がどの群に属しているかという情報は予め知っておかねばなりません。①今取り扱っている行列(dataオブジェクト)は、②最初の29列分が正常サンプル、③残りの29列分が癌サンプルのデータだと分かっています。「(Rで)塩基配列解析」のウェブページ上では、そのような群ごとに明確に分離された④タブ区切りテキストファイルを取り扱うことを想定しています。
④
E09:ラベル情報作成5
78
①Environmentタブ上で、現在利用可能な②オブジェクト名と③その概要が見られる。どのタイミングで④オブジェクトの全消去をやっているか次第で変わるため、ここの見え方はヒトそれぞれ。
①
③②
④
参考
E09:ラベル情報作成6
79
①Environmentタブ上で、現在利用可能な②オブジェクト名と③その概要が見られる。どのタイミングで④オブジェクトの全消去をやっているか次第で変わるため、ここの見え方はヒトそれぞれ。⑤Dataというカテゴリ内に、⑥中身が714行×58列の、⑦dataオブジェクトが存在することがわかります。
⑤⑦ ⑥
参考
E09:ラベル情報作成7
80
①Environmentタブ上で、現在利用可能な②オブジェクト名と③その概要が見られる。どのタイミングで④オブジェクトの全消去をやっているか次第で変わるため、ここの見え方はヒトそれぞれ。⑤Dataというカテゴリ内に、⑥中身が714行×58列の、⑦dataオブジェクトが存在することがわかります。⑦が見えているヒトは、⑧の行までをコピペ実行する必要はありませんが、実行時間的には誤差範囲なので赤枠内の46-55行をコピペ実行。
⑧
⑦
E09:ラベル情報作成8
81
実行結果。①最初の29サンプル分に対して、②G1というラベルを…
①②
E09:ラベル情報作成9
82
実行結果。①最初の29サンプル分に対して、②G1というラベルを、③残りの29サンプル分に対して、④G2というラベルを割り当てるべくして作成したベクトルなので、⑤のようになります。
③④
⑤
E09:ラベル情報作成10
83
実行結果。①最初の29サンプル分に対して、②G1というラベルを、③残りの29サンプル分に対して、④G2というラベルを割り当てるべくして作成したベクトルなので、⑤のようになります。⑤data.clというのは、私が行列データに対してほぼ共通に用いているdataというオブジェクトに対して割り当てる「クラスラベル(classlabel)」という意味です。もちろんただのオブジェクト名なので、自由につけて構いません。
⑤
参考
E09:ラベル情報作成11
84
ここでは①”G1”や②”G2”としていますが、どのような変更までが許されるのか不安という方も一定数いらっしゃると思います。例えば、後で見せるMLSeqパッケージ中では①”N”、②が”T”となっています。どこまでOKかは、パッケージ開発者の意向次第。ちゃんと説明書きのあるパッケージもあれば、そうでないものもあります。
① ②
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
85
E10:(Rで)塩基配列…1
86
①「(Rで)塩基配列解析」で通常示している形式に変更しているだけで、中身は実質同じです。
①
E10:(Rで)塩基配列…2
87
①
①「(Rで)塩基配列解析」で通常示している形式に変更しているだけで、中身は実質同じです。唯一の違いとして、②factor関数が初めて出現しています。クラスラベル情報を与える際に、factor関数実行結果として見えるような形式を要求されることもしばしばあります。MLSeqもその一派ですので、「factor実行結果はこんな感じ」というのを見ておくとよい。赤枠内の60-69行目をコピペ実行。
②
E10:(Rで)塩基配列…3
88
①「(Rで)塩基配列解析」で通常示している形式に変更しているだけで、中身は実質同じです。唯一の違いとして、②factor関数が初めて出現しています。クラスラベル情報を与える際に、factor関数実行結果として見えるような形式を要求されることもしばしばあります。MLSeqもその一派ですので、「factor実行結果はこんな感じ」というのを見ておくとよい。赤枠内の60-69行目をコピペ実行。実行結果。②factor(data.cl)実行結果に相当する部分。②
②
E10:(Rで)塩基配列…4
89
①「(Rで)塩基配列解析」で通常示している形式に変更しているだけで、中身は実質同じです。唯一の違いとして、②factor関数が初めて出現しています。クラスラベル情報を与える際に、factor関数実行結果として見えるような形式を要求されることもしばしばあります。MLSeqもその一派ですので、「factor実行結果はこんな感じ」というのを見ておくとよい。赤枠内の60-69行目をコピペ実行。実行結果。②factor(data.cl)実行結果に相当する部分。③Levelsというのが見えるのがポイントではありますが…
②
②
③
E10:(Rで)塩基配列…5
90
①「(Rで)塩基配列解析」で通常示している形式に変更しているだけで、中身は実質同じです。唯一の違いとして、②factor関数が初めて出現しています。クラスラベル情報を与える際に、factor関数実行結果として見えるような形式を要求されることもしばしばあります。MLSeqもその一派ですので、「factor実行結果はこんな感じ」というのを見ておくとよい。赤枠内の60-69行目をコピペ実行。実行結果。②factor(data.cl)実行結果に相当する部分。③Levelsというのが見えるのがポイントではありますが、④これは「data.cl中のユニークな文字列としてはこれらがあります」という情報にすぎません。
④
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
91
E11:MLSeqのノリ1
92
最後は、①MLSeqの書き方に合わせたコード。E10との違いは、②S4Vectorsというパッケージをロードして(読み込んで)、このパッケージが提供する③DataFrame関数を用いて…
①
②
③
E11:MLSeqのノリ2
93
最後は、①MLSeqの書き方に合わせたコード。E10との違いは、②S4Vectorsというパッケージをロードして(読み込んで)、このパッケージが提供する③DataFrame関数を用いて、E10の最後に示した④factor(data.cl)の実行結果情報を、⑤condという列名でデータフレーム形式で格納したものを、⑥classというオブジェクト名で取り扱えるようにしています。74-86行目をコピペ実行。
④
⑤⑥
E11:MLSeqのノリ3
94
最後は、①MLSeqの書き方に合わせたコード。E10との違いは、②S4Vectorsというパッケージをロードして(読み込んで)、このパッケージが提供する③DataFrame関数を用いて、E10の最後に示した④factor(data.cl)の実行結果情報を、⑤condという列名でデータフレーム形式で格納したものを、⑥classというオブジェクト名で取り扱えるようにしています。74-86行目をコピペ実行。実行結果。⑥classの、⑦中身は、⑧DataFrameという形式で58行×1列からなる。
⑦
⑥
⑧
E11:MLSeqのノリ4
95
最後は、①MLSeqの書き方に合わせたコード。E10との違いは、②S4Vectorsというパッケージをロードして(読み込んで)、このパッケージが提供する③DataFrame関数を用いて、E10の最後に示した④factor(data.cl)の実行結果情報を、⑤condという列名でデータフレーム形式で格納したものを、⑥classというオブジェクト名で取り扱えるようにしています。74-86行目をコピペ実行。実行結果。⑥classの、⑦中身は、⑧DataFrameという形式で58行×1列からなる。③DataFrame形式で④factor(data.cl)の実行結果情報を、⑤condという列名で格納したもの、という意味が⑨や⑩を眺めることでよくわかると思います。
④
⑤
③⑩
⑨
E11:MLSeqのノリ5
96
最後は、①MLSeqの書き方に合わせたコード。E10との違いは、②S4Vectorsというパッケージをロードして(読み込んで)、このパッケージが提供する③DataFrame関数を用いて、E10の最後に示した④factor(data.cl)の実行結果情報を、⑤condという列名でデータフレーム形式で格納したものを、⑥classというオブジェクト名で取り扱えるようにしています。74-86行目をコピペ実行。実行結果。⑥classの、⑦中身は、⑧DataFrameという形式で58行×1列からなる。③DataFrame形式で④factor(data.cl)の実行結果情報を、⑤condという列名で格納したもの、という意味が⑨や⑩を眺めることでよくわかると思います。⑪行数と列数を返すdim関数や、行列の列名を返すcolnames関数の実行結果を眺めるほうが分かり易いヒトもいるでしょう。
⑩
⑨
⑪
参考
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
97
E12:論文のAbstract1
98
①E11のコードで、何故②data.clという簡単なラベル情報ではなく、わざわざ③factor(data.cl)として、④DataFrameという関数を用いて、⑤classというオブジェクトを作成しているのか?の理由は…
①
②
③
⑤
④
E12:論文のAbstract2
99
①E11のコードで、何故②data.clという簡単なラベル情報ではなく、わざわざ③factor(data.cl)として、④DataFrameという関数を用いて、⑤classというオブジェクトを作成しているのか?の理由は、⑥本科目で主に用いる、⑦MLSeqパッケージ(のBeginner’s guide)中でそのような書き方がなされているからです。⑧PubMedへのリンク先をクリック。
⑥
⑦ ⑧
E12:論文のAbstract3
100
こんな感じになります。Rパッケージの論文の場合は、(そういう探し方をしているからかもしれませんが…)①のようにタイトル中にパッケージ名が含まれることが経験上多いです。
①
E12:論文のAbstract4
101
こんな感じになります。Rパッケージの論文の場合は、(そういう探し方をしているからかもしれませんが…)①のようにタイトル中にパッケージ名が含まれることが経験上多いです。私は②の文章を見て「お、色々な方法を試せるパッケージでよさそう」と興味を持ちます。
①
②
E12:論文のAbstract5
102
こんな感じになります。Rパッケージの論文の場合は、(そういう探し方をしているからかもしれませんが…)①のようにタイトル中にパッケージ名が含まれることが経験上多いです。私は②の文章を見て「お、色々な方法を試せるパッケージでよさそう」と興味を持ちます。さらに、③Rパッケージの提供元がBioconductorであることを認識して、「もう一つの主要な提供元であるCRANよりも審査基準が厳しいので、一定のクオリティは担保されている(のでOK)」と判断しました。
③
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
103
E13:Bioconductor1
104
次は、Rパッケージ提供サイトの1つであるBioconductorの①MLSeqパッケージへのリンク先をクリック。
①
E13:Bioconductor2
105
次は、Rパッケージ提供サイトの1つであるBioconductorの①MLSeqパッケージへのリンク先をクリック。こんな感じになります。②Bioconductorの、③MLSeqのページです。④Biocというのは、Bioconductorのことです。⑤6 yearsと書いてあるので、このパッケージ(MLSeq)はBioconductor上で6年前から提供されていることが分かります。⑥MLSeq開発者が自由に名付けた、このパッケージのタイトル。
②
③
④
⑤
⑥
E13:Bioconductor3
106
①
②
①少しページ下部に移動。②を見ることで、少なくともSVM, bagSVM, Random Forest, and CARTという4つの方法をMLSeqパッケージで利用可能だと判断する。bagSVMやCARTというのは、現時点ではよくわからないが、心にゆとりがあるときなどに試してみようかなという程度で心に留めておく。
E13:Bioconductor4
107
①少しページ下部に移動。②を見ることで、少なくともSVM, bagSVM, Random Forest, and CARTという4つの方法をMLSeqパッケージで利用可能だと判断する。bagSVMやCARTというのは、現時点ではよくわからないが、心にゆとりがあるときなどに試してみようかなという程度で心に留めておく。③原著論文情報。④の行にも書かれているが、R上では⑤のコマンドをコピペ実行することで、③の情報を得ることができます。
③
④⑤
参考
E13:Bioconductor5
108
①少しページ下部に移動。②を見ることで、少なくともSVM, bagSVM, Random Forest, and CARTという4つの方法をMLSeqパッケージで利用可能だと判断する。bagSVMやCARTというのは、現時点ではよくわからないが、心にゆとりがあるときなどに試してみようかなという程度で心に留めておく。③原著論文情報。④の行にも書かれているが、R上では⑤のコマンドをコピペ実行することで、③の情報を得ることができます。⑥つまりこういうこと。
参考
⑥
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
109
E14:Installと確認1
110
赤枠内が、①このパッケージ(MLSeq)のインストール法に関する説明。
①
E14:Installと確認2
111
赤枠内が、①このパッケージ(MLSeq)のインストール法に関する説明。②このパッケージをインストールするには、③Rを起動して、④赤枠内のコードをコピペ実行せよ、ということです。パッケージのインストールは完了しているはずなのでやらなくてよい。「バイオスタティスティクス基礎論(岩田先生)」のところでも同様の解説がなされていますが、④の赤枠内は、BiocManagerというパッケージがなければインストールした後、⑤BiocManagerパッケージが提供する、⑥install関数を用いて、⑦MLSeqパッケージをインストールせよ、という指令です。
② ③
④
⑤ ⑥ ⑦
E14:Installと確認3
112
①今はE14のところ。各自のPC上に必要なパッケージ群が適切にインストールされているか確認します。②赤枠内を全員コピペ実行。
①
②
E14:Installと確認4
113
①今はE14のところ。各自のPC上に必要なパッケージ群が適切にインストールされているか確認します。②赤枠内を全員コピペ実行。③2回目のところが、④のような感じで何もメッセージが表示されていなければOK。そうでないヒトはチャット上にall宛てでエラーメッセージを示してください。恥ずかしがり屋さんはTA宛のみでもよいです。うまくいかない環境のヒトをあぶりだして、ここで一旦揃えるための措置です。
③
④
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
114
E15:Documentation1
115
次は①Documentation。これが一番上にくるように②ページ下部に移動。
②
①
E15:Documentation2
116
次は①Documentation。これが一番上にくるように②ページ下部に移動。こんな感じ。③このパッケージのドキュメント(文書)を見たいなら、④のコマンドを打てと書いていますが、やる必要はない。
②
①
④③
E15:Documentation3
117
次は①Documentation。これが一番上にくるように②ページ下部に移動。こんな感じ。③このパッケージのドキュメント(文書)を見たいなら、④のコマンドを打てと書いていますが、やる必要はない。その理由は、④をコピペ実行して起動するウェブページのリンク先が、⑤のものと同じだからです。このあたりの話はつまらないかもしれないが、未知の状態で一人で探検しても孤独死するので重要です。テクニカルなことではなく、さっさと結果を出して生物学的な解釈などに重きを置きたいと思っていらっしゃるかもいるかもしれませんが、そもそも解析結果を出せなければその土俵にすら立てません。
⑤
④
E15:Documentation4
118
私は普段、①この一番上にあるものを参考にして使用法を学びます(ここでは①をDocumentと呼びます)。経験上、PDFファイル上にあるRコマンドをコピペ実行すると、エラー遭遇率が非常に高いです。②は対応するRスクリプトのテキストファイルですので、コピペ実行自体はこちらを利用するほうが無難です。
① ②
E15:Documentation5
119
私は普段、①この一番上にあるものを参考にして使用法を学びます(ここでは①をDocumentと呼びます)。経験上、PDFファイル上にあるRコマンドをコピペ実行すると、エラー遭遇率が非常に高いです。②は対応するRスクリプトのテキストファイルですので、コピペ実行自体はこちらを利用するほうが無難です。③は関数の入出力形式やオプションの説明に特化したリファレンスマニュアルです。調べたい関数名が既知の場合は、「?関数名」とか「help(関数名)」で関数の利用法を調べてもよいですが、③をざっと見ておけば、他にどのような関数が提供されているかを知ることができます。
③
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
120
E16:Abstract1
121
①Document (Beginner’s guide)の説明を丁寧に行っていきます。初見のパッケージの場合は、大抵の場合①を丁寧に自力で読み込んでいかねばならないからです。「バイオスタティスティクス基礎論」や「機能ゲノム学」などで学んだ基本テクや基礎知識に加えて、適宜「google先生」に教えてもらい、それでも七転八倒しながらどうにか一通り解析結果を得ていくのが通常です。それでも「結果がなんか変」になる場合が多いため、自在に作成したシミュレーションデータなどで答え合わせをしていきます。
①
E16:Abstract2
122
MLSeqの①DocumentのPDFです。「字が小さすぎて読めない」という方は、②を押すなどして適宜拡大して眺めて下さい。
②
E16:Abstract3
123
MLSeqの①DocumentのPDFです。「字が小さすぎて読めない」という方は、②を押すなどして適宜拡大して眺めて下さい。半ページ分ほど下に移動して、③Abstractを眺めているところ。④RNA-seq用で、機械学習で分類を行う包括的なパッケージ、という概要を知る。③
④
E16:Abstract4
124
MLSeqの①DocumentのPDFです。「字が小さすぎて読めない」という方は、②を押すなどして適宜拡大して眺めて下さい。半ページ分ほど下に移動して、③Abstractを眺めているところ。④RNA-seq用で、機械学習で分類を行う包括的なパッケージ、という概要を知る。⑤できることの具体例。
⑤
E16:Abstract5
125
MLSeqの①DocumentのPDFです。「字が小さすぎて読めない」という方は、②を押すなどして適宜拡大して眺めて下さい。半ページ分ほど下に移動して、③Abstractを眺めているところ。④RNA-seq用で、機械学習で分類を行う包括的なパッケージ、という概要を知る。⑤できることの具体例。⑥入力はRNA-seqカウントデータで、前処理や様々な機械学習アルゴリズムを実行できる。
⑥
E16:Abstract6
126
MLSeqの①DocumentのPDFです。「字が小さすぎて読めない」という方は、②を押すなどして適宜拡大して眺めて下さい。半ページ分ほど下に移動して、③Abstractを眺めているところ。④RNA-seq用で、機械学習で分類を行う包括的なパッケージ、という概要を知る。⑤できることの具体例。⑥入力はRNA-seqカウントデータで、前処理や様々な機械学習アルゴリズムを実行できる。⑦前処理に関する詳細。E07やE08で触れたサンプル間のばらつきなどを補正する機能もある。
⑦
E16:Abstract7
127
⑦
⑦が一番上になるようにしただけ。
E16:Abstract8
128
⑧
⑦が一番上になるようにしただけ。⑧データ変換(transformation)によって、離散型のRNA-seqデータを(連続型の)マイクロアレイデータのような数値分布に近づけることができる。それは、昔流行っていたマイクロアレイ用の分類アルゴリズム(SVMやRandom Forest)を適用可能にすることを意味する。
⑧
E16:Abstract9
129
⑦が一番上になるようにしただけ。⑧データ変換(transformation)によって、離散型のRNA-seqデータを(連続型の)マイクロアレイデータのような数値分布に近づけることができる。それは、昔流行っていたマイクロアレイ用の分類アルゴリズム(SVMやRandom Forest)を適用可能にすることを意味する。ここでのデータ変換は、ただの対数変換(log変換)のことを指します。ギョーカイに長くいるヒトはすぐに分かります。いないヒトでも、このパッケージマニュアルを読み進めていくと、データ変換の実体が対数変換であることがわかります。対数変換するとデータが正規分布っぽくなるので、正規分布を仮定したアルゴリズムが適用可能になるということです。
⑨
E16:Abstract10
130
⑦が一番上になるようにしただけ。⑧データ変換(transformation)によって、離散型のRNA-seqデータを(連続型の)マイクロアレイデータのような数値分布に近づけることができる。それは、昔流行っていたマイクロアレイ用の分類アルゴリズム(SVMやRandom Forest)を適用可能にすることを意味する。ここでのデータ変換は、ただの対数変換(log変換)のことを指します。ギョーカイに長くいるヒトはすぐに分かります。いないヒトでも、このパッケージマニュアルを読み進めていくと、データ変換の実体が対数変換であることがわかります。対数変換するとデータが正規分布っぽくなるので、正規分布を仮定したアルゴリズムが適用可能になるということです。実際、E01で示した、⑨の論文中でも…
⑨
E16:Abstract11
131
⑦が一番上になるようにしただけ。⑧データ変換(transformation)によって、離散型のRNA-seqデータを(連続型の)マイクロアレイデータのような数値分布に近づけることができる。それは、昔流行っていたマイクロアレイ用の分類アルゴリズム(SVMやRandom Forest)を適用可能にすることを意味する。ここでのデータ変換は、ただの対数変換(log変換)のことを指します。ギョーカイに長くいるヒトはすぐに分かります。いないヒトでも、このパッケージマニュアルを読み進めていくと、データ変換の実体が対数変換であることがわかります。対数変換するとデータが正規分布っぽくなるので、正規分布を仮定したアルゴリズムが適用可能になるということです。実際、E01で示した、⑨の論文中でも、”For the general-purpose classifiers, we provided log-transformed counts, log2(count + 1).”のような感じで、general-purpose classifiersについてはlog変換後のデータが与えられています。
E16:Abstract12
132
⑨
⑧データ変換(transformation)についてわざわざ言及している理由が、⑨に書かれている。昔流行ったマイクロアレイデータ用の90もの分類器(classifier)がMLSeqパッケージで利用可能!
⑧
E16:Abstract13
133
⑩
⑧データ変換(transformation)についてわざわざ言及している理由が、⑨に書かれている。昔流行ったマイクロアレイデータ用の90もの分類器(classifier)がMLSeqパッケージで利用可能!⑩さらにMLSeqは、PLDAやNBLDAのようなdiscrete-based classifierも提供されている。赤下線部内にあるPoissonやnegative binomialはRNA-seqカウントデータをよく表現するモデルです(2020年5月26日の機能ゲノム学の講義資料)。
E16:Abstract14
134
①discrete-based classifiersって何よ?とイラっとし始めるヒトも出てくるだろうが、まずは落ち着いて状況を整理。
①
E16:Abstract15
135
①discrete-based classifiersって何よ?とイラっとし始めるヒトも出てくるだろうが、まずは落ち着いて状況を整理。②also includesという表現から、直前の文中の③microarray-based classifiersとは異なるものであると判断できる。また、④discrete RNA-seq dataという表現から…
①②③
④
E16:Abstract16
136
①
①discrete-based classifiersって何よ?とイラっとし始めるヒトも出てくるだろうが、まずは落ち着いて状況を整理。②also includesという表現から、直前の文中の③microarray-based classifiersとは異なるものであると判断できる。また、④discrete RNA-seq dataという表現から、⑤PLDAや⑥NBLDAのような、①discrete-based classifiersは、④discreteRNA-seq dataをそのまま入力として受け付けてくれるのだろうと予想する。つまりデータ変換なし、ということ。④
⑤⑥
E16:Abstract17
137
①discrete-based classifiersって何よ?とイラっとし始めるヒトも出てくるだろうが、まずは落ち着いて状況を整理。②also includesという表現から、直前の文中の③microarray-based classifiersとは異なるものであると判断できる。また、④discrete RNA-seq dataという表現から、⑤PLDAや⑥NBLDAのような、①discrete-based classifiersは、④discrete RNA-seq dataをそのまま入力として受け付けてくれるのだろうと予想する。つまりデータ変換なし、ということ。同時に、discreteの反対語はcontinuousとかindiscreteなので、もしcontinuousclassifiersという表現が出てきたら、それは③microarray-based classifiersと同じ意味なのだろうと判断する。こんな感じで表現の揺れに対する耐性もつけていくとよい。
③
E16:Abstract18
138
ここまでのまとめ
Microarray-based classifiers
(continuous classifiers)
(general-purpose classifiers)
(caret-based classifiers)
Discrete-based classifiers
(discrete classifiers)
Classifiers
分類器
データ変換の必要性
あり
MLSeqパッケージ(入力はRNA-seqカウントデータ)
なし
分類器の例 PLDA, NBLDAなどvoom-based discriminant
analysis
E16:Abstract19
139
①前処理されたデータに対して、研究者は分類モデルを構築し、これらのモデルにパラメーター最適化を適用し、モデルのパフォーマンスを評価し、異なる分類モデルのパフォーマンスを比較できます。Google翻訳結果のコピペです。「モデル」という表現が難解かもしれませんが、その場合は「方法」と解釈すればよいです。
①
E16:Abstract20
140
①前処理されたデータに対して、研究者は分類モデルを構築し、これらのモデルにパラメーター最適化を適用し、モデルのパフォーマンスを評価し、異なる分類モデルのパフォーマンスを比較できます。Google翻訳結果のコピペです。「モデル」という表現が難解かもしれませんが、その場合は「方法」と解釈すればよいです。②「構築したモデルを用いて、テスト用サンプルのクラスラベルを予測することができる」と書いています。独特の表現方法なので難解かもしれませんが、要は「作った分類器で、未知サンプルが癌なのか正常なのか判定できまっせ」ということです。③は入力データに関する事柄であり、大まかに解説済み(E01)。
②
③
E16:Abstract21
141
④
④がAbstractの残りの部分。⑤vignette(ビネットとかビグネットと読むらしい)は、今見ているこのdocumentのことです。Documentの書き方のノリはパッケージによって随分異なりますが、まずは⑤このビネット(document)の内容に沿って行い、実践経験を積みます。
⑤
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
142
E17:Contents1
143
Documentの2ページ目。①Contentsのところで全体像を把握します。実用上は、②の赤枠内が一通りできれば十分。
②
①
E17:Contents2
144
Documentの2ページ目。①Contentsのところで全体像を把握します。実用上は、②の赤枠内が一通りできれば十分。③で解析データファイルを読み込ませてラベル情報(どのサンプルがどの群に属するかという情報)を割り当てる。④未知サンプルの分類が一番やりたいことだが、そんなに簡単に手に入るものではない。
③
④
E17:Contents3
145
③
④
Documentの2ページ目。①Contentsのところで全体像を把握します。実用上は、②の赤枠内が一通りできれば十分。③で解析データファイルを読み込ませてラベル情報(どのサンプルがどの群に属するかという情報)を割り当てる。④未知サンプルの分類が一番やりたいことだが、そんなに簡単に手に入るものではない。なのでこの業界でよくやられる手段が⑤。ラベル情報既知の、③のサンプル群の一部を、テスト用サンプルとして活用すべく切り分ける(splitする)作業を⑤で行います。具体的には、③の中から20%分程度のサンプルをテストセットとして、④の部分で用います。
⑤
E17:Contents4
146
Documentの2ページ目。①Contentsのところで全体像を把握します。実用上は、②の赤枠内が一通りできれば十分。③で解析データファイルを読み込ませてラベル情報(どのサンプルがどの群に属するかという情報)を割り当てる。④未知サンプルの分類が一番やりたいことだが、そんなに簡単に手に入るものではない。なのでこの業界でよくやられる手段が⑤。ラベル情報既知の、③のサンプル群の一部を、テスト用サンプルとして活用すべく切り分ける(splitする)作業を⑤で行います。具体的には、③の中から20%分程度のサンプルをテストセットとして、④の部分で用います。残りの80%分程度のサンプルは、⑥モデル構築用(分類器の作成用)の訓練データとして用いられます。これがトレーニングセット(training set)と呼ばれるものです。
⑥
E17:Contents5
147
⑤で分割した80%分程度のトレーニングセットのデータを用いて、モデル構築(分類器の作成)を行うわけですが、そもそもどのようなものが利用可能か、そしてそれはどのようにして指定するのかを予め知っておく必要があります。それを知る手段が⑦に書かれています。「SVMやRandom Forest (RF)という機械学習アルゴリズムの名前」と「モデル」との対応関係がまだよくわからないというヒトも多いかもしれません。私もそのあたりは曖昧ですが、例えば「SVMを用いてモデル構築を行う」みたいな言い方をします。
⑤
⑦
E17:Contents6
148
⑤で分割した80%分程度のトレーニングセットのデータを用いて、モデル構築(分類器の作成)を行うわけですが、そもそもどのようなものが利用可能か、そしてそれはどのようにして指定するのかを予め知っておく必要があります。それを知る手段が⑦に書かれています。「SVMやRandom Forest (RF)という機械学習アルゴリズムの名前」と「モデル」との対応関係がまだよくわからないというヒトも多いかもしれません。私もそのあたりは曖昧ですが、例えば「SVMを用いてモデル構築を行う」みたいな言い方をします。⑦でどの機械学習アルゴリズムを用いるかによって、選択する正規化(Normalization)や変換(transformation)の手段も異なるので、そのあたりが⑧で解説されています。
⑦
⑧
E17:Contents7
149
⑨
選択した機械学習アルゴリズムによっては、⑨さらに様々な指定をせねばなりません。例えば、機械学習アルゴリズムとしてSVMを選択した場合は、ベーシックな線形SVM(svmLinear)にするのか、あるいは高次元空間で分類器を学習させるカーネルトリックという手段を用いるのか、カーネルトリックを利用する場合にはどのようなカーネル関数を用いるかを指定せねばなりません。
E17:Contents8
150
⑨
選択した機械学習アルゴリズムによっては、⑨さらに様々な指定をせねばなりません。例えば、機械学習アルゴリズムとしてSVMを選択した場合は、ベーシックな線形SVM(svmLinear)にするのか、あるいは高次元空間で分類器を学習させるカーネルトリックという手段を用いるのか、カーネルトリックを利用する場合にはどのようなカーネル関数を用いるかを指定せねばなりません。カーネル関数にもいろいろありますが、svmPolyとして指定する多項式カーネル(polynomial kernel)と、svmRadialとして指定するRBFカーネル(Gaussian カーネルとも呼ばれるらしい)がMLSeq上で利用可能です。RBFはradial basis functionの略です。
E17:Contents9
151
⑨
(SVMやdeep learningなどで)よく議論される事柄として、ハイパーパラメータ(hyper-parameters)と呼ばれるものがあります。これはユーザが予め指定しなければいけないパラメータのことです。例えばRBFカーネルを利用する際によく議論されるハイパーパラメータとしては、「誤分類をどの程度許容するかというコストパラメータC(小さい値ほど誤分類の許容度が大きい)」と「クラス分類の境界をどの程度複雑にするかを指定するgammaと呼ばれるパラメータ(小さい値ほど複雑度が低い)」の2つが挙げられます。
E17:Contents10
152
⑨
(SVMやdeep learningなどで)よく議論される事柄として、ハイパーパラメータ(hyper-parameters)と呼ばれるものがあります。これはユーザが予め指定しなければいけないパラメータのことです。例えばRBFカーネルを利用する際によく議論されるハイパーパラメータとしては、「誤分類をどの程度許容するかというコストパラメータC(小さい値ほど誤分類の許容度が大きい)」と「クラス分類の境界をどの程度複雑にするかを指定するgammaと呼ばれるパラメータ(小さい値ほど複雑度が低い)」の2つが挙げられます。もちろん、⑨のところでハイパーパラメータ(この場合はCとgamma)の最適値を自動で得ることができます。ハイパーパラメータの最適値を自動で探索(search)する際に一般的によく用いられる手段がグリッドサーチです。
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
153
E18:Introduction1
154
①Introductionから順に説明していきます。①をクリックしてもよいし、下矢印キーを押していってもよい。
①
E18:Introduction2
155
①Introductionから順に説明していきます。①をクリックしてもよいし、下矢印キーを押していってもよい。こんな感じになります。②特に新しい情報はない。③MLSeqパッケージは、④を打ち込むことでロード(読み込む)することができると書いてある。④の作業自体は実行済み。
①
②
③
④
E18:Introduction3
156
①Introductionから順に説明していきます。①をクリックしてもよいし、下矢印キーを押していってもよい。こんな感じになります。②特に新しい情報はない。③MLSeqパッケージは、④を打ち込むことでロード(読み込む)することができると書いてある。④の作業自体は実行済み。⑤E14でやっています。
⑤
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
157
E19:Preparing…1
158
次は、①入力データの準備。②MLSeqに入力として与えるのは、RNA-seqカウント行列(E01)とクラスラベル情報(どのサンプルが癌 or 正常なのかという情報;E09-E11)であることは既知。
②
①
E19:Preparing…2
159
次は、①入力データの準備。②MLSeqに入力として与えるのは、RNA-seqカウント行列(E01)とクラスラベル情報(どのサンプルが癌 or 正常なのかという情報;E09-E11)であることは既知。③これは「DESeqDataSetという形式で入力情報を取り扱う」のだと解釈。「機能ゲノム学」で紹介したSingleCellExperimentという形式のクラスオブジェクトと似たようなもの。
③
E19:Preparing…3
160
④
④このあたりは、「そもそも入力の数値行列をどうやって作成するのよ?」というヒト向けの説明。
E19:Preparing…4
161
④このあたりは、「そもそも入力の数値行列をどうやって作成するのよ?」というヒト向けの説明。2019年12月に公開した「乳酸菌NGS連載第14回」では、クラウド解析環境(Galaxyのことです)上で、⑤htseq-countを用いてカウント行列を得るやり方を紹介しています。
⑤
参考
E19:Preparing…5
162
④このあたりは、「そもそも入力の数値行列をどうやって作成するのよ?」というヒト向けの説明。2019年12月に公開した「乳酸菌NGS連載第14回」では、クラウド解析環境(Galaxyのことです)上で、⑤htseq-countを用いてカウント行列を得るやり方を紹介しています。⑥このビネット(document)で取り扱う入力データに関する説明。Cervicalというのは子宮頸部という意味。714個のマイクロRNA (miRNAs)のカウントデータだが、714遺伝子とみなしてよい。このデータがE09-E11でも読み込んだsample51.txtと同じものです。
⑥
E19:Preparing…6
163
⑥
⑦は、「E05のやり方2」と本質的に同じです。
⑦
E19:Preparing…7
164
⑦は、「E05のやり方2」と本質的に同じです。⑧E19の121-124目をコピペ実行し、documentと同じくcervicalという名前で取り扱う。
⑧
E19:Preparing…8
165
①E19の126行目をコピペ実行して見えているものが…
①
E19:Preparing…9
166
①E19の126行目をコピペ実行して見えているものが、②documentの4ページ目上部と同じものです。③「first 6 features」に相当するのが、④「最初の6行分」。「行(row)」は、遺伝子だったり、miRNAだったり転写物だったり多様なので、featureという表現で統一させている。
②
③
④
E19:Preparing…10
167
⑤subjectsは、患者という意味。⑥「10列」の部分に相当します。
⑤⑥
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
168
E20:データフレーム1
169
①Cervical dataの実体であるcervicalオブジェクトは、②data.frameという形式です。
②①
E20:データフレーム2
170
①Cervical dataの実体であるcervicalオブジェクトは、②data.frameという形式です。③データの形式を調べるclass関数の実行結果も、data.frame形式となっていることが分かります。
③
E20:データフレーム3
171
①Cervical dataの実体であるcervicalオブジェクトは、②data.frameという形式です。③データの形式を調べるclass関数の実行結果も、data.frame形式だとなっていることが分かります。今の場合は、cervicalというオブジェクトがdata.frameだと解説されているので、④is.data.frame関数を用いて「データフレームという形式かどうか(YesならTrue、NoならFalse)」を調べてもよいです。また、「matrixという形式かどうか」を調べるis.matrix関数を用いてFalseという結果が返されることを確認したりすれば、より理解が深まるでしょう。R上で行列演算を行う場合、data.frame形式のままだと非常に遅いので、as.matrixという関数を用いてmatrix形式にして演算を高速化する小技はわりと多くのヒトが使います。
参考
④
E20:データフレーム4
172
①
②③④
①では、クラスラベル情報を作成せねばならないので、②S4Vectorsというパッケージが提供する、③DataFrameという関数を用いて作成し、④DataFrameという形式のオブジェクトに格納するよ、と述べている。
E20:データフレーム5
173
①では、クラスラベル情報を作成せねばならないので、②S4Vectorsというパッケージが提供する、③DataFrameという関数を用いて作成し、④DataFrameという形式のオブジェクトに格納するよ、と述べている。E11と基本的に同じだが、このdocumentでは、⑤のような記述になっている。具体的には、⑥最初の29列分がNon-tumorなので”N”、⑦残りの29列分がTumorなので”T”としている。また、作成したデータフレームの列名を⑧conditionにしている。
⑥
⑦⑧
⑤
E20:データフレーム6
174
⑤が上部にくるように移動。ぱっと見で、⑧でconditionと書いているので、⑨の列名部分もそうなっているのだろう、的なことはわかる。私の経験上、自分のデータを試す際に、「どこをどのようにどの程度まで自由に変更してよいのか不安」でした。結構ミスをしまくって、「なんだそういうことだったのかorz…」ということも多々ありました。E11の当該部分と比較して、これくらいまでは許容してもらえるという感覚を掴んでおくとよいでしょう。
⑧
⑤
E20:データフレーム7
175
少しページ上部に戻っています。①の部分の解説です。
①
参考
E20:データフレーム8
176
少しページ上部に戻っています。①の部分の解説です。これは、「データフレーム形式のオブジェクトを作成する際に、②data.frameという名前のより一般的な関数が存在する。おそらくそれでもうまくいくだろうが、予期しないエラーを防ぐため③④DataFrame関数を利用することを勧める」ということです。
参考
①
④
③
②
E20:データフレーム9
177
少しページ上部に戻っています。①の部分の解説です。これは、「データフレーム形式のオブジェクトを作成する際に、②data.frameという名前のより一般的な関数が存在する。おそらくそれでもうまくいくだろうが、予期しないエラーを防ぐため③④DataFrame関数を利用することを勧める」ということです。ちなみに④の部分を②の関数で置き換えたものが…
参考
④
②
E20:データフレーム10
178
少しページ上部に戻っています。①の部分の解説です。これは、「データフレーム形式のオブジェクトを作成する際に、②data.frameという名前のより一般的な関数が存在する。おそらくそれでもうまくいくだろうが、予期しないエラーを防ぐため③④DataFrame関数を利用することを勧める」ということです。ちなみに④の部分を②の関数で置き換えたものが、⑤のコードです。
参考
⑤
E20:データフレーム11
179
少しページ上部に戻っています。①の部分の解説です。これは、「データフレーム形式のオブジェクトを作成する際に、②data.frameという名前のより一般的な関数が存在する。おそらくそれでもうまくいくだろうが、予期しないエラーを防ぐため③④DataFrame関数を利用することを勧める」ということです。ちなみに④の部分を②の関数で置き換えたものが、⑤のコードです。コピペ実行結果。⑥見た目が多少変わっていますが、確かに⑦data.frame形式ですね。
参考
⑦
⑥
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
180
①
E21:Splitting the data1
181
ビネット(document)の4ページ目下部にある、①Splitting the dataに移行します。
E21:Splitting the data2
182
ビネット(document)の4ページ目下部にある、①Splitting the dataに移行します。②では、58サンプルからなる子宮頸がんの発現データ(cervical data)を、トレーニングセットとテストセットに分割する。トレーニングセットは分類器(classification models)の構築に利用し、テストセットは構築したモデルの性能評価に利用すると書かれています。
①
②
E21:Splitting the data3
183
③
③通常は全サンプルの70%をトレーニングセットとして、残りの30%をテストセットとして利用する。しかし、データセット中のサンプル数が少ない場合は、分割比(split ratio)を50%程度まで少なくできると書いています。
E21:Splitting the data4
184
④
③通常は全サンプルの70%をトレーニングセットとして、残りの30%をテストセットとして利用する。しかし、データセット中のサンプル数が少ない場合は、分割比(split ratio)を50%程度まで少なくできると書いています。④逆にサンプル数が(200とか500とか)十分に多い場合は、トレーニングセットの割合を増やしてもよいだろう。基本的な考え方としては、信頼度の高いモデルを得つつ、テストセットで評価できる数もある程度キープできる値にするといいんじゃない、ということ。
E21:Splitting the data5
185
4ページ目最終行付近の⑤と、5ページ目最初のほうの⑥では、取り扱う58サンプルの場合に90%をトレーニングセットとするとどうなるかを説明している。
⑤
⑥
E21:Splitting the data6
186
⑤
⑥
4ページ目最終行付近の⑤と、5ページ目最初のほうの⑥では、取り扱う58サンプルの場合に90%をトレーニングセットとするとどうなるかを説明している。この場合は、58*0.9 = 52.2なので、52サンプル分の多いデータでモデル構築(分類器の作成)を行える。それゆえ、それなりに信頼度の高いモデルにはなるものの、テストセットに供することのできるサンプル数が6しかないので、誤分類1つあたりの影響度が1/6 = 0.16666…となり高くなる。
E21:Splitting the data7
187
⑦たまたま運悪く失敗した1つの例の影響度の大きさという点も考慮してデータセットの分割を行わないといけません。
⑦
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
188
E22:分割の本番1
189
①5ページ目の分割の具体的な作業に移行します。②DESeq2パッケージ自体は、RNA-seqカウントデータの発現変動解析用です。
①
②
E22:分割の本番2
190
①5ページ目の分割の具体的な作業に移行します。②DESeq2パッケージ自体は、RNA-seqカウントデータの発現変動解析用です。しかし、③でも書いているように発現変動解析自体は行いません。DESeq2パッケージを②であえて読み込んでいる理由は、このパッケージが提供するDESeqDataSetFromMatrixという関数を用いて、DESeqDataSetという形
式のオブジェクトを作成するためです。
①
②
③
E22:分割の本番3
191
④
このデータセットは、サンプルごとに714
個のfeatures(正確にはmicroRNAs)の発現データがありますが、④全features
(全ての行のデータ)を用いると計算コストがかかるので、サンプル間で変動(variances)の大きい上位100 features
のみを利用する、と書いています。
E22:分割の本番4
192
⑤
⑥⑦
⑤では、⑥全714 featuresの分散情報
を降順(大きい順)にソートし、⑦上位100遺伝子分のデータのみ抽出し…
E22:分割の本番5
193
⑤では、⑥全714 featuresの分散情報
を降順(大きい順)にソートし、⑦上位100遺伝子分のデータのみ抽出し、⑧ncol(data)で表される全サンプル数に相当する数(つまり58)の30%に相当する数そのもの(つまり58*0.3 = 17.4)だと
少数を含んでしまうので、切り上げ(ceiling)で得られた整数情報(つまり18)を取得し、⑨最後に、1から58の数値の中から、18個分をランダムに非復元抽出した結果をindというオブジェクト
に格納している。
⑧⑨
E22:分割の本番6
194
これはPDFファイルだが、おかまいなしに①赤枠内を一気にコピペ実行すると…
①
E22:分割の本番7
195
これはPDFファイルだが、おかまいなし
に①赤枠内を一気にコピペ実行すると、②最終的にテストセットとして用いる列番号情報の数値ベクトルが得られる。
②
E22:分割の本番8
196
①一気にコピペで答えが得られたとしても、最初のうちはstep-by-stepで理解し
ていくほうがよいと思います。以降のスライドでは、分解して示せるところを示していきます。
①
参考
E22:分割の本番9
197
①E22。143-146行目はRStudioを再起動したヒト用。②149行目は、apply関数を用いて714行×58列からなるcervical
の各行(MARGIN=1)に対して、分散を計算するvarを、na.rm=Tオプションつきで実行した結果をhogeに格納している。③150行目のlength(hoge)でhogeの要素数が714個であり、④151行目のhead(hoge)で最初の6個分の分散の値
を表示している。①
②
③
参考
E22:分割の本番10
198
①次は153行目のsort関数のところ。149行目で算出した遺伝子ごとの分散情報hogeを、②154行目で(decreasingにするかどうかのオプションをTrueとして)sort関数を実行した結果をvarsに格納している。ソートしただけなので、③varsの要素数は当然714個で不変。ソートしたので、④最初の6個分の分散の値は非
常に大きいことがわかる。
①
②
参考
③
④
E22:分割の本番11
199
①次は158行目のnames属性のところ。分散の大きい順にソートしたvarの遺伝子名情報部分であるnames(vars)に対する操作。②最初の6個の遺伝子名(feature names)を表示。このノリがわかれば、③が分散の大きい上位100個
分の遺伝子名に相当することがわかる。
参考
①
②
②
③
E22:分割の本番12
200
①次は163行目の行列要素の抽出のところ。②cervicalから、topnameが持つ分散の大きい上位100個の遺伝子名に相当する行を抽出した結果をdataに格納している。2つの行列(cervicalとdata)の行数の違いは妥当ですね。
参考
①
②
E22:分割の本番13
201
①次は168行目の、テストセットのサンプル数情報取得のところ。②ncol(data)で
全サンプル数情報を取得し、③でその30%に相当する数値(= 17.4)を取得。
最終的に欲しい「テストセットのサンプル数情報」は整数なので、ここでは④ceiling関数を用いて「小数点の切り上げ」を行っている。
参考
①
②
③
④
E22:分割の本番14
202
①次は168行目の、テストセットのサンプル数情報取得のところ。②ncol(data)で
全サンプル数情報を取得し、③でその30%に相当する数値(= 17.4)を取得。
最終的に欲しい「テストセットのサンプル数情報」は整数なので、ここでは④ceiling関数を用いて「小数点の切り上
げ」を行っている。実装上は「小数点の切り捨て」を行うfloor関数でもよい。なぜ特に断りもなしにceilingのほうなのだろ
うと一瞬思うが、ここでは結果的に得られるトレーニングセットのサンプル数(58
– 18 = 40)に注目すれば納得できる。
後々分かってくるが、トレーニングセットを5分割して性能評価を行うので、トレーニングセットが5で割り切れる数にした
かったのだろうと想像すればよい。本当に学ぶべき事柄は、開発者の意図の読み解きのような論理的な思考回路であり、単に一通りやることではない!
E22:分割の本番15
203
①テストセットのサンプル番号取得のところ。②sample関数を用いて、③xで指定したものの中から、④sizeで指定した個数、⑤非復元抽出(replace=FALSE)している。
①
② ④
③
⑤
Contents◼ E01:Introduction、利用可能なR package(caretやMLSeq)
◼ 解析データ概観 解析データ取得、sample51.txt/cervical.txt、発現や正規化の必要性
E05:ファイルの読込み、E06:Tips(小技)の復習
E07:列ごとの総和、E08:総和のばらつき
◼ ラベル情報の作成 E09:基本形、E10:(Rで)塩基配列解析のノリ、E11:MLSeqのノリ
◼ MLSeq(RNA-seq用の様々な分類アルゴリズムを実装したパッケージ) E12:論文のAbstract、E13:Bioconductor、E14:Installと確認、E15:Documentation
◼ MLSeqのDocument (Beginner's guide) E16:Abstract、E17:Contentsのところで全体像を把握する、E18:Introduction
E19:Preparing the input data、E20:データフレーム、E21:Splitting the data
E22:分割の本番、E23:set.seedで同じ乱数を発生させる
204
E23:set.seed1
205
スライドの手順通りやってきたヒトは、①と同じ結果になっているはずです。その理由は、「E22:分割の本番6」のスライド
において、同じ乱数を発生させたい場合に利用するset.seed(2128)というコマンドを含んで実行したからです。2128とい
う数字は、乱数を発生させる際に利用するタネ番号なので整数であれば何でもよい。
①
E23:set.seed2
206
①E23のところ。184行目のところでオブ
ジェクトの全消去を行い、一旦全てリセットしている。185-190行目までで必要最小限のスクリプトを実行して、②192行目にset.seedを埋め込んだ上で、③sample関数を実行している。184-194行目をコピペ実行。
①
③
②
E23:set.seed3
207
①E23のところ。184行目のところでオブ
ジェクトの全消去を行い、一旦全てリセットしている。185-190行目までで必要最小限のスクリプトを実行して、②192行目にset.seedを埋め込んだ上で、③sample関数を実行している。184-194行
目をコピペ実行。④全員同じ実行結果が得られているはず…です。
④