[机器学习]GBDT高阶特征组合

GBDT(Gradient Boosting Decision Tree)通过树的路径分裂规则 生成高阶特征组合,这些组合本质上是从根节点到叶子节点的路径上多个特征的分裂条件的联合作用。具体来说,高阶特征组合的生成发生在以下两个核心环节:


1. 单棵决策树的路径分裂过程

每一棵决策树通过递归分裂特征,生成树的分支路径。一条路径上的分裂条件隐式地组合了多个特征。例如:

  • 假设一棵树的路径规则为:
    特征A > 10 → 特征B < 5 → 特征C ∈ {类别X}
    这条路径等价于一个三阶特征组合(A > 10) & (B < 5) & (C = X)
  • 树的深度决定了组合阶数:树深为 kk 时,路径上的分裂条件最多可形成 kk 阶特征组合。

示例:广告点击率预测

原始特征:用户年龄商品价格点击历史

一棵树的分裂路径可能为:
用户年龄 > 25 → 商品价格 < 100 → 点击历史 ≥ 3次

该路径对应组合特征:(年龄>25且价格<100且点击≥3次)


2. 多棵树的集成(Boosting)

GBDT通过多棵树的集成,进一步显式增强高阶组合的覆盖能力

  • 每棵树关注不同残差:后一棵树拟合前一棵树的预测残差,迫使模型学习未被充分捕捉的特征组合。

  • 全局组合的叠加:不同树的分裂路径可能覆盖不同维度或不同阶数的组合。例如:

    • 树1捕捉 (A & B)
    • 树2捕捉 (B & C)
    • 树3捕捉 (A & C & D)
    • 整体模型覆盖了更高阶的交互(如三阶组合)。

高阶特征组合的显式化:叶子节点编码

在GBDT与LR的组合模型中,每棵树的叶子节点会被编码为离散特征,输入到LR中:

  1. 特征转换过程

    • 每个样本经过GBDT的每棵树后,会落到一个叶子节点。

    • 将所有树的叶子节点编号转化为二值化特征向量(One-Hot编码),例如:

      • 树1有3个叶子,树2有5个叶子 → 总特征维度为8。
      • 若样本落在树1的叶子2和树2的叶子4,则特征向量为 [0,1,0,0,0,1,0,0]
  2. 叶子节点的物理意义

    • 每个叶子节点对应一条路径规则(即一个特征组合),因此特征向量本质上是所有高阶组合的联合表示

为什么这是"自动化特征工程"?

传统LR需要人工设计如 (A*B)、(B/C) 等交叉特征,而GBDT通过以下方式替代人工:

  1. 自动筛选有效组合:树的生成过程基于信息增益(如基尼系数、平方误差)选择分裂特征,天然过滤无效组合。
  2. 自适应组合阶数:树的深度控制组合复杂度(如树深=3时生成三阶组合)。
  3. 避免维度爆炸:通过特征重要性筛选,仅保留有效组合,避免人工笛卡尔积导致的高维稀疏问题。

与人工特征工程的对比

方法 特征组合生成方式 优势 缺点
人工设计 人工定义(如多项式展开、业务规则) 可解释性强,符合业务直觉 耗时,可能遗漏重要组合
GBDT自动生成 树的分裂路径隐式编码组合 自动化,覆盖更全面的交互关系 可解释性较弱(需依赖特征重要性分析)

总结

  • 生成环节:高阶特征组合在单棵树的路径分裂过程中隐式生成,并通过多棵树集成显式增强。
  • 显式化方法:通过叶子节点的二值化编码,将路径规则转化为离散特征输入LR。
  • 核心优势:省去人工设计成本,自适应捕捉数据中复杂的非线性关系与特征交互。

这种设计使得GBDT+LR既能处理高维稀疏特征(LR的优势),又能自动挖掘高阶组合(GBDT的优势),成为处理CTR预估等复杂场景的经典方案。

相关推荐
呵呵哒( ̄▽ ̄)"11 分钟前
React - 编写选择礼物组件
前端·javascript·react.js
Coding的叶子16 分钟前
React Flow 简介:构建交互式流程图的最佳工具
前端·react.js·流程图·fgai·react agent
apcipot_rain5 小时前
【应用密码学】实验五 公钥密码2——ECC
前端·数据库·python
ShallowLin5 小时前
vue3学习——组合式 API:生命周期钩子
前端·javascript·vue.js
Nejosi_念旧6 小时前
Vue API 、element-plus自动导入插件
前端·javascript·vue.js
互联网搬砖老肖6 小时前
Web 架构之攻击应急方案
前端·架构
pixle06 小时前
Vue3 Echarts 3D饼图(3D环形图)实现讲解附带源码
前端·3d·echarts
麻芝汤圆7 小时前
MapReduce 入门实战:WordCount 程序
大数据·前端·javascript·ajax·spark·mapreduce
juruiyuan1119 小时前
FFmpeg3.4 libavcodec协议框架增加新的decode协议
前端
Peter 谭9 小时前
React Hooks 实现原理深度解析:从基础到源码级理解
前端·javascript·react.js·前端框架·ecmascript