我是 ML/DS 领域的新手。我开始了一个项目,我需要预测用户的年龄。我想建立两个模型,一个预测年龄组(我创建了 6 个年龄组),另一个明确预测年龄(作为数字)。我清理了数据,并做了可能的输入变量和目标变量之间的相关性。
我感到困惑的是:与数据集相比,有多少变量太少了,又有多少变量太多了?
有人建议“越多越好”,但我也知道过多的特征会导致过度拟合......
有经验法则吗?例如:“如果我有一个 500k 的数据集,那么有 50 个变量是合理的......”或者这真的取决于具体情况,一旦完成,我应该找出模型的变量重要性?
如果有什么需要澄清的,请告诉我,我真的很想有人可以帮助我了解他们的经验和/或指导我阅读涉及该主题的文章/论文。
行数与变量数
据我所知,没有严格的研究可以给你答案。
也因为模型的鲁棒性取决于它处理过拟合的能力:没有任何正则化的神经网络将比正则化的神经网络的鲁棒性要低得多。对于贝叶斯神经网络,两者都将不那么健壮。
因此,贝叶斯将需要数据集中的样本少得多,以便在非正则化神经网络中给出可靠的结果。
鲁棒性还取决于构建模型的参数数量:具有 5000 万个参数的神经网络需要更多数据,而只有 100 万个参数。
因此,选择要保留多少特征的更好方法是检查您是否能够构建可靠的模型:开始使用所有特征训练您的模型;如果模型在控制过拟合的情况下为您提供了良好的性能,那么您可以接受。否则,您将开始修剪功能。
不同模型有一般的经验法则,包括所需的样本数量和特征数量。我会试着在事情上放一些具体的数字,但需要注意的是确实是针对特定问题的,你通常必须做出妥协。
如果您正在查看诸如具有 5 个特征的简单线性回归之类的东西,那么要使基本测试被认为具有统计相关性,您至少需要 40 个样本。
在您有 500,000 个样本的情况下,50 个特征绝对是可以接受的——您甚至可以拥有更多。但是,有两件事我会警惕:
首先,你让你的模型很难,因为许多特征实际上是在描述同一件事。技术术语是多重共线性,如果你的数据有它,这意味着你的特征本身是高度(线性)相关的。模型很难知道要依赖哪个特征,并且您的结果可以通过简单地删除一个来改善。一个简单的例子:如果我根据你的身高预测你的鞋码,我有两个特征:你的身高(英寸)和你的身高(厘米),你可以看到我只需要其中一个,因为它们是完全相关的度量。
其次,理论上越多越好,只要您有一个能够决定何时包含特征以及何时忽略它们的模型 - 并且您的数据足以促进这一点。有像奥卡姆剃刀这样的想法,说应该选择一个简单的模型而不是一个具有相同性能的复杂模型;即您还应该考虑可解释性。定义了量化这一点的措施,例如Akaike 信息标准。它是一个模型选择工具 - 因此您可以使用 10、20、30 和 50 个特征来拟合模型,比较此标准的结果并选择得分最高的模型。这是一个涉及该主题的最近的问题。
有一些函数会根据与数据集中其他特征的相关阈值来删除特征。对于 R,在 Caret 包中对此进行了很好的解释,但是在 Python 中可以相当容易地完成相同的事情(不确定是否有标准实现)。 [编辑] - Python 等价物看起来是VarianceThreshold类。