我正在使用sklearn的随机森林模块根据166个特征来预测一个二元目标变量。当我将维度数量增加到175时,模型的准确性会降低(从精度= 0.86降至0.81,从召回率= 0.37降至0.32)。
我希望更多的数据只会让模型更准确,特别是当添加的功能具有商业价值时。
我使用python中的sklearn构建了这个模型。为什么新的功能没有得到权重0,而是让精度保持原样?
发布于 2019-05-09 23:16:25
基本上,你可能会用无用的特性“混淆”你的模型。更多的功能或更多的数据并不总是会让你的模型变得更好。新功能也不会得到权重为零,因为模型将努力使用它们!因为有这么多(175!),RF不能以更好的准确性和召回率返回到以前的“原始”模型(也许这9个功能真的没有添加任何有用的东西)。
想一想决策树实际上是如何工作的。这些新功能将导致一些新的分裂,这可能会使结果变得更糟。试着从基础开始,慢慢地添加新的信息,总是检查性能。此外,注意例如每个拆分使用的特征数量(mtry)。对于如此多的功能,您需要有一个非常高的mtry (以允许在每次拆分时考虑一个大样本)。您是否考虑过再添加1或2个,并检查准确性如何响应?另外,别忘了mtry!
发布于 2019-05-06 00:09:17
更多的数据并不总是使模型更准确。随机森林是一种传统的机器学习方法,程序员必须进行特征选择。如果给模型提供了大量数据,但它是坏的,那么模型也会试图从这些坏数据中找出意义,最终会把事情搞得一团糟。对于神经网络来说,数据越多越好,因为这些网络自己从数据中选择可能的最佳特征。
另外,175个特征太多了,你绝对应该研究降维技术,选择与目标高度相关的特征。在sklearn中有几种方法可以做到这一点。如果你的数据是数字的,你可以尝试PCA或RFE来删除不良特征,等等。
https://stackoverflow.com/questions/55990255
复制相似问题