수식이 나오지 않는다면 새로고침(F5)을 해주세요
모바일은 수식이 나오지 않습니다.
R로 XGboost를 구현합니다.
XGboost에 대한 이론적인 내용은 아래를 참고해주세요.
특별한건 아니고 대략적인 이런식으로 코드를 구현하는거구나~ 정도로 할겁니다!
XGB with R
- 라이브러리, 데이터 불러오기, 7:3으로 train, test set
# 라이브러리 불러오기
# 데이터 : iris data
library(MASS)
library(xgboost)
set.seed(42)
# train : test = 7:3
n = dim(Boston)[1]
train = sample(n, n*0.7)
btrain = Boston[train,]
btest = Boston[-train,]
- control 만들기(저는 간단히 10fold cv했습니다.)
# 10-cv
library(caret)
mycontrol = trainControl(method='cv', number=10,
savePredictions = 'final')
- 파라미터 튜닝
우선 R의 xgbtree에서 사용하는 파라미터는 아래를 참고해주세요.
# hyperparameters grid.
params = expand.grid(.nrounds = c(50, 100),
.max_depth=c(3,5),
.eta=c(0.01,0.1),
.gamma=c(0,1),
.colsample_bytree=c(0.6, 1),
.min_child_weight=1,
.subsample= c(0.5, 1))
grid search를 위해 원하는 값들을 넣어줍니다. 저는 간단히 시현만 할 것이기 때문에 많이 넣지는 않겠습니다. (Grid search 엄청 오래걸려요 많이 넣으면..)
- model fitting
# fitting
model = train(medv~., data=btrain, method='xgbTree',
trControl=mycontrol, metric= "RMSE",
tuneGrid= params, verbosity = -1)
이제 model을 쳐보면
model
이렇게 제가 설정한 METRIC = RMSE를 보여주고 가장 최고의 파라미터를 보여줍니다.(제가 설정한 것들 중에서)
nrounds = 100, max_depth = 3, eta =
0.1, gamma = 0, colsample_bytree = 1, min_child_weight = 1 and subsample = 0.5.
일 때 가장 좋은 결과가 나왔네요.
아래 코드로 한번에 볼수도 있습니다.
model$bestTune
- test predict
# pred
pred = predict(model, btest)
postResample(pred, btest$medv)
'🌞 Statistics for AI > Machine learning' 카테고리의 다른 글
Cohen's kappa(코헨의 카파) (1) | 2023.12.05 |
---|---|
혼동 행렬(Confusion Matrix) 설명 (1) | 2023.12.05 |
3. Boosting : XGBoost 쉽게 이해해보자.(간단 ver.) (1) | 2023.10.15 |
XGBoost에 대해(원리와 공식) (1) | 2023.10.15 |
XGBoost: A Scalable Tree Boosting System(Carlos & Tianqi. 2016) 리뷰 (1) | 2023.10.15 |