全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1450 3
2023-02-15
  在R中使用randomForest包的randomForest函数训练出模型后,使用predict函数进行分类预测。  因为预测结果很差所以将训练集输入到模型中用predict函数预测看看结果,这时候出现了一个奇怪的现象:当第一次输入少量样本时,预测效果很差,且和模型中predicted的结果不同;但是第二次输入全部训练集时,第一次输入的那部分样本在这次分类中标签变正确了。
  问题是模型没变,样本也没变,两次唯一的区别就是预测的样本量变了(相当于在第一次样本的基础上又加了些样本),预测的标签会变化呢?
请问有人碰到过类似的问题吗,是怎么解决的呢,谢谢!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-2-18 16:38:16
所述情形,正常。
用训练集输出的模型,用测试集验证,不可能百分之百地准确,所以要用ROC对模型进行评估。
即使用原训练集的一部分,也会有准确率的问题。甚至使用原训练集,也会有预测不准的情形,只不过在您这里没有发生而已。

随机森林本质上是多个决策树的平均,每个决策树的每个分枝,都有变量选择的问题。最终输出的模型,其实不是“精确的”对应关系,而是很多次概率选择后的“妥协”结果,这就存在不是每个样本都适合模型的情形。
用模型预测,可以理解为用变量特征和关系返回去衡量本源,用“普遍适用”去验证“个体”,当然会发生个体不符合模型的问题。这不仅仅是随机森林算法的问题,而是所有机器学习算法的问题。

我们能做的,只是适度提高模型的外推能力,既不能过拟合,又不能欠拟合。
对于随机森林,样本量要足够,训练集和测试集合理划分,变量个数要足够多,选择合适的Mtry和ntree参数,有时还需要交叉验证。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-2-18 19:12:38
目前该情况已得到解决,问题出在我输入的训练集格式存在问题,其中的数据是以字符型输入的。
但是在随机森林的训练过程中却通过这些字符型数据生成了模型且并未报错,可能是将这些字符数据自动因子化了或者有一些其它的方式转化为了数字。而这也使得在后续输入训练数据预测时,因为预测样本量导致的标签变化,这需要根据源码来确定标签变化是如何产生的。
所以其实这是一个编程中常出现的问题,即你所看到的数据并不一定是你所想的数据,它的类型这些也是需要严格满足要求的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-2-18 19:14:22
llb_321 发表于 2023-2-18 16:38
所述情形,正常。
用训练集输出的模型,用测试集验证,不可能百分之百地准确,所以要用ROC对模型进行评估 ...
感谢您的回答和帮助,确实您说的这些是在随机森林乃至机器学习中都非常重要的基础知识,后面所提到的也是随机森林训练中非常实用的一些方法。不过这与我的问题其实并不出在这里,关于我遇到的情况及解决方案,我会在下方再详细描述下。但还是再次感谢您的帮助于付出。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群