RuleFit
知识点概述
RuleFit算法由Friedman和Popescu (2008)提出,它巧妙地结合了决策规则和线性模型,旨在创建一个既能自动捕捉特征交互、又能保持良好可解释性的预测模型。其核心思想是先从数据中生成大量的决策规则,然后将这些规则作为新的特征,与原始特征一起放入一个稀疏线性模型(Lasso)中进行训练。
教材原文
Friedman 和 Popescu (2008)[21] 的 RuleFit 算法学习了稀疏线性模型,该模型包括以决策规则形式自动检测到的交互作用。 … RuleFit学习具有原始特征以及许多新特征(决策规则)的稀疏线性模型。这些新特征捕获了原始特征之间的交互。RuleFit从决策树自动生成这些特征。
详细解释
RuleFit算法的流程分为两个主要步骤:
步骤1:规则生成 (Rule Generation)
- 目标: 自动地从数据中生成大量有预测价值的决策规则。
- 方法:
- 训练树集成模型: 使用梯度提升机(Gradient Boosting)或随机森林(Random Forest)等集成算法,在原始数据上训练大量的决策树。这些树被训练来预测最终的目标,因此它们的分割点和结构都与预测任务相关。
- 提取规则: 将这些决策树“分解”成规则。树中的每一条从根节点到任意节点的路径都可以被转换成一条IF-THEN规则。例如,一条路径“温度 < 15°C AND 天气 = 晴天”就构成了一条规则。
- 结果: 这一步的产出是一个巨大的“规则池”,其中每条规则都可以被看作是一个新的二进制特征(如果实例满足规则条件,则该特征值为1,否则为0)。这些规则能够捕捉到原始特征之间的高阶、非线性交互作用。
步骤2:稀疏线性模型 (Sparse Linear Model)
- 目标: 从大量的原始特征和生成的规则特征中,筛选出最重要的特征,并为它们学习一个最终的线性模型。
- 方法: 使用Lasso回归。
- 过程:
- 构建新特征矩阵: 将原始特征(通常会进行一些winsorizing等预处理)和上一步生成的所有规则特征合并在一起,形成一个新的、非常宽的特征矩阵。
- 训练Lasso模型: 在这个新的特征矩阵上训练一个Lasso模型。Lasso的L1正则化惩罚项会自动地进行特征选择,将许多不重要的特征(无论是原始特征还是规则特征)的权重压缩到零,只留下一个稀疏的、最重要的特征子集。
- 最终模型:
- 是第k条规则特征。
- 是第j个原始特征。
- 和 是Lasso学到的权重。
解释与优点
- 解释性: 最终模型是一个线性模型,其解释方法与标准线性模型类似。我们可以直接查看每个原始特征和每条规则的权重,来理解它们对预测的贡献。
- 自动特征交互: RuleFit最大的优点是它能自动发现并建模特征之间的交互作用,而无需用户手动指定。这解决了传统线性模型无法处理交互的问题。
- 非线性: 通过决策规则,RuleFit也能够捕捉特征与目标之间的非线性关系。
- 特征重要性: RuleFit提供了一种统一的方式来计算原始特征和规则的重要性,帮助我们理解模型的全局行为。
缺点
- 规则数量: RuleFit可能会生成成百上千条规则,即使Lasso筛选后,最终模型中仍可能包含数十个非零权重的特征,这会降低模型的可解释性。
- 权重解释的复杂性: 当规则之间存在重叠时(例如,一条规则是另一条规则的子集),解释它们的权重会变得困难,因为“其他所有特征保持不变”的前提被打破了。
- 性能: 尽管思想很吸引人,但在某些情况下,其预测性能可能不如随机森林或梯度提升机等纯粹的黑盒模型。
关联知识点
- 前置知识: 14-理论方法-线性回归, 22-理论方法-决策规则, 20-理论方法-决策树
- 相关知识: Lasso回归, 梯度提升机, 随机森林