Как обрезать дерево в R?
Я делаю классификацию с использованием rpart в R. Модель дерева обучается:
> tree <- rpart(activity ~ . , data=trainData)
> pData1 <- predict(tree, testData, type="class")
точность для этой модели дерева:
> sum(testData$activity==pData1)/length(pData1)
[1] 0.8094276
я прочитала учебник чтобы обрезать дерево перекрестной проверкой:
> 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? Спасибо.
1 ответов
вы использовали минимальное дерево перекрестных ошибок. Альтернативой является использование наименьшего дерева, которое находится в пределах 1 стандартной ошибки лучшего дерева (того, которое вы выбираете). Причина этого в том, что, учитывая оценки CV ошибки, наименьшее дерево в пределах 1 стандартной ошибки выполняет такую же хорошую работу по прогнозированию, как и лучшее (самая низкая ошибка CV) дерево, но делает это с меньшим количеством "терминов".
построить стоимость-сложность против размера дерева для un-подрезают дерево через:
plotcp(tree)
найдите дерево слева от дерева с минимальной ошибкой, значение cp которого находится в строке ошибки одного с минимальной ошибкой.
может быть много причин, почему обрезка не влияет на подходящее дерево. Например, лучшим деревом может быть то, где алгоритм остановился в соответствии с правилами остановки, указанными в ?rpart.control
.