RuleFit

知识点概述

RuleFit算法由Friedman和Popescu (2008)提出,它巧妙地结合了决策规则和线性模型,旨在创建一个既能自动捕捉特征交互、又能保持良好可解释性的预测模型。其核心思想是先从数据中生成大量的决策规则,然后将这些规则作为新的特征,与原始特征一起放入一个稀疏线性模型(Lasso)中进行训练。

教材原文

Friedman 和 Popescu (2008)[21] 的 RuleFit 算法学习了稀疏线性模型,该模型包括以决策规则形式自动检测到的交互作用。 … RuleFit学习具有原始特征以及许多新特征(决策规则)的稀疏线性模型。这些新特征捕获了原始特征之间的交互。RuleFit从决策树自动生成这些特征。

详细解释

RuleFit算法的流程分为两个主要步骤:

步骤1:规则生成 (Rule Generation)

  • 目标: 自动地从数据中生成大量有预测价值的决策规则。
  • 方法:
    1. 训练树集成模型: 使用梯度提升机(Gradient Boosting)或随机森林(Random Forest)等集成算法,在原始数据上训练大量的决策树。这些树被训练来预测最终的目标,因此它们的分割点和结构都与预测任务相关。
    2. 提取规则: 将这些决策树“分解”成规则。树中的每一条从根节点到任意节点的路径都可以被转换成一条IF-THEN规则。例如,一条路径“温度 < 15°C AND 天气 = 晴天”就构成了一条规则。
  • 结果: 这一步的产出是一个巨大的“规则池”,其中每条规则都可以被看作是一个新的二进制特征(如果实例满足规则条件,则该特征值为1,否则为0)。这些规则能够捕捉到原始特征之间的高阶、非线性交互作用。

步骤2:稀疏线性模型 (Sparse Linear Model)

  • 目标: 从大量的原始特征和生成的规则特征中,筛选出最重要的特征,并为它们学习一个最终的线性模型。
  • 方法: 使用Lasso回归
  • 过程:
    1. 构建新特征矩阵: 将原始特征(通常会进行一些winsorizing等预处理)和上一步生成的所有规则特征合并在一起,形成一个新的、非常宽的特征矩阵。
    2. 训练Lasso模型: 在这个新的特征矩阵上训练一个Lasso模型。Lasso的L1正则化惩罚项会自动地进行特征选择,将许多不重要的特征(无论是原始特征还是规则特征)的权重压缩到零,只留下一个稀疏的、最重要的特征子集。
  • 最终模型:
    • 是第k条规则特征。
    • 是第j个原始特征。
    • 是Lasso学到的权重。

解释与优点

  • 解释性: 最终模型是一个线性模型,其解释方法与标准线性模型类似。我们可以直接查看每个原始特征和每条规则的权重,来理解它们对预测的贡献。
  • 自动特征交互: RuleFit最大的优点是它能自动发现并建模特征之间的交互作用,而无需用户手动指定。这解决了传统线性模型无法处理交互的问题。
  • 非线性: 通过决策规则,RuleFit也能够捕捉特征与目标之间的非线性关系。
  • 特征重要性: RuleFit提供了一种统一的方式来计算原始特征和规则的重要性,帮助我们理解模型的全局行为。

缺点

  • 规则数量: RuleFit可能会生成成百上千条规则,即使Lasso筛选后,最终模型中仍可能包含数十个非零权重的特征,这会降低模型的可解释性。
  • 权重解释的复杂性: 当规则之间存在重叠时(例如,一条规则是另一条规则的子集),解释它们的权重会变得困难,因为“其他所有特征保持不变”的前提被打破了。
  • 性能: 尽管思想很吸引人,但在某些情况下,其预测性能可能不如随机森林或梯度提升机等纯粹的黑盒模型。

关联知识点