Как вычислить частоту появления ошибок из дерева решений?
Кто-нибудь знает, как рассчитать коэффициент ошибок для дерева решений с R? Я использую rpart()
функция.
1 ответ
Предполагая, что вы имеете в виду вычисление частоты ошибок в выборке, используемой для соответствия модели, вы можете использовать printcp()
, Например, используя онлайн-пример,
> library(rpart)
> fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)
> printcp(fit)
Classification tree:
rpart(formula = Kyphosis ~ Age + Number + Start, data = kyphosis)
Variables actually used in tree construction:
[1] Age Start
Root node error: 17/81 = 0.20988
n= 81
CP nsplit rel error xerror xstd
1 0.176471 0 1.00000 1.00000 0.21559
2 0.019608 1 0.82353 0.82353 0.20018
3 0.010000 4 0.76471 0.82353 0.20018
Root node error
используется для вычисления двух показателей прогнозирующей эффективности при рассмотрении значений, отображаемых в rel error
а также xerror
столбец и в зависимости от параметра сложности (первый столбец):
0,76471 x 0,20888 = 0,1604973 (16,0%) - это коэффициент ошибок повторного замещения (т. Е. Коэффициент ошибок, рассчитанный по обучающей выборке) - это примерно
class.pred <- table(predict(fit, type="class"), kyphosis$Kyphosis) 1-sum(diag(class.pred))/sum(class.pred)
0,82353 x 0,20988 = 0,1728425 (17,2%) - это перекрестная проверка частоты ошибок (с использованием 10-кратного CV, см.
xval
вrpart.control()
; но смотри такжеxpred.rpart()
а такжеplotcp()
который опирается на такую меру). Эта мера является более объективным показателем точности прогнозирования.
Обратите внимание, что это более или менее соответствует точности классификации из tree
:
> library(tree)
> summary(tree(Kyphosis ~ Age + Number + Start, data=kyphosis))
Classification tree:
tree(formula = Kyphosis ~ Age + Number + Start, data = kyphosis)
Number of terminal nodes: 10
Residual mean deviance: 0.5809 = 41.24 / 71
Misclassification error rate: 0.1235 = 10 / 81
где Misclassification error rate
рассчитывается по образцу обучения.