gpt4 book ai didi

r - r中树包的树交叉验证

转载 作者:行者123 更新时间:2023-12-04 13:20:21 27 4
gpt4 key购买 nike

有谁知道如何cv.tree r中树包的功能,有效吗?
默认设置为 10 折,但结果显示 8 个树模型而不是 10 个:

enter image description here

此外,如果我设置 5 折,结果将显示 8 个模型:
enter image description here

我使用的代码如下:

library (MASS)
library(tree)
set.seed (1)
train = sample (1: nrow(Boston ), nrow(Boston )/2)
tree.boston =tree(medv~.,Boston ,subset =train)
summary (tree.boston )
cv.boston =cv.tree(tree.boston,K=10)
cv.boston

谢谢

最佳答案

输出中显示的八件事不是交叉验证的折叠。 cv.tree 的文档说到输出:

Value

A copy of FUN applied to object, with component dev replaced by the cross-validated results from the sum of the dev components of each fit.



由于您没有指定 FUN论据 cv.tree ,你会得到默认的 prune.tree . prune.tree的输出是什么?文档说:

Determines a nested sequence of subtrees of the supplied tree by recursively "snipping" off the least important splits, based upon the cost-complexity measure. prune.misclass is an abbreviation for prune.tree(method = "misclass") for use with cv.tree.



请注意,您的树正好有 8 片叶子。
plot(tree.boston)
text(tree.boston)

Plot of tree
prune.tree正在向你展示八棵树的偏差,将叶子一一剪掉。 cv.tree正在向您展示这个的交叉验证版本。它不是计算完整训练数据的偏差,而是对八次连续剪枝中的每一次使用交叉验证值。

比较仅使用 prune.tree 的输出中的偏差与交叉验证的偏差。
prune.tree(tree.boston)

$dev
[1] 3098.610 3354.268 3806.195 4574.704 5393.592 6952.719 11229.299
[8] 20894.657

cv.tree(tree.boston, K=5)

$dev
[1] 4768.281 4783.625 5718.441 6309.655 6329.011 7078.719 12907.505
[8] 20974.393

请注意,每一步的交叉验证值都相当高。只是使用 prune.tree对训练数据进行测试,因此低估了偏差。 cv 值更现实。

关于r - r中树包的树交叉验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53693305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com