![見出し画像](https://assets.st-note.com/production/uploads/images/6394278/rectangle_large_1dee1fb733658c09bbe3bfd056b5de07.jpg?width=1200)
【MITの機械学習講座】回帰編をつかって、エイズウィルスの研究をしてみよう!
MITのEric Maさんが数年前にBroad Instituteで行った機械学習のチュートリアルを利用して、エイズウィルスの薬剤耐性について、回帰をこなってみる。
なお機械学習のチュートリアルについては、前のnoteの記事
【Aidemy X MIT】MITのチュートリアルの教材を利用して、ワインの特性データのクラスタリングを深めてみる!
を参考にしていただくと良いだろう。このチュートリアルはそこそこ経験者向けなので、初心者の自分はAidemyの機械学習3講座が役にたった!
機械学習の概要
機械学習は簡単なものは日常的に使われ、
教師あり学習:分類(classification)、回帰(regression)など
教師なし学習: クラスタリング、Manifold learningなど
があり、今回は教師あり学習の回帰(regression)を行う。
分類とはラベルを予測する手法であり、回帰とは「数値」や「値」を予測する手法である
This is the other general variant of supervised learning - where instead of predicting a "label" for a class (classification), we are predicting a "number" or a "value". This is called "regression", analogous to, say, linear regression or logistic regression.
Eric Maさんのチュートリアルは教師あり学習の分類と回帰、教師なし学習の3つを網羅するものであるが、回帰編では
エイズウィルス6979株のプロテアーゼタンパク配列
エイズウィルス6979株に対する薬剤の効果
の二つのデータセットを用い回帰を行う
まず環境設定とライブラリの読み込み
エイズウィルスのタンパク配列(99アミノ酸)情報読み込み
アミノ酸の等電点情報を用い、タンパク配列情報を数値情報に変更
エイズウィルスの薬剤効果情報読み込み
レクシヴァ/FPVの効果データを取り込み、配列情報データに結合し、NaN情報を除外する
data_matrix = seqdf.join(dr_vals[drug_name]).dropna()
こういうコードなかなかかけいないな。。
そして実際の回帰
テストデータとトレインデーターをわけて
ランダムフォレスト回帰し、プロット
回帰の評価
対数変換して同様のことを
99アミノ酸のうちどれが薬剤の効果に効いているかを調べると
このあと
GradientBoostingRegressor
AdaBoostRegressor
ExtraTreesRegressor
についても同様のことを調べてみる
GradientBoostingRegressor
AdaBoostRegressor
ExtraTreesRegressor
これを見る限り、RandomforestかExtraTreesRegressorがよさげ
システマテッィクにこれを評価
mean squared error
R^2
やっぱりそうですね!
てな感じでいろいろ遊べそう。。楽しい笑
さらに各種薬剤の感受性を予測させてみて、HIVのプロテアーゼのどの部位が感受性に関わるかみてみよう。
前と同様にFPVのデーターを取ってきて
予測、feature_importances_ の機能でアミノ酸ごとの予測への寄与度をす数値化したものをオブジェクトに格納
同様のことを別の薬、"ATV","DRV","FPV","IDV","LPV","NFV","SQV"でも行い、データーフレームに格納
転置して、heatmapを書かせてみる
クラスタリングした方が面白いので
プロテアーゼの一部の配列が薬剤感受性に関わっていること、またFPVとDRVのグループと、その他の薬でプロテアーゼの感受性部位に差があることがわかる