TLDR
使用你所有的数据,扔一堆集成机器学习(可能只是随机森林),然后选择一个好的模型。通常,这非常有效。
您应该使用多少数据?
理想情况下,您应该始终将数据分为训练、测试和验证。由于数据集较小,这并不总是可行的,但防止过度拟合仍然很重要。您可以将所有训练和测试数据用于特征选择,并且不会给您的 ML 模型带来任何重大偏差。仅在您完全完成模型训练后,才应使用验证集来近似误差。
简单的机器学习解决方案:
对所有训练/测试数据使用某种随机森林或梯度提升模型。这些模型是为在高维数据中获得高性能而设计的,通过检查特征重要性/排列重要性/准确性的平均下降,您将知道哪些特征是/不重要的。在有数百万个特征和大约一千个响应的生物空间中使用这些模型是很常见的。尽管存在差异,但我在这些情况下仍然达到了很高的准确性。
简单的统计解决方案
测量每个特征的相关性,只保留那些具有绝对相关性高于/低于一定数量的特征。您可以使用一些统计测试来过滤掉不重要的特征。这里有一些例子:
- 皮尔逊相关
- F检验
- 方差
- 套索回归(技术上是一种 ML 算法)
上述的陷阱
以上每一个都使用某种假设来确定您应该为最终模型训练选择哪些特征。有时您实际上不需要选择功能的子集,即当您使用 RF 时。此外,统计测试经常会遗漏异常类型的相关性或遗漏多维关系。功能选择实际上是一个个案决定,没有人可以在不查看您使用的实际数据的情况下给您一个明确的答案。