parsnip
tic-tac-toe 게임에 대한 결과가 깔끔하게 정리되어 있다. feature는 9개로 구성되어 있고, 라벨은 class
로 승리/패배로 구성되어 있다. 전형적인 예측모형 문제로, 9개의 변수로 틱택토 게임 승패를 예측하는 기계학습 모형을 구축하기 적합한 데이터셋이다.
library(tidyverse)
ttt_df <- read_csv("https://raw.githubusercontent.com/datasets/tic-tac-toe/master/data/tic-tac-toe.csv")
DT::datatable(ttt_df)
parsnip
예측모형caret
, mlr
이후 새롭게 개발되고 있는 parsnip
팩키지를 활용하여 간결하고 담백하게 틱택토 예측모형을 개발해 본다.
library(parsnip)
library(tidymodels)
# feature 공학
ttt_df <- ttt_df %>%
mutate(class = as.factor(class))
# 데이터 분할: 훈련/시험
ttt_split <- initial_split(ttt_df, props = 7/10)
ttt_train <- training(ttt_split)
ttt_test <- testing(ttt_split)
# 예측모형 적합
ttt_rf <- rand_forest(trees = 1000, mtry = round(sqrt(ncol(ttt_df)-1),0), mode = "classification") %>%
set_engine("ranger", seed = 63233) %>%
fit(class ~ ., data = ttt_train)
# 예측모형 성능평가
ttt_rf_prob <- predict(ttt_rf, ttt_test, type="prob")
ttt_rf_class <- ifelse(ttt_rf_prob[,2] > .6, TRUE, FALSE) %>% as.factor
caret::confusionMatrix(ttt_rf_class, ttt_test$class)
Confusion Matrix and Statistics
Reference
Prediction FALSE TRUE
FALSE 86 6
TRUE 6 141
Accuracy : 0.9498
95% CI : (0.9139, 0.9738)
No Information Rate : 0.6151
P-Value [Acc > NIR] : <2e-16
Kappa : 0.894
Mcnemar's Test P-Value : 1
Sensitivity : 0.9348
Specificity : 0.9592
Pos Pred Value : 0.9348
Neg Pred Value : 0.9592
Prevalence : 0.3849
Detection Rate : 0.3598
Detection Prevalence : 0.3849
Balanced Accuracy : 0.9470
'Positive' Class : FALSE