无论我们选择哪种方法('cv', 'OOB' or 'test'),对于数据集iris,拟合的gbm对象中的树的数量始终是3*n.trees。
这是因为iris数据集有一个具有3个级别的目标分类变量。
如果是这样,并且目标变量有值A,B和C,那么第一棵树是A,第二棵树是B,第三棵树是C,第四棵树是A?
或者,如果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')发布于 2017-10-11 11:57:15
你是对的,树的数量是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中是如何组织的,我无法确定树的顺序。
https://stackoverflow.com/questions/46678966
复制相似问题