1. #=== ~ #=== 을 한번에 돌리면 repeat 함수가 loop 를 시작합니다
2. #---- ~ #---- 부분은 loop 없이 ctree 모델 1개만 출력해서 결과를 볼 수 있습니다.
이때 중간 주석처리된 #set.seed(553) 을 주석해제해야 올바른 테스트를 할 수 있습니다.
3. temp 데이터프레임에 seed 와 정확도(accuracy) 값 rnk 순위 컬럼을 추가하여 seed 값에 따른 정확도 변화를
모니터링할 수 있습니다. (나중에 ctree 성능개선 코드와 같이 보면 좋을 것 같습니다)
4. (x==1 | i==30000) 조건을 주었을 때 set.seed(10500) 에서 x=0.89 로 0.03 의 성능향상을 볼 수 있었습니다.
( set.seed(-19532) 도 set.seed(10500) 값과 동일한 예측치를 보여줍니다)
(중간에 멈추어도 temp data.frame 에 진행중이던 값들은 남아있어 확인이 가능합니다)
#==================================================================
##Find optimal seed value : repeat
##0. repeat
accuracy <- c()
seed <- c()
i <- 1
repeat {
set.seed(i)
seed <- append(seed, i)
#-------------------------------------------------------------------------------------------------------------
#load data
credit <- read.csv("credit.csv", header=T, stringsAsFactors=T)
#set.seed(10500) ##Need remark when tring loop
credit_shuffle <- credit[ sample( nrow(credit)), ]
#train_data : test_data = 9:1
train_num <- 0.9 *nrow(credit_shuffle)
train_data <- credit_shuffle[1:train_num, ]
test_data <- credit_shuffle[ (train_num+1):nrow(credit_shuffle), ]
#ctree model
library(party)
ct_model <- ctree( default~. , data=train_data)
#predict
ct_pred <- predict(ct_model, newdata=test_data)
#CrossTable
library(gmodels)
g <- CrossTable( x=test_data[ ,17], y=ct_pred)
x <- sum(g$prop.tbl *diag(2))
x #0.89
# Visualization
#plot(wine_ctree) #vis. option1
#plot(ct_model, type="simple") #show tree graph
#-------------------------------------------------------------------------------------------------------------
## repeat
accuracy <- append(accuracy, x)
temp <- data.frame(seed, accuracy)
print(i)
print(x)
if (x==1 | i==30000) break
i <- i+1
}
print(i) #value : satisfying condition
## Find hyper parameter
library(dplyr)
temp$rnk <- dense_rank(-temp$accuracy)
temp[temp$rnk==1, ] #10500
View(temp)
##hyper parameter : set.seed(10500)
#==================================================================