xgboost - 如何在 sklearn 的 HistGradientBoostingClassifier 中构造直方图以决定最佳分割点
问题描述
lightgbm 和 sklearn 的 HistGradientBoostingClassifier 估计器都使用直方图来决定连续特征的最佳分割。
是否可以直观地(或通过一些示例)解释直方图创建的过程以及它如何帮助在节点处确定更快的分割点。
我在互联网上广泛寻找答案,但找不到任何简单或直观的方法来构造直方图。
解决方案
我不确定,但这可能与 XGBoost 中(独特的)回归树的构造方式有关。对于连续特征,您构建一个直方图,决定拆分(例如重量 < 70kg),构建一个回归树并计算相似度得分以及增益。然而,当连续特征中的值的范围非常大时,尝试所有可能的分割值在计算上是非常昂贵的。在这种情况下,XGBoost 基本上通过使用分位数来进行拆分,这涉及将所有观察结果分成大小相等的集合。
我猜 sklearn 的 HistGradientBoostingClassifier 可能也涉及上述工具优化,以提供最佳分割。
推荐阅读
- firebase - 取消 Google 登录会导致 Flutter 出现异常
- ruby-on-rails - auth0 用户存储与自己的用户存储 - 它们如何协同工作?
- c# - Stream 意外结束,内容可能已被另一个组件读取
- javascript - 每次我想在自动完成搜索列表的末尾显示一个默认值,而不管搜索结果如何。任何人都可以帮助我吗?
- java - 使用 IntelliJ 配置 Tomcat 6
- r - broom::augment 太慢,面板混合模型
- python - 如何使用 scikit-learn 绘制多类的 roc 曲线?
- python - 根据列名将大型数据框拆分为多个数据框
- reactjs - 引发了跨域错误 target.name
- python - 在尝试创建 django-admin startproject 时:没有模块名称 django-admin