2013-10-30 6 views
0

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 접근법과 유사합니다. 이 경우에는 설명력이 없는데도 스플릿이없는 모델을 고르지 못하는 것 같습니다.

이게 맞습니까? 이거 괜찮아? 스플릿이없는 모델을 선택하지 못하게하는 규칙이 있어야합니다.

답변

0

selectionFunction="oneSE"을 삭제 해보세요.

가능한 가장 작은 오류로 깊이를 식별해야합니다. 그렇게하는 과정에서 최소한의 관찰 된 RMSE를 선택하는 것에서 "최적화 편견"에 대한 가능성이 있지만, 실제로는 작은 편이라는 것을 알았습니다.

최대

+0

답장을 보내 주셔서 감사합니다. selectionFunction = "best"옵션을 사용하면 실제로 실행중인 결과를 얻지 못하는 것 같습니다. 어쩌면 이것을 묻는 또 다른 방법이있을 수 있습니다. rpart가 처음에 더 많은 대리 용 분할을 시도하여 초기 분할에서 중단되지 않도록하는 방법이 있습니까? 어떤 경우에는 데이터 세트에 추가 변수를 추가하고 초기 분할이 트리를 생성하지 못한 원래 풀의 변수 중 하나 인 트리 모델을 얻을 수 있습니다. – Guillemot