问题:改进GBM(梯度推进)模型和nan'的问题;在r中使用gbm函数生成的。train.fraction正确设置为<;1.

问题:改进GBM(梯度推进)模型和nan'的问题;在r中使用gbm函数生成的。train.fraction正确设置为<;1.,r,model,training-data,gbm,R,Model,Training Data,Gbm,我试图测试R函数gbm中的不同参数,以便用我的数据进行预测。我有一个79866行和1586列的巨大表格,其中列是DNA中基序的计数,行表示DNA中不同的区域/位置以及计数所属的生物体。只有3种生物,但计数是按位置分开的(peakid) 数据如下所示: chrII:11889760_11890077蠕虫0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 由于内存有问题,我还不知道如何解决(因为表

我试图测试R函数gbm中的不同参数,以便用我的数据进行预测。我有一个79866行和1586列的巨大表格,其中列是DNA中基序的计数,行表示DNA中不同的区域/位置以及计数所属的生物体。只有3种生物,但计数是按位置分开的(peakid)

数据如下所示:

chrII:11889760_11890077蠕虫0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

由于内存有问题,我还不知道如何解决(因为表的大小),所以我使用了数据的一个子集:

motifs.table.sub<-motifs.table[1:1000, 1:1000]

set.seed(123)
motifs_split.sub <- initial_split(motifs.table.sub, prop = .7)
motifs_train.sub <- training(motifs_split.sub)

motimes.table.suborganism是一个因素,您在高斯分布上进行培训?对于gbm,你必须弄清楚你的因变量是什么,如果说连续变量,你用高斯分布,其他变量用伯努利分布。嗨,谢谢。我的响应变量是有机体(3个选项),我使用的是高斯分布。你不能使用高斯分布。这是你需要的多等级的。参见示例是的,我已经更改为multi,我不得不减少数据集,但现在它正在改进,但我在一些树的改进中得到了一些负值和nan,你知道它是什么意思吗?详细的看起来是这样的:Iter列车偏差有效性步长提高1 1.0986 1.0986 0.3000 0.4667。。。160 0.1370 0.1445 0.3000-0.0004 180 0.1351 0.1423 0.3000-0.0011 200-nan-nan 0.3000-nan
hyper_grid <- expand.grid( 
  shrinkage = c(.01, .1, .3), 
  interaction.depth = c(1, 3, 5),
  n.minobsinnode = c(5, 10, 15), 
  bag.fraction = c(.65, .8, 1),
  optimal_trees = 0,
  min_RMSE = 0)
random_index.sub <- sample(1:nrow(motifs_train.sub), nrow(motifs_train.sub))
random_motifs_train.sub <- motifs_train.sub[random_index.sub, ]
for(i in 1:nrow(hyper_grid)) {#
  set.seed(123)
  gbm.tune <- gbm(
    formula = organism ~ .,
    distribution = "gaussian", #default
    data = random_motifs_train.sub,
    n.trees = 1000,
    interaction.depth = hyper_grid$interaction.depth[i],
    shrinkage = hyper_grid$shrinkage[i],
    n.minobsinnode = hyper_grid$n.minobsinnode[i],
    bag.fraction = hyper_grid$bag.fraction[i],
    train.fraction = 0.70,
    n.cores = NULL,
    verbose = V)
  print(head(gbm.tune$valid.error))}