我正在利用 Scikit-Learn 的随机森林库,我想知道是否可以更改特征权重,因此特定特征会产生更大的影响。我浏览了随机森林文档,但我只看到我不感兴趣的类的权重变化。
除了重写代码本身之外,还有其他方法可以做到这一点吗?任何建议将不胜感激。
据我所知,你不应该这样做,因为算法本身更擅长通过计算每个决策树的基尼不纯度来决定哪个特征更重要。如果你想改进模型,我建议尝试提升模型而不是装袋(随机森林)。 XGBoost、LightGBM、CatBoost 都是不错的选择,我个人喜欢使用 CatBoost,因为它是最新的 boosting 算法,并且提供了优越的结果。
将特征权重硬编码到模型中是绝对不行的。您想要做的是实现随机森林的加权版本,其中决策树通过选择概率与其基尼不纯度指数相对应的特征来迭代增长。
这里有几篇论文做了类似的事情 - [1] https://academic.oup.com/bioinformatics/article/24/18/2010/190849?login=true [2] https://www.pnas.org/doi/10.1073/pnas.1711236115
希望这有帮助。
尝试一些超参数技术,例如 sklearn.model_selection 中的 RandomizedSearchCV 和 GridSearchCV