使用基于不平衡训练数据的随机森林模型预测物种存在

时间:2018-01-07 19:48:09

标签: r random-forest

我想使用随机森林构建物种分布模型:

我的训练数据包括971个物种存在记录(71)/缺失(900)和系统采样点(4 * 4m,随机起点)的三个环境变量。

培训数据:

str(train)
'data.frame':   971 obs. of  4 variables:
$ presence: num  0 0 0 0 0 0 0 0 0 0 ...
$ v1     : num  0.18 0.18 0.24 0.24 0.75 0.7 0.27 0 0.29 0.77 ...
$ v2   : num  10 110 19 99 97 71 64 45 54 74 ...
$ v3   : Factor w/ 3 levels "cat1","cat2",..: 1 1 1 1 2 2 2 3 1 2 ...

模型:

model <- randomForest(as.factor(presence) ~ v1 + v2 + v3, data = train)

我的测试数据(测试)由1019个相同变量的记录组成,包括它们在B位置的坐标。此外,我已经在B点映射了物种的出现。所以我在该数据上应用了模型:

prediction <- predict(model, newdata = test, type="prob")

我设置type="prob"因为我想预测物种的发生概率。

我生成并希望针对观察到的事件进行测试的数据如下所示:

str(prediction_data)
'data.frame':   1019 obs. of  16 variables:
 $ x        : num  180574 180575 180576 180576 180576 ...
 $ y        : num  226954 226953 226951 226953 226955 ...
 $ v1    : num  0.1131 0.5996 0.7187 0.5885 0.0611 ...
 $ v2   : num  10 110 19 99 97 71 64 45 54 74 ...
 $ v3 : int  1 1 1 1 1 1 1 1 2 1 ...
 $ occurrence_prob   : num  0.3252 0.1826 0.0909 0.1014 0.4195 ...

现在我怀疑的是,考虑不平衡的训练数据是否有意义,并试图通过使用参数来提高预测的灵敏度。在模型构建函数中sampsize=(c(71,71)) or classwt = c(0.5, 0.5),最后我还想设置一个概率阈值,通过分析接收者操作曲线来对物种存在进行分类?!

这会改善模型的灵敏度,是多余的还是会让事情变得更糟?

我真的很感激任何想法,建议,意见,提示。不幸的是,我不认识任何人,我可以亲自讨论我的疑惑。谢谢!

0 个答案:

没有答案