添加功能确实会使模型更好吗?

Posted

技术标签:

【中文标题】添加功能确实会使模型更好吗?【英文标题】:Does add feature certainly making the model better? 【发布时间】:2015-05-13 01:01:57 【问题描述】:

我已经训练了一个预测CTR的gbdt模型,最初我使用40个特征,然后我添加了一些特征,但是结果(auc)低于原来的。 1. 怎么会这样? 2. 如何判断哪个特征对模型好?

【问题讨论】:

添加更多功能将使您的模型更加复杂。更复杂的模型容易过拟合。你可能想用谷歌搜索的术语是feature selection。在这个领域有很多研究正在进行。您可能想搜索相关问题的统计信息:stats.stackexchange.com/questions/68692/… 【参考方案1】:

如果添加更多特征会降低性能,这可能是因为过度拟合。您的模型学习参数需要调整以避免过于复杂(过拟合)的模型。

在随机森林的情况下,树的深度就是这样一个参数。不应该让树长得太深,否则它们可能会过拟合(即使有很多树,这也可能发生在随机森林中)。

【讨论】:

如果我没记错的话,R 中的 randomForest 包有一些函数可以评估不同输入的相对重要性。也许 OP 可以使用它来选择输入变量的子集。【参考方案2】:

我同意添加更多特征会产生更差结果的最可能原因是过度拟合,而主要解决方案是特征选择。

现在,有不同的技术可以验证和衡量这种直觉。最好的工具之一是为给定训练和验证子集的模型生成学习曲线。

可以在this sklearn 库 (Python) 教程中看到一个很好的例子。另外,我强烈建议您查看 Andrew Ng 在 Coursera 的机器学习课程中的 lecture about Learning Curves。

【讨论】:

以上是关于添加功能确实会使模型更好吗?的主要内容,如果未能解决你的问题,请参考以下文章

怎么确实cnn全连接层的神经元数目

从OSI网络模型看西方文化,感叹文化的作用确实是无处不在

论文泛读168对训练数据进行重复数据消除会使语言模型变得更好

论文泛读168对训练数据进行重复数据消除会使语言模型变得更好

添加没有样式信息的类会导致重排吗?

OSI七层模型和TCP/IP四层模型