2013-03-10 7 views
10

나는 R.에서 rpart를 사용하여 분류를하고 있어요 트리 모델에 의해 훈련 :R에서 트리를 제거하는 방법?

> tree <- rpart(activity ~ . , data=trainData) 
> pData1 <- predict(tree, testData, type="class") 

이 트리 모델에 대한 정확도입니다 :

> sum(testData$activity==pData1)/length(pData1) 
[1] 0.8094276 

내가 나무를 가지 치기하는 tutorial 읽기 교차 검증 기준 :

> ptree <- prune(tree,cp=tree$cptable[which.min(tree$cptable[,"xerror"]),"CP"]) 
> pData2 <- predict(ptree, testData, type="class") 

제거 된 나무에 대한 정확도 비율은 여전히 ​​동일합니다 :

,
> sum(testData$activity==pData2)/length(pData2) 
[1] 0.8094276 

내 프 루닝 된 트리의 문제점을 알고 싶습니까? 그리고 R에서 교차 검증을 사용하여 트리 모델을 제거하는 방법은 무엇입니까? 감사.

답변

9

최소 유효성 검사 오류 트리를 사용했습니다. 대안은 가장 좋은 나무의 1 표준 오차 (당신이 선택한 것) 내에서 가장 작은 나무를 사용하는 것입니다. 그 이유는 CV의 추정치를 감안할 때, 1 표준 오류 내의 가장 작은 트리는 최상의 (가장 낮은 CV 오류) 트리와 마찬가지로 예측 적으로 좋은 일을하고 있지만 더 적은 "조건 ".

플롯을 통해 않은 -pruned 트리 트리의 크기 대 비용 복잡성 :

plotcp(tree) 

은의 오차 막대 내에있는 CP 값 최소 오류와 함께 하나의 왼쪽에있는 나무를 찾기 하나는 최소 오류가 있습니다.

가지 치기가 피팅 된 트리에 영향을 미치지 않는 데는 여러 가지 이유가있을 수 있습니다. 예를 들어, 가장 좋은 트리는 ?rpart.control에 지정된 중지 규칙에 따라 알고리즘이 중지 된 트리가 될 수 있습니다.

관련 문제