Boruta 是众所周知的狗慢而且不是很好。Boruta 运行需要数小时或数天。无论如何,VIF 特征选择算法并不客观。您可以编写自己的运行速度更快的功能选择。我在各种数据集上运行了几次 Boruta,它浪费了我 4 天的时间,结果没有定论。
这是一种快速而肮脏的非 100% 科学方法,它是从许多 Kaggle 比赛等的共识中挑选出来的。它比 Boruta 快 10-1000 倍,而且可能更准确。
- 运行一些快速探索树(RF/XGB),即不是很深,也不是太多的树。提取特征重要性。重复几个随机种子并查看平均或 absmax 特征重要性。
- 现在,丢弃非常高基数的特征(例如用户 ID、邮政编码等),因为树不会倾向于在它们上分裂,直到非常深和非常小的节点,所以最初排除它们。让我们将“非常高的基数”定义为每条记录 >= ~0.3 个不同的值,或者在更大的数据集中更少。
- 丢弃所有接近零的特征、零和非常低重要性的特征(< 0.02-0.05 fi 或更低是经验法则)。
- 测量哪些特征彼此高度相关(< 0.4)的矩阵。Corrplot 是一种很好的方式来可视化这些,并在彼此附近排列相关特征)。选择一个合理的色标。识别相关特征的子组。从这些组中任意选择一个特征(您可以稍后重新访问此选择)。或者您可以决定是否需要使用 PCA。
- 重新运行,你的 CV 准确率应该会提高很多,而且你的训练时间会更快(因为树训练是特征数量的二次方)。重新选择边缘低重要性或相关特征,并再次使用多个随机种子。
- 对于探索性,5 倍 CV 很好,但如果训练时间是一个问题,3 倍有效。10倍是不必要的。
- 对于剩余功能的子集,请使用“可敬”的方法。请参阅特征选择中CrossValidated上的优秀帖子。
拥有统计学博士学位的人可能会为此对我摇摆手指:)