Bing Image Creator で生成: wide photo shot of higher mountains, emerald green lakes, blue sky, photo
の続きです。今回はLogistic RegressionとDecision Treeで判別分析をしたいと思います。
まずは、glm()関数でLogistic Regressionをします。
各変数間の交差項や、変数の2乗項、3乗項を説明変数に加えました。
summary()関数でモデルの推定結果をみてみます。
step()関数で不必要な変数を削除します。
summary()関数でモデルを確認します。
ratioの2乗がなくなっています。
predict()関数で予測します。
予測結果は0 ~ 1 の値なので、0.5以上なら1、そうでないなら0にif_else()関数で変換しました。
判別結果をみてみましょう。
large = 0 のときは、29駅中、26駅が的中、
large = 1 のときは、21駅中、16駅が的中しました。
正解率は 84% です。Balanced Accuracy は 82.92% でした。
次は、Decision Treeで判別します。
パッケージは、C50を使いました。
C5.0()関数でモデルを生成します。
plot()関数で決定木のグラフを描きます。
total と ratio を使って判別していることがわかります。
predict()関数で予想します。
判別結果をconfusionMatrix()関数でみてみます。
large = 0 のとき、29駅中、25駅が的中、
large = 1 のとき、21駅中、16駅が的中、
全体の正解率は、82%、
Balanced Accuracy は81.2% でした。
今回は以上です。
初めから読むには、
です。
今回のコードは以下になります。
#
# Logistic Regressionによる判別
#
# glm()関数で予測モデルを生成
fit_glm <- glm(large ~ total + pass + ratio +
total:pass + total:ratio + pass:ratio +
I(total^2) + I(pass^2) + I(ratio^2) +
I(total^3) + I(pass^3) + I(ratio^3),
data = df_train,
family = binomial)
#
# fit_glmのサマリー
summary(fit_glm)
#
# step()関数で不要な変数を削除する
fit_glm2 <- step(fit_glm, trace = FALSE)
#
# fit_glm2のサマリー
summary(fit_glm2)
#
# 予測
pred_glm2 <- predict(fit_glm2, df_test, type = "response")
pred_glm2
pred_glm2 <- if_else(pred_glm2 > 0.5, 1, 0)
#
# 判別結果
caret::confusionMatrix(factor(pred_glm2),
factor(df_test$large))
#
# Decision Tree
#
# C50 パッケージの読み込み
library(C50)
#
# Decision Treeモデルを生成
fit_C5.0 <- C5.0(df_train[ , -1], factor(df_train$large))
#
# モデルのグラフ
plot(fit_C5.0)
#
# 予測
pred_C5.0 <- predict(fit_C5.0, df_test, type = "class")
pred_C5.0
#
# 判別結果
caret::confusionMatrix(pred_C5.0,
factor(df_test$large))
#