我正在交叉验证分类树,并且能够绘制被不同大小的树错误分类的观察数量。我的问题是,对于给定的树大小,当该大小的树有k个不同的运行时(其中每个k运行的误分类数可能不同) ,返回“错误分类的”数字是什么意思?
我读过的几篇文章说,对于每种大小的树,应该返回k次折叠的平均值,但我认为这不是我得到的,因为我看到的“数字错误分类”的数字是总是完美的整数。
这是一个例子:
library('ISLR')
attach(Carseats)
High = cut(Sales, c(-Inf, 8, Inf), labels=c("Small", "Large"))
Carseats = data.frame(Carseats, High)
set.seed(2)
train = sample(1:nrow(Carseats), 200)
library('tree')
tr0 = tree(High ~ . -Sales, data=Carseats, subset=train)
set.seed(3)
tr0.cv = cv.tree(tr0, FUN=prune.misclass)
plot.tree.sequence(tr0.cv)
tr0.cv$dev
#[1] 55 55 53 52 50 56 69 65 80
# These don't look like averages across k folds
更新
在我的示例中,这里是不同的树大小及其对应的开发值(这里,意思是错误分类的数字)
tr0.cv$size
[1] 19 17 14 13 9 7 3 2 1
tr0.cv$dev
[1] 55 55 53 52 50 56 69 65 80
所以我们有一个大小为 19 的树,错误分类的数量是 55。这是说在 10 次运行中,所有错误分类的总和是 55?因此,对于每个大小为 19 的单独树拟合,平均大约有 5.5 个错误分类?
这似乎很可疑,因为当我确实适合大小为 19 的树时,我看到该数字被错误分类为 21。
tr0.Prune19 = prune.misclass(tr0, best=19)
summary(tr0.Prune19)
Classification tree:
tree(formula = High ~ . - Sales, data = Carseats, subset = train)
Number of terminal nodes: 19
Residual mean deviance: 0.4282 = 77.51 / 181
Misclassification error rate: 0.105 = 21 / 200
这样做 10 次,我预计错误分类的总数约为 200,这与报告的 55 有很大不同。当然,我知道在 10 次不同的运行中,错误分类的数量会有一些变化,但这听起来也是出入很大。我错过了什么吗?