我正在使用sklearn的随机森林模块根据166个特征预测二进制目标变量。 当我将尺寸数增加到175时,模型的精度降低(从精度= 0.86到0.81,从召回率= 0.37到0.32)。
我希望有更多的数据只能使模型更准确,尤其是当所添加的功能具有商业价值时。
我在python中使用sklearn构建了模型。 为什么新功能没有获得权重0并保持原样的准确性?
答案 0 :(得分:0)
更多数据并不总是使模型更准确。随机森林是一种传统的机器学习方法,程序员必须进行特征选择。如果给模型提供了很多数据,但它是坏数据,那么该模型也将尝试从这些坏数据中弄清楚,并最终使事情变得混乱。对于神经网络来说,更多的数据会更好,因为这些网络会从数据中自行选择最佳的特征。
另外,175个特征太多了,您绝对应该研究降维技术,并选择与目标高度相关的特征。 sklearn中有几种方法可以做到这一点。如果您的数据为数字或RFE,则可以尝试PCA来删除不良功能等。
答案 1 :(得分:0)
基本上,您可能会将模型与无用的功能“混淆”。更多功能或更多数据将永远不会使您的模型更好。新功能也不会获得零权重,因为模型将努力使用它们!由于数量太多(175!),RF不能以更高的精度和召回率返回到以前的“原始”模型(也许这9个功能实际上并没有增加任何有用的功能)。
考虑决策树的本质工作原理。这些新功能将导致一些新的分裂,从而使结果恶化。尝试从基础上解决问题,并慢慢添加新信息,以始终检查性能。另外,请注意例如每个分割(mtry)使用的功能数量。对于这么多的功能,您将需要非常高的mtry(以便在每次拆分时考虑一个大样本)。您是否考虑过再增加1或2并检查精度如何响应?另外,别忘了mtry!