gpt4 book ai didi

R gbm 为什么 fit$trees 的长度总是数据集 iris 的 n.trees 的 3 倍

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:55:42 28 4
gpt4 key购买 nike

无论我们选择哪种方法('cv'、'OOB' 或'test'),拟合的 gbm 对象中的树数始终为 3*n.trees 用于数据集 iris

是不是因为iris数据集有一个3级的目标分类变量。

如果是这样并且目标变量具有值 A、B 和 C,那么 A 是第 1 棵树,B 是第 2 棵树,C 是第 3 棵树,A 是第 4 棵树?

或者如果 n.trees 设置为 100,前 100 棵树用于 A,第二 100 棵树用于 B,最后 100 棵树用于 C?

fit = gbm(data=iris, Species ~., shrinkage = 0.2, n.trees = 50, cv.folds = 2)

best.iter = gbm.perf(fit, method = 'cv')

fit = gbm(data=iris, Species ~., shrinkage = 0.2, n.trees = 40, train.fraction = 0.8)

best.iter = gbm.perf(fit, method = 'test')

fit = gbm(data=iris, Species ~., shrinkage = 0.2, n.trees = 50)

best.iter = gbm.perf(fit, method = 'OOB')

最佳答案

你是对的,树的数量是 3 倍,因为你试图拟合公式左侧的因子。 R 会将其分解为公式左侧的 3 个独立变量,您将获得 3 个独立的拟合。

如果您过滤数据以仅获得两个水平的因子,您最终将得到 2*n.trees。

library(gbm)
iris.sub <- iris[iris$Species != "setosa", ]
iris.sub$Species <- factor(as.character(iris.sub$Species))
levels(iris.sub$Species)
fit = gbm(data=iris.sub, Species ~., shrinkage = 0.2, n.trees = 50, cv.folds = 2, distribution = "multinomial")
length(fit$trees)

至于数据在 gbm.object 中是如何组织的,我无法弄清楚树的顺序。

关于R gbm 为什么 fit$trees 的长度总是数据集 iris 的 n.trees 的 3 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678966/

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