Как подрезать дерево в 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) дерево, но оно делает это с меньшим количеством терминов ".
Постройте график зависимости стоимости от размера дерева для необрезанного дерева с помощью:
plotcp(tree)
Найдите дерево слева от дерева с минимальной ошибкой, значение cp которого лежит в пределах строки ошибки с минимальной ошибкой.
Там может быть много причин, почему обрезка не влияет на подгонку дерева. Например, лучшее дерево может быть тем, где алгоритм остановлен в соответствии с правилами остановки, как указано в ?rpart.control
,