# 集成学习之Boosting —— Gradient Boosting原理

## 函数空间的的梯度下降

$\theta = \theta - \alpha \cdot \frac{\partial}{\partial \theta}L(\theta) \tag{1.1}$

Gradient Boosting 采用和AdaBoost同样的加法模型，在第m次迭代中，前m-1个基学习器都是固定的，即$f_m(x) = f_{m-1}(x) + \rho_m h_m(x) \tag{1.2}$

$f_m(x) = f_{m-1}(x) - \rho_m \cdot \frac{\partial}{\partial f_{m-1}(x)}L(y,f_{m-1}(x)) \tag{1.3}$

1. 初始化： $f_0(x) = \mathop{\arg\min}\limits_\gamma \sum\limits_{i=1}^N L(y_i, \gamma)$

2. for m=1 to M:

(a) 计算负梯度： $\tilde{y}_i = -\frac{\partial L(y_i,f_{m-1}(x_i))}{\partial f_{m-1}(x_i)}, \qquad i = 1,2 \cdots N$

(b) 通过最小化平方误差，用基学习器$h_m(x)$拟合$\tilde{y_i}$$w_m = \mathop{\arg\min}\limits_w \sum\limits_{i=1}^{N} \left[\tilde{y}_i - h_m(x_i\,;\,w) \right]^2$

(c) 使用line search确定步长$\rho_m$，以使$L$最小，$\rho_m = \mathop{\arg\min}\limits_{\rho} \sum\limits_{i=1}^{N} L(y_i,f_{m-1}(x_i) + \rho h_m(x_i\,;\,w_m))$

(d) $f_m(x) = f_{m-1}(x) + \rho_m h_m(x\,;\,w_m)$

3. 输出$f_M(x)$

## 回归提升树

$\left \{ R_{jm} \right\}_1^J = \mathop{\arg\min}\limits_{\left \{ R_{jm} \right\}_1^J}\sum\limits_{i=1}^N \left [\tilde{y}_i - h_m(x_i\,;\,\left \{R_{jm},b_{jm} \right\}_1^J) \right]^2$

$\gamma_{jm} = \mathop{\arg\min}\limits_\gamma \sum\limits_{x_i \in R_{jm}}L(y_i,f_{m-1}(x_i)+\gamma)$

## GBDT回归算法流程

1. 初始化： $f_0(x) = \mathop{\arg\min}\limits_\gamma \sum\limits_{i=1}^N L(y_i, \gamma)$

2. for m=1 to M:

(a) 计算负梯度： $\tilde{y}_i = -\frac{\partial L(y_i,f_{m-1}(x_i))}{\partial f_{m-1}(x_i)}, \qquad i = 1,2 \cdots N$

(b) $\left \{ R_{jm} \right\}_1^J = \mathop{\arg\min}\limits_{\left \{ R_{jm} \right\}_1^J}\sum\limits_{i=1}^N \left [\tilde{y}_i - h_m(x_i\,;\,\left \{R_{jm},b_{jm} \right\}_1^J) \right]^2$

(c) $\gamma_{jm} = \mathop{\arg\min}\limits_\gamma \sum\limits_{x_i \in R_{jm}}L(y_i,f_{m-1}(x_i)+\gamma)$

(d) $f_m(x) = f_{m-1}(x) + \sum\limits_{j=1}^J \gamma_{jm}I(x \in R_{jm})$

3. 输出$f_M(x)$

## 正则化 (Regularization)

### 1、Shrinkage

$f_m(x) = f_{m-1}(x) + \rho_m h_m(x\,;\,w_m)$

$f_m(x) = f_{m-1}(x) + \nu \rho_m h_m(x\,;\,w_m)$

### 4、Subsampling

subsampling的另一个好处是因为只使用一部分样本进行训练，所以能显著降低计算开销。

## Reference:

1. Friedman, J. Greedy Function Approximation: A Gradient Boosting Machine
2. Friedman, J. Stochastic Gradient Boosting
3. Friedman, J., Hastie, T. and Tibshirani, R. The Elements of Staistical Learning

/

|
1月前
|

【阿里天池-医学影像报告异常检测】3 机器学习模型训练及集成学习Baseline开源

35 9
|
1月前
|

LLama+Mistral+…+Yi=? 免训练异构大模型集成学习框架DeePEn来了
【8月更文挑战第6天】DeePEn是一种免训练异构大模型集成学习框架，旨在通过融合多个不同架构和参数的大模型输出概率分布，提升整体性能。它首先将各模型输出映射至统一概率空间，然后进行聚合，并最终反转回单一模型空间以生成输出。实验证明，在知识问答和推理任务上，DeePEn相比单一大模型如LLaMA和Mistral有显著提升，但其效果受模型质量和数量影响，并且计算成本较高。[论文: https://arxiv.org/abs/2404.12715]
30 1
|
1月前
|

【机器学习】模型融合Ensemble和集成学习Stacking的实现

39 1
|
2月前
|

【7月更文第23天】集成学习，作为机器学习中一种强大而灵活的技术，通过结合多个基础模型的预测来提高整体预测性能。在scikit-learn（简称sklearn）这一Python机器学习库中，随机森林（Random Forest）和梯度提升（Gradient Boosting）是两种非常流行的集成学习方法。本文将深入解析这两种方法的工作原理，并通过代码示例展示它们在sklearn中的应用。
65 10
|
2月前
|

spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
161 6
|
2月前
|
Java 关系型数据库 MySQL

【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤： 1. 初始化Spring Boot项目，添加Camunda和MySQL驱动依赖。 2. 配置application.properties，包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性，指定数据源。 4. 引入流程定义文件（如.bpmn）。 5. 创建服务处理流程操作，创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用，测试流程启动，如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
185 4
|
2月前
|

【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
139 1
|
3月前
|

springboot集成kafka
springboot集成kafka
120 2
|
3月前
|

70 1
|
2月前
|

Spring Boot与Apache Kafka Streams的集成
Spring Boot与Apache Kafka Streams的集成
121 0