388 lines
17 KiB
Markdown
388 lines
17 KiB
Markdown
|
||
# 第十六章
|
||
|
||
抱歉刚才在对比时跳跃太快,我们现在把“集成学习”作为一个独立的宏观架构,彻底拆解清楚。
|
||
|
||
## 1. 什么是集成学习 (Ensemble Learning)?
|
||
|
||
如果说普通的机器学习算法(决策树、SVM、逻辑回归)是“单兵作战”**,那么集成学习就是**“军团作战”。
|
||
|
||
它的核心逻辑是:**构建多个“弱学习器”(Weak Learners),并通过某种结合策略,把它们组装成一个“强学习器”。**
|
||
|
||
### 集成学习的三大主流派系
|
||
|
||
根据基学习器之间“如何协同”,集成学习分为三大类:
|
||
|
||
|**派系**|**核心逻辑**|**形象比喻**|**代表算法**|
|
||
|---|---|---|---|
|
||
|**Bagging (并行)**|独立投票,减少波动|**民主选举**:每个人独立思考,最后少数服从多数。|随机森林 (Random Forest)|
|
||
|**Boosting (串行)**|步步为营,修正错误|**学霸养成**:针对错题反复练习,后一个模型专门补前一个的漏洞。|XGBoost, LightGBM, AdaBoost|
|
||
|**Stacking (层级)**|跨界融合,二次建模|**专家会诊**:由不同领域的专家先出方案,再由一个主治医生总结。|堆叠泛化 (Stacking)|
|
||
|
||
---
|
||
|
||
## 2. 集成学习的三个关键动作
|
||
|
||
要理解集成学习,只需要看它怎么处理这三个环节:
|
||
|
||
1. **怎么选样本?**
|
||
|
||
- Bagging 用 **Bootstrap**(有放回抽样),让每棵树看的数据都不完全一样。
|
||
|
||
- Boosting 根据上一步的**错误率**来调整样本权重,让模型死磕“难点”。
|
||
|
||
2. **怎么选算法?**
|
||
|
||
- 通常使用同一种算法作为基底(比如全是决策树),但 Stacking 可以混搭(树模型+线性模型+神经网络)。
|
||
|
||
3. **怎么做决策?**
|
||
|
||
- 分类问题:投票(Voting)。
|
||
|
||
- 回归问题:加权平均(Averaging)。
|
||
|
||
|
||
---
|
||
|
||
## 3. 具体应用领域案例
|
||
|
||
集成学习(尤其是森林类和提升类算法)是目前工业界解决**结构化数据**(类似 Excel 表格数据)最强大的武器。
|
||
|
||
### A. 金融领域:信用卡欺诈检测与风控
|
||
|
||
- **痛点**:欺诈交易极少(样本极度不平衡),且手段多变。
|
||
|
||
- **应用**:银行使用 **XGBoost 或 随机森林**。随机森林通过“特征随机”捕捉微弱的异常信号;Boosting 通过迭代,专门学习那些被漏掉的隐蔽欺诈案例。
|
||
|
||
- **效果**:比单一逻辑回归模型大幅降低误报率。
|
||
|
||
|
||
### B. 医疗领域:疾病诊断与存活预测
|
||
|
||
- **应用**:基于患者的生化指标、年龄、病史预测患癌风险。
|
||
|
||
- **细节**:由于医疗数据往往存在缺失值(有些检查没做),集成学习(尤其是具有处理缺失值能力的随机森林)能非常稳健地给出预测,并给出**特征重要性评分**(例如:发现“肿瘤直径”是判断生存率的第一关键词)。
|
||
|
||
|
||
### C. 零售/电商:销量预测与库存规划
|
||
|
||
- **应用**:预测下周某种商品的销量。
|
||
|
||
- **细节**:销量受天气、节假日、促销活动、价格等百余个维度影响。**LightGBM** 这种集成学习算法能够高效处理这些高维特征,通过多个弱回归树的叠加,拟合出复杂的市场波动曲线。
|
||
|
||
|
||
### D. 互联网安全:反垃圾邮件
|
||
|
||
- **应用**:判断邮件是否为垃圾邮件。
|
||
|
||
- **逻辑**:**AdaBoost** 曾经在这个领域非常流行。它先识别出明显的垃圾邮件关键词,然后通过迭代,不断强化对那些伪装成正常邮件的“聪明垃圾邮件”的识别能力。
|
||
|
||
|
||
---
|
||
|
||
## 4. 为什么它和正则化联系紧密?(回归到你的上一个问题)
|
||
|
||
在这些应用中,我们最怕模型“钻牛角尖”(过拟合)。
|
||
|
||
- **在 Lasso/岭回归里**,我们通过**限制系数大小**来防止钻牛角尖。
|
||
|
||
- **在集成学习里**,我们通过“人多口杂”**(Bagging 的多样性)或者**“每次只学一小点”(Boosting 的学习率/收缩率)来防止钻牛角尖。
|
||
|
||
|
||
**一句话总结:**
|
||
|
||
集成学习是一种“工程化”的正则化。它不直接在数学公式上加惩罚,而是通过**改变数据的输入结构**和**组合模型的结果**,在宏观上达到了和 Lasso/岭回归一样的效果——让模型变得更稳健,更不容易在未知数据上翻车。
|
||
|
||
这是一个非常深刻的问题。你敏锐地察觉到了机器学习中两个看似不相关的领域——**集成学习(Ensemble)**与**收缩估计(Regularization/Shrinkage)**——在底层逻辑上的交汇。
|
||
|
||
简单来说:**集成学习通过“堆人头”来控制模型,正则化通过“加枷锁”来控制模型。** 但在数学边界上,它们殊途同归。
|
||
|
||
---
|
||
|
||
## 1. 集成学习的两种“收缩”路径
|
||
|
||
集成学习的核心目标是平衡 **偏差 (Bias)** 和 **方差 (Variance)**。
|
||
|
||
- **Bagging (随机森林)**:通过对多个高方差模型取平均,直接**抵消方差**。这在数学上等同于一种隐式的正则化(通过采样和平均来平滑预测)。
|
||
|
||
- **Boosting (GBDT/XGBoost)**:通过每一步的一小步前进(学习率 $\eta$),慢慢逼近目标。这种“慢走”其实就是一种**隐式正则化**。
|
||
|
||
|
||
---
|
||
|
||
## 2. 正则化(Lasso, Ridge):显式的惩罚
|
||
|
||
正则化是在损失函数后面加一个“惩罚项”,强制让系数 $\beta$ 变小。
|
||
|
||
- **岭回归 (Ridge)**:加上 $L_2$ 范数 $\lambda \sum \beta^2$。它让系数均匀地变小,但不为 0。
|
||
|
||
- **Lasso**:加上 $L_1$ 范数 $\lambda \sum |\beta|$。它能实现特征选择,让不重要的系数直接变成 0。
|
||
|
||
|
||
---
|
||
|
||
## 3. 核心联系:Boosting 与 最小角回归 (LARS)
|
||
|
||
这是理解两者联系的“圣杯”。有一个著名的结论:**Boosting(特别是步长极小的梯度提升)与 Lasso、LARS 在路径上具有高度的等价性。**
|
||
|
||
### A. 最小角回归 (LARS) 的逻辑
|
||
|
||
LARS 是 Lasso 的一种高效算法。它的做法是:
|
||
|
||
1. 寻找与残差相关性最大的特征。
|
||
|
||
2. 沿着这个特征的方向移动,**直到另一个特征与残差的相关性变得一样大**。
|
||
|
||
3. 然后沿着这两个特征的角平分线方向继续移动。
|
||
|
||
|
||
### B. 为什么它们是一致的?
|
||
|
||
当我们使用 **$L_2$ Boosting**(即每一步都去拟合残差的提升法)且学习率 $\eta \to 0$(无穷小)时:
|
||
|
||
- **Boosting** 的每一步都在找当前最能解释残差的特征(决策树的某个分裂点),并更新一点点。
|
||
|
||
- **Lasso (LARS)** 也是在找最能解释残差的特征,并更新其系数。
|
||
|
||
|
||
**数学上的相似性:**
|
||
|
||
在极小步长下,Boosting 产生的系数变化路径(Coefficient Path)与 Lasso 随着惩罚参数 $\lambda$ 减小而产生的系数路径轨迹几乎完全重合。
|
||
|
||
---
|
||
|
||
## 4. 从公式上解释:为什么相似甚至一致?
|
||
|
||
我们来看 **Gradient Boosting** 的更新公式和 **Lasso** 的目标函数。
|
||
|
||
### 1. Boosting 的参数更新(向量化表达):
|
||
|
||
假设我们用线性模型作为基学习器,第 $m$ 步的预测为:
|
||
|
||
$$F_m = F_{m-1} + \eta \cdot x_j$$
|
||
|
||
其中 $x_j$ 是与当前残差 $r$ 相关性最大的特征。对应的系数 $\beta$ 的更新:
|
||
|
||
$$\beta^{new}_j = \beta^{old}_j + \eta \cdot \text{sign}(\langle r, x_j \rangle)$$
|
||
|
||
这被称为 **Forward Stagewise Additive Modeling (前向分布加性模型)**。
|
||
|
||
### 2. Lasso 的坐标下降法更新:
|
||
|
||
Lasso 的目标是最小化:
|
||
|
||
$$\min_{\beta} \|y - X\beta\|^2 + \lambda \|\beta\|_1$$
|
||
|
||
在优化过程中,如果我们对某个系数 $\beta_j$ 进行更新,它在非零处的更新方向也是由残差 $y-X\beta$ 与特征 $x_j$ 的相关性决定的。
|
||
|
||
### 3. 一致性的关键点:
|
||
|
||
- **约束的作用**:Lasso 通过 $\|\beta\|_1 \le s$ 限制了系数的总长度。
|
||
|
||
- **步长的作用**:Boosting 通过“迭代次数 $M \times$ 学习率 $\eta$”限制了系数的总长度。
|
||
|
||
|
||
**结论:**
|
||
|
||
**迭代次数 $M$** 在 Boosting 中起到了和 **$1/\lambda$** 在 Lasso 中完全一样的作用。
|
||
|
||
- 如果 $M$ 很大(或者 $\lambda$ 很小),模型就会变得复杂,容易过拟合。
|
||
|
||
- 如果 $M$ 很小(或者 $\lambda$ 很大),模型就会受到高度约束,系数趋于 0。
|
||
|
||
|
||
---
|
||
|
||
## 5. 总结联系
|
||
|
||
|**概念**|**手段**|**目的**|**对应关系**|
|
||
|---|---|---|---|
|
||
|**正则化 (Lasso/Ridge)**|在 Loss 中加入系数惩罚|限制系数增长,防止过拟合|显式限制空间体积|
|
||
|**集成学习 (RF/Bagging)**|随机采样 + 平均|降低方差,平滑决策边界|隐式平滑 (Smoothing)|
|
||
|**集成学习 (Boosting)**|极小步长迭代 (Shrinkage)|慢慢逼近最优解|等价于 Lasso 的路径优化|
|
||
|
||
**深度洞察:**
|
||
|
||
你提到的**最小角回归 (LARS)** 实际上是连接两者的桥梁。它证明了:**贪婪的步进式集成(Boosting)本质上就是在有约束的特征空间里进行最优路径搜索。**
|
||
|
||
所以,随机森林通过“随机丢弃”来限制模型,而 Lasso 通过“罚款”来限制模型。它们都是在防止模型因为“太聪明”而记住了训练集里的杂质。
|
||
|
||
---
|
||
|
||
这是一个非常深入的本质问题。如果把机器学习比作一场“装修”,基函数(Base Functions)**就是原材料(如木板、水泥),而**集成学习(Ensemble Learning)就是施工方案(如拼地板、砌墙)。
|
||
|
||
在现代统计学习理论中,集成学习本质上是一种**基于基函数的加性模型迭代过程**。
|
||
|
||
---
|
||
|
||
## 1. 数学本质:加性模型 (Additive Models)
|
||
|
||
集成学习的核心公式其实就是一个**基函数的线性组合**:
|
||
|
||
$$F(x) = \sum_{m=1}^{M} \beta_m b(x; \gamma_m)$$
|
||
|
||
这个公式揭示了二者的血缘关系:
|
||
|
||
- **$b(x; \gamma_m)$**:这就是**基函数**(或称基学习器)。在随机森林或 GBDT 中,它通常是一棵决策树;在神经网络中,它是一个神经元(激活函数)。
|
||
|
||
- **$\gamma_m$**:基函数的参数(比如决策树在哪一层分裂、分裂点是多少)。
|
||
|
||
- **$\beta_m$**:权重(每个基函数在最终决定中占的分量)。
|
||
|
||
- **$F(x)$**:集成后的最终模型。
|
||
|
||
|
||
---
|
||
|
||
## 2. 基函数在不同集成策略中的角色
|
||
|
||
### A. 在 Boosting 中:基函数是“基石”
|
||
|
||
Boosting(如 GBDT)是一个**前向分布算法**。它每一次只增加一个基函数,目标是最小化当前的损失函数。
|
||
|
||
> **逻辑:**
|
||
>
|
||
> 第一步:$f_1(x) = b(x; \gamma_1)$
|
||
>
|
||
> 第二步:$f_2(x) = f_1(x) + \beta_2 b(x; \gamma_2)$
|
||
>
|
||
> ...
|
||
>
|
||
> 这里,每一个新的基函数 $b$ 都在尝试去拟合当前模型与真实值之间的“空隙”。
|
||
|
||
### B. 在 Bagging 中:基函数是“样本投影”
|
||
|
||
在随机森林里,每一个基函数(决策树)都是对特征空间的一种**局部切分**。
|
||
|
||
> **逻辑:**
|
||
>
|
||
> 所有的基函数是并行生成的。每一个基函数独立地对空间进行“分段常数拟合”。当你把几百个这样的分段函数平均起来时,最终得到的 $F(x)$ 就不再是生硬的阶梯,而是一个极其复杂的拟合曲面。
|
||
|
||
---
|
||
|
||
## 3. 集成学习 vs. 传统基函数(如傅里叶、多项式)
|
||
|
||
这是理解“现代集成学习”强大之处的关键:
|
||
|
||
1. **传统基函数(固定基函数)**:
|
||
|
||
在多项式回归或傅里叶变换中,基函数(如 $x^2, \sin(x)$)是**预先定义好**的。模型只负责学习权重 $\beta$。
|
||
|
||
2. **集成学习(自适应基函数)**:
|
||
|
||
基函数 $b(x; \gamma_m)$ 是从数据中**学习出来**的。
|
||
|
||
- 在随机森林里,决策树会根据数据分布自动决定在哪里分段。
|
||
|
||
- 这意味着基函数不再是死板的曲线,而是“看菜吃饭”的动态门控函数。
|
||
|
||
|
||
---
|
||
|
||
## 4. 联系总结:从基函数到正则化的闭环
|
||
|
||
为什么要强调基函数?因为这直接联系到了你之前问的 **Lasso 和正则化**:
|
||
|
||
- **过完备基函数**:如果集成学习中基函数(树)的数量 $M$ 太多,或者树长得太深,基函数的表达能力就会过剩(过完备),导致模型过拟合。
|
||
|
||
- **正则化的介入**:
|
||
|
||
- **L1/L2 正则**:在 XGBoost 等算法中,会直接在目标函数里限制基函数(树)的复杂度(如叶子节点数量)。
|
||
|
||
- **Shrinkage(收缩)**:通过给每个基函数乘一个很小的步长 $\eta$,防止单个基函数对模型贡献过大。这在本质上和 **Lasso/岭回归** 限制系数 $\beta$ 的道理是一模一样的。
|
||
|
||
|
||
---
|
||
|
||
## 5. 形象总结
|
||
|
||
- **基函数**:是模型的“零件”。它可以是一条直线、一个阶梯(决策树)或一个 S 型曲线(Sigmoid)。
|
||
|
||
- **集成学习**:是“组装工艺”。它研究的是如何通过组合成千上万个简单的零件,去精确拟合一个极其复杂的现实世界。
|
||
|
||
|
||
**随机森林和提升树之所以厉害,是因为它们不像线性回归那样死守着几个固定的“零件”,而是通过数据驱动,自己造出了成千上万个最适合当前任务的“特制基函数”。**
|
||
|
||
|
||
|
||
---
|
||
|
||
“规则集成”(Rule Ensemble)是集成学习中一个非常硬核且优雅的分支。如果你理解了**决策树是“自动门控分段函数”**,那么规则集成就是把这些门控逻辑**拆散、重组、并进行精简化**的过程。
|
||
|
||
简单来说:**规则集成是将决策树转化为一组“如果...那么...” (IF-THEN) 的规则集合,并通过正则化手段(如 Lasso)筛选出最有效的规则来构建模型。**
|
||
|
||
---
|
||
|
||
## 1. 规则集成的核心逻辑
|
||
|
||
传统的随机森林或 GBDT 输出的是一堆“树”,虽然准,但很难看懂。规则集成(代表算法如 **RuleFit**)走了一条不同的路:
|
||
|
||
1. **生成规则(挖掘)**:
|
||
|
||
先跑一个森林(比如随机森林)。每一棵树从根节点到叶子节点的每一条路径,都可以看作一条**规则**。
|
||
|
||
> _例子:如果(年龄 > 30)且(年收入 > 10万)且(有房),那么(信用极好)。_
|
||
|
||
2. **提取特征(转化)**:
|
||
|
||
把这些路径全部拆出来,每一条规则都变成一个新的“二进制特征”(满足规则为 1,不满足为 0)。
|
||
|
||
3. **线性组合与筛选(集成)**:
|
||
|
||
将这些成千上万条规则作为输入,丢进一个带有 **Lasso(L1 正则化)** 的线性模型里。
|
||
|
||
|
||
---
|
||
|
||
## 2. 为什么它和 Lasso 联系如此紧密?
|
||
|
||
这正好回应了你之前问的 Lasso 与集成的关系。规则集成的数学表达式通常如下:
|
||
|
||
$$F(x) = \hat{a}_0 + \sum_{j=1}^p \hat{a}_j x_j + \sum_{k=1}^K \hat{w}_k r_k(x)$$
|
||
|
||
- $x_j$ 是原始特征(线性部分)。
|
||
|
||
- $r_k(x)$ 是提取出来的**规则基函数**(非线性部分)。
|
||
|
||
- **Lasso 的作用**:因为从森林里拆出来的规则可能有几万条,绝大多数是冗余或无效的。Lasso 会把那些没用的规则权重 $\hat{w}_k$ 直接削减为 0。
|
||
|
||
|
||
**最终结果:** 你得到的是一个极其精简的、只有几十条核心规则的集合。它既有森林的准确度,又有类似线性回归的可解释性。
|
||
|
||
---
|
||
|
||
## 3. 规则集成 vs. 随机森林
|
||
|
||
|**维度**|**随机森林 (Random Forest)**|**规则集成 (RuleFit)**|
|
||
|---|---|---|
|
||
|**存在形式**|成百上千棵完整的树|一组 IF-THEN 规则的线性加权|
|
||
|**解释性**|较低(黑盒)|极高(可以直接读出规则)|
|
||
|**数学本质**|基于样本平均的 Bagging|**基于基函数筛选的加性模型**|
|
||
|**与正则化关系**|隐式正则化(随机性)|**显式正则化(靠 Lasso 选规则)**|
|
||
|
||
---
|
||
|
||
## 4. 为什么要用规则集成?(应用领域)
|
||
|
||
规则集成在需要“绝对透明”**且**“非线性建模”的领域非常受欢迎:
|
||
|
||
- **医疗临床指南**:医生不需要一个给概率的黑盒,他们需要确定的规则。例如:“若患者血压 > 140 且 胆固醇 > 5,则风险等级 A”。规则集成能从海量数据中自动提取出这种简洁的逻辑。
|
||
|
||
- **信贷审批策略**:银行需要向监管机构解释为什么要拒绝某个客户。规则集成生成的每一条规则都是法律合规的解释理由。
|
||
|
||
- **工业故障诊断**:技术人员需要知道具体是哪几个传感器的组合触发了报警,而不是一个抽象的预测分。
|
||
|
||
|
||
---
|
||
|
||
## 5. 总结:基函数视角下的规则集成
|
||
|
||
在基函数的视角下,规则集成是一种极其聪明的手段:
|
||
|
||
它利用**集成学习(树)**作为“特征生成器”来寻找复杂的非线性**基函数**(规则),然后利用正则化(Lasso)作为“过滤器”来保证模型的稀疏性和简洁性。
|
||
|
||
这完美地统一了你提到的所有概念:**它用森林生产基函数,用 Lasso 进行集成,最后还原回分段函数的本质。**
|
||
|
||
既然我们聊到了规则的精简,你觉得在实际业务场景中,一个模型的“可解释性”和“绝对精度”哪一个更让你感到安心?
|
||
|
||
--- |