Как обрезать дерево в 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, наименьшее дерево в пределах одной стандартной ошибки делает такую ​​же хорошую работу при прогнозировании наилучшим (наименьшее число ошибок CV), но она делает это с меньшим количеством "терминов" ".

Выделите размер стоимости и размера дерева для un -рубленного дерева с помощью:

plotcp(tree)

Найдите дерево слева от него с минимальной ошибкой, чье значение находится внутри строки ошибок с минимальной ошибкой.

Может быть много причин, почему обрезка не влияет на подогнанное дерево. Например, лучшим деревом может быть тот, где алгоритм остановлен в соответствии с правилами остановки, указанными в ?rpart.control.