RとRstudioで機械学習
今日はRとRStudioで機械学習の備忘録
最近始めたRでの機械学習で医療系データを解析してみました。
データは健診データで目的変数はeGFRの悪化予測としました。
(R3.5.0を使用して、どんな程度できるかのお試しです。)
まずパッケージの読み込みで(e1071)と(kernlab)を指定します。
各説明変数を教師データと解析データに2分割していきます。
その後、単純ベイズモデルに適応しています。
感度特異度から予測精度を確認します。
実際のRの解析の流れはこんな感じです。
#パッケージの読み込み
library(e1071)
library(kernlab)
#健診データの読み込み
#(省略)
#教師データと評価データに分
n<-seq(1,nrow(Dataset),by=2)
eGFR.train<-Dataset[n,]
eGFR.test<-Dataset[-n,]
#単純ベイズで分類モデルを作成
nb.model<-naiveBayes(eGFR2低下群~.,data=eGFR.train)
#単純ベイズで作成した分類モデルを確認
nb.model
Naive Bayes Classifier for Discrete Predictors
Call:
naiveBayes.default(x = X, y = Y, laplace = laplace)
A-priori probabilities:
Y
a b
0.5357143 0.4642857
Conditional probabilities
#単純ベイズで作成した分類モデルを評価データに適応
nb.pred<-predict(nb.model,eGFR.test)
#単純ベイズによる予測結果を確認
head(nb.pred)
[1] b a a a b a
Levels: a b
#予測の正誤をまとめた表を作成
(nb.tab<-table(eGFR.test$eGFR2低下群,nb.pred))
nb.pred
a b
a 36 0
b 2 17
#予測精度の確認
sum(diag(nb.tab))/sum(nb.tab)
[1] 0.9636364
年齢・性別・血圧・ABI値・CAVI値など
すべて説明変数に入れ込んだらいい感じに
単純ベイズで96.3%の精度が出てます。
意外と臨床的意義があるかもしれないです。
機械学習ってすごいって思いますね。
次回はニューラルネットワークモデルや
サポートベクターマシンも試してみます。