穷举功能选择器运行三天是否正常?

数据挖掘 特征选择
2022-02-12 18:07:54

我正在尝试优化数据集中的特征以获得更好的预测模型。我使用了来自 mlxtend 的详尽特征选择器。这会检查所有可能的特征组合。我有一个包含 80 多个特征的数据集,我通过 10 倍交叉验证将要选择的最大特征设置为 20。有 9k 个条目,估计器是随机森林回归器。这已经运行了大约三天。这是正常的吗?以前我在同一个数据集上使用 10 折交叉验证运行递归特征消除。大约花了24小时。

efs = EFS(RandomForestRegressor(), 
      min_features=3,
      max_features=20,
      scoring='neg_mean_squared_error',
      cv=10)

     efs.fit(X, Y)
1个回答

穷举搜索意味着针对每个可能的特征子集运行 10 倍 CV。对于一组 80 个特征,大小为 20 的可能子集的数量为:

(8020)=3.5 1018

这仅适用于 20 码,因此总数更高。

所以是的,这可能需要长时间。您可以在运行可能非常长的实验之前估计持续时间,如下所示:

  • 首先取较低的最大特征数并计算相应的运行次数。例如,最大为 5 时,子集的数量大约为 2400 万(我让你计算确切的数字)。
  • 然后运行实验并测量持续时间。应用一个简单的比例,您可以估计任何最大数量的特征需要多少时间。您可能会发现您当前的实验需要很多年;)

在大集合上进行详尽的搜索很少是一个好主意,我建议看一下基因搜索。