rpert를 사용하여 선택 기능에 oneSE 옵션을 사용하여 캐럿 패키지 내에서 회귀 분석을 실행합니다. 내가 할 때, 나는 종종 분할이없는 모델로 끝납니다. 어떤 모델도 어떤 모델보다 우수 할 것 같지 않습니다. 이 일이 일어나야합니까? 난 그냥 직접에서 모델을 실행하는 경우,rpart 모델이 caret에서 0으로 쪼갤 때까지
Variables actually used in tree construction:
character(0)
Root node error: 1.4931/89 = 0.016777
n= 89
CP nsplit rel error
1 0.22357 0 1
그러나 다음은
> mod
No pre-processing
Resampling: Cross-Validation (10 fold, repeated 100 times)
Summary of sample sizes: 81, 79, 80, 80, 80, 80, ...
Resampling results across tuning parameters:
cp RMSE Rsquared RMSE SD Rsquared SD
0.0245 0.128 0.207 0.0559 0.23
0.0615 0.127 0.226 0.0553 0.241
0.224 0.123 0.193 0.0534 0.195
RMSE was used to select the optimal model using the one SE rule.
The final value used for the model was cp = 0.224.
이 printcp의 출력입니다 : 여기
# set training controls
tc <- trainControl("repeatedcv", repeats=100, selectionFunction="oneSE", num=10)
# run the model
mod <- train(yvar ~ ., data=dat, method="rpart", trControl=tc)
# it runs.....
# look at the cptable of the final model
printcp(mod$finalModel)
모델의 출력입니다 : 여기
은 예입니다 rpart, 나는 위의 아마도 더 간결한 모델로 바뀌었던 커다란 나무 가지가 아닌 나무를 볼 수있다 :
unpruned = rpart(yvar ~., data=dat)
printcp(unpruned)
Regression tree:
rpart(formula = yvar ~ ., data = dat)
Variables actually used in tree construction:
[1] c.n.ratio Fe.ppm K.ppm Mg.ppm NO3.ppm
Root node error: 1.4931/89 = 0.016777
n= 89
CP nsplit rel error xerror xstd
1 0.223571 0 1.00000 1.0192 0.37045
2 0.061508 2 0.55286 1.1144 0.33607
3 0.024537 3 0.49135 1.1886 0.38081
4 0.010539 4 0.46681 1.1941 0.38055
5 0.010000 6 0.44574 1.2193 0.38000
캐럿 [RMSE가 가장 낮은 RMSE를 가진 모델의 1SD 내에있는 가장 작은 트리를 찾으려고합니다. 이것은 Venebles와 Ripley에서 옹호 된 1-SE 접근법과 유사합니다. 이 경우에는 설명력이 없는데도 스플릿이없는 모델을 고르지 못하는 것 같습니다.
이게 맞습니까? 이거 괜찮아? 스플릿이없는 모델을 선택하지 못하게하는 규칙이 있어야합니다.
답장을 보내 주셔서 감사합니다. selectionFunction = "best"옵션을 사용하면 실제로 실행중인 결과를 얻지 못하는 것 같습니다. 어쩌면 이것을 묻는 또 다른 방법이있을 수 있습니다. rpart가 처음에 더 많은 대리 용 분할을 시도하여 초기 분할에서 중단되지 않도록하는 방법이 있습니까? 어떤 경우에는 데이터 세트에 추가 변수를 추가하고 초기 분할이 트리를 생성하지 못한 원래 풀의 변수 중 하나 인 트리 모델을 얻을 수 있습니다. – Guillemot