我有一个包含 3500 个观察值的数据集,其中包含 70 个特征,每个特征都带有用于分类目的的二进制标签/目标。
我的目标是获得超过 90% 的准确率和最高的召回率。
我已经测试了很多算法,到目前为止随机森林表现最好。
具体来说,我得到了 70 个功能:
- 奥罗克:0.71
- 精度:0.94
- 召回:0.18
feature_importances_但是,我通过调用ofRandomForestClassifier的内置函数以及在模块中SkLearn使用 Boruta 算法来了解我的功能的重要性。boruta_py
我删除了 20 个最不重要的功能。数字 20 是相当随意的,因为即使是接下来的 10 个最不重要的特征在重要性方面也相对接近于这 20 个最不重要的特征。只有前 10 个最重要的特征与其他特征相比在重要性上有显着差异。
然后具有 50 个特征的结果如下:
- 奥罗克:0.7
- 精度:0.91
- 召回:0.17
既然我可以用更少的功能获得几乎相同的结果,我应该删除这些功能吗?
还请考虑到将来我的数据集将扩展到 5000 个观察值。