赞
踩
集成学习(Ensemble Learning)是一种通过组合多个模型来提升预测性能的技术。简单来说,它就像是在开会时听取多人的意见,而不是只依赖一个人的观点,从而做出更准确的决策。
提示:若无特别标注,以下学习方法的预测结果均表示为 y ^ \hat{y} y^
算法概述:
随机森林是一种基于Bagging的集成学习方法,通过生成多个决策树并对其结果进行投票或平均来提升模型的稳定性和准确性。
模型构建过程:
公式:
假设我们有 N 个训练样本,随机森林中构建 M 棵决策树。第 i 棵树的预测结果为 hi(x) 。
对于分类问题,随机森林的最终预测结果是各树预测结果的众数:
y
^
=
mode
{
h
i
(
x
)
}
i
=
1
M
\hat{y} = \text{mode}\{h_i(x)\}_{i=1}^M
y^=mode{hi(x)}i=1M
对于回归问题,随机森林的最终预测结果是各树预测结果的均值:
y
^
=
1
M
∑
i
=
1
M
h
i
(
x
)
\hat{y} = \frac{1}{M} \sum_{i=1}^M h_i(x)
y^=M1i=1∑Mhi(x)
公式推导:
常见问题和解决方案:
过拟合:
高计算成本:
数据不平衡:
特征重要性解释:
大数据处理:
算法概述:
与随机森林类似,但没有随机选择特征,每棵树使用全部特征。
模型构建过程:
公式:
假设我们有 N 个训练样本,Bagged Decision Trees中构建 M 棵决策树。第 i 棵树的预测结果为 hi(x) 。
对于分类问题,Bagged Decision Trees的最终预测结果 ( \hat{y} ) 是各树预测结果的众数:
y
^
=
mode
{
h
i
(
x
)
}
i
=
1
M
\hat{y} = \text{mode}\{h_i(x)\}_{i=1}^M
y^=mode{hi(x)}i=1M
对于回归问题,Bagged Decision Trees的最终预测结果是各树预测结果的均值:
y
^
=
1
M
∑
i
=
1
M
h
i
(
x
)
\hat{y} = \frac{1}{M} \sum_{i=1}^M h_i(x)
y^=M1i=1∑Mhi(x)
公式推导:
常见问题和解决方案:
过拟合:
高计算成本:
数据不平衡:
特征重要性解释:
大数据处理:
算法概述:
AdaBoost 是一种迭代算法,通过不断调整样本权重来训练一系列弱学习器(如决策树桩),每个弱学习器重点关注前一轮中错误分类的样本。
模型构建过程:
公式推导:
初始化权重: 所有样本初始权重相等 w i = 1 N w_i = \frac{1}{N} wi=N1
计算错误率: 弱学习器在样本上的错误率为:
ϵ
t
=
∑
i
=
1
N
w
i
I
(
y
i
≠
h
t
(
x
i
)
)
∑
i
=
1
N
w
i
\epsilon_t = \frac{\sum_{i=1}^N w_i I(y_i \neq h_t(x_i))}{\sum_{i=1}^N w_i}
ϵt=∑i=1Nwi∑i=1NwiI(yi=ht(xi))
计算弱学习器权重:
α
t
=
1
2
ln
(
1
−
ϵ
t
ϵ
t
)
\alpha_t = \frac{1}{2} \ln\left(\frac{1 - \epsilon_t}{\epsilon_t}\right)
αt=21ln(ϵt1−ϵt)
更新样本权重:
w
i
←
w
i
⋅
exp
(
α
t
⋅
I
(
y
i
≠
h
t
(
x
i
)
)
)
w_i \leftarrow w_i \cdot \exp(\alpha_t \cdot I(y_i \neq h_t(x_i)))
wi←wi⋅exp(αt⋅I(yi=ht(xi)))
然后规范化权重。
最终模型:
H
(
x
)
=
sign
(
∑
t
=
1
T
α
t
h
t
(
x
)
)
H(x) = \text{sign}\left( \sum_{t=1}^T \alpha_t h_t(x) \right)
H(x)=sign(t=1∑Tαtht(x))
常见问题和解决方案:
过拟合:
弱学习器选择:
计算成本:
样本权重不稳定:
处理多分类问题:
算法概述:
GBM通过逐步训练新的模型来纠正前一个模型的误差,常用于回归和分类问题。其改进版本包括XGBoost、LightGBM和CatBoost。
模型构建过程:
公式:
假设我们有 N 个训练样本,第 t 轮的弱学习器为 ht ,其权重为 βt。最终模型 FT(x) 为:
F
T
(
x
)
=
F
T
−
1
(
x
)
+
β
t
h
t
(
x
)
F_T(x) = F_{T-1}(x) + \beta_t h_t(x)
FT(x)=FT−1(x)+βtht(x)
其中,残差为:
r
i
,
t
=
y
i
−
F
t
−
1
(
x
i
)
r_{i,t} = y_i - F_{t-1}(x_i)
ri,t=yi−Ft−1(xi)
公式推导:
初始化模型:
F
0
(
x
)
=
arg
min
γ
∑
i
=
1
N
L
(
y
i
,
γ
)
F_0(x) = \arg\min_{\gamma} \sum_{i=1}^N L(y_i, \gamma)
F0(x)=argγmini=1∑NL(yi,γ)
其中 L 是损失函数(如均方误差、对数损失)。
计算残差:
r
i
,
t
=
y
i
−
F
t
−
1
(
x
i
)
r_{i,t} = y_i - F_{t-1}(x_i)
ri,t=yi−Ft−1(xi)
训练弱学习器: 用残差 r i , t r_{i,t} ri,t 作为新的目标变量训练弱学习器ht。
更新模型:
F
t
(
x
)
=
F
t
−
1
(
x
)
+
β
t
h
t
(
x
)
F_t(x) = F_{t-1}(x) + \beta_t h_t(x)
Ft(x)=Ft−1(x)+βtht(x)
其中,权重 βt 通过最小化损失函数得到:
β
t
=
arg
min
β
∑
i
=
1
N
L
(
y
i
,
F
t
−
1
(
x
i
)
+
β
h
t
(
x
i
)
)
\beta_t = \arg\min_{\beta} \sum_{i=1}^N L(y_i, F_{t-1}(x_i) + \beta h_t(x_i))
βt=argβmini=1∑NL(yi,Ft−1(xi)+βht(xi))
常见问题和解决方案:
过拟合:
高计算成本:
模型复杂度:
数据不平衡:
处理缺失值:
算法概述:
Stacking 通过结合多个不同的基学习器的输出作为输入,训练一个次级学习器(meta-learner)来进行最终预测。与 Bagging 和 Boosting 不同,Stacking 主要利用不同类型的基学习器来提高模型的多样性和性能。
模型构建过程:
公式:
假设我们有 K 个基学习器
h
1
,
h
2
,
…
,
h
K
h_1, h_2, \ldots, h_K
h1,h2,…,hK以及一个次级学习器 g 。对于输入样本 x ,基学习器的预测为:
h
^
k
(
x
)
=
h
k
(
x
)
,
k
=
1
,
2
,
…
,
K
\hat{h}_k(x) = h_k(x), \quad k = 1, 2, \ldots, K
h^k(x)=hk(x),k=1,2,…,K
次级学习器的输入为基学习器的预测:
h
(
x
)
=
(
h
^
1
(
x
)
,
h
^
2
(
x
)
,
…
,
h
^
K
(
x
)
)
\mathbf{h}(x) = (\hat{h}_1(x), \hat{h}_2(x), \ldots, \hat{h}_K(x))
h(x)=(h^1(x),h^2(x),…,h^K(x))
次级学习器的预测为:
y
^
=
g
(
h
(
x
)
)
\hat{y} = g(\mathbf{h}(x))
y^=g(h(x))
公式推导:
训练基学习器: 使用训练数据 ( X , y ) (X, y) (X,y) 训练多个基学习器 hk。
生成次级训练数据:
训练次级学习器: 使用次级训练数据 ( H , y ) (H, y) (H,y) 训练次级学习器 g 。
生成最终模型: 最终模型为次级学习器对基学习器预测结果的组合:
y
^
=
g
(
h
^
1
(
x
)
,
h
^
2
(
x
)
,
…
,
h
^
K
(
x
)
)
\hat{y} = g(\hat{h}_1(x), \hat{h}_2(x), \ldots, \hat{h}_K(x))
y^=g(h^1(x),h^2(x),…,h^K(x))
常见问题和解决方案:
训练时间长:
次级学习器过拟合:
基学习器选择:
次级学习器选择:
数据泄露:
算法概述:
Voting 是一种简单而有效的集成学习方法,通过结合多个模型的预测结果来提高最终预测的准确性。根据投票方式的不同,分为硬投票(Hard Voting)和软投票(Soft Voting)。
硬投票概述:
硬投票适用于分类问题,通过直接投票选择预测次数最多的类别作为最终预测结果。
模型构建过程:
公式:
假设我们有 K 个基学习器
h
1
,
h
2
,
…
,
h
K
h_1, h_2, \ldots, h_K
h1,h2,…,hK
每个基学习器对样本 ( x ) 的预测结果为 ( h_k(x) )。硬投票的最终预测结果为:
y
^
=
mode
{
h
k
(
x
)
}
k
=
1
K
\hat{y} = \text{mode}\{h_k(x)\}_{k=1}^K
y^=mode{hk(x)}k=1K
公式推导:
训练多个基学习器: 使用训练数据 ( X , y ) (X, y) (X,y) 训练多个基学习器 hk。
每个基学习器进行预测:
h
^
k
(
x
)
=
h
k
(
x
)
,
k
=
1
,
2
,
…
,
K
\hat{h}_k(x) = h_k(x), \quad k = 1, 2, \ldots, K
h^k(x)=hk(x),k=1,2,…,K
投票选择最终预测:
y
^
=
mode
{
h
k
(
x
)
}
k
=
1
K
\hat{y} = \text{mode}\{h_k(x)\}_{k=1}^K
y^=mode{hk(x)}k=1K
软投票概述:
软投票适用于分类问题,通过对各模型的概率输出进行加权平均,再选择概率最大的类别作为最终预测结果。
模型构建过程:
公式:
假设我们有 K 个基学习器
h
1
,
h
2
,
…
,
h
K
h_1, h_2, \ldots, h_K
h1,h2,…,hK
每个基学习器对样本 x 的预测概率为
P
k
(
y
∣
x
)
P_k(y \mid x)
Pk(y∣x),权重为 wk。软投票的最终预测概率为:
P
(
y
∣
x
)
=
∑
k
=
1
K
w
k
P
k
(
y
∣
x
)
P(y \mid x) = \sum_{k=1}^K w_k P_k(y \mid x)
P(y∣x)=k=1∑KwkPk(y∣x)
最终预测结果 ( \hat{y} ) 为:
y
^
=
arg
max
y
P
(
y
∣
x
)
\hat{y} = \arg\max_y P(y \mid x)
y^=argymaxP(y∣x)
公式推导:
训练多个基学习器: 使用训练数据 ( X , y ) (X, y) (X,y) 训练多个基学习器 hk。
每个基学习器进行概率预测:
P
k
(
y
∣
x
)
,
k
=
1
,
2
,
…
,
K
P_k(y \mid x), \quad k = 1, 2, \ldots, K
Pk(y∣x),k=1,2,…,K
加权平均概率:
P
(
y
∣
x
)
=
∑
k
=
1
K
w
k
P
k
(
y
∣
x
)
P(y \mid x) = \sum_{k=1}^K w_k P_k(y \mid x)
P(y∣x)=k=1∑KwkPk(y∣x)
最终预测结果:
y
^
=
arg
max
y
P
(
y
∣
x
)
\hat{y} = \arg\max_y P(y \mid x)
y^=argymaxP(y∣x)
常见问题和解决方案:
基学习器选择:
基学习器数量:
权重分配:
数据不平衡:
处理多分类问题:
算法概述:
Bagging 和 Boosting 是两种常见的集成学习方法,分别通过不同的方式提高模型的稳定性和准确性。将这两种方法结合起来可以进一步提升模型性能。例如,可以将 Bagging 和 Boosting 应用于同一数据集,或者在 Boosting 中引入 Bagging 的思想。
算法概述:
Bagged Boosting Trees 是一种将 Bagging 和 Boosting 结合起来的方法。它首先使用 Bagging 的思想生成多个子数据集,然后在每个子数据集上应用 Boosting 方法(如 AdaBoost 或 Gradient Boosting)。
模型构建过程:
公式:
假设我们有 N 个训练样本,生成 B 个子数据集,每个子数据集上应用 Boosting 生成 T 个弱学习器。第 b 个子数据集上的第 t 个弱学习器为 h b , t ( x ) h_{b,t}(x) hb,t(x) 其权重为 α b , t \alpha_{b,t} αb,t最终模型为所有 Boosting 模型的加权和:
对于分类问题,最终预测结果是所有模型预测结果的众数:
y
^
=
mode
{
∑
t
=
1
T
α
b
,
t
h
b
,
t
(
x
)
}
b
=
1
B
\hat{y} = \text{mode}\left\{ \sum_{t=1}^T \alpha_{b,t} h_{b,t}(x) \right\}_{b=1}^B
y^=mode{t=1∑Tαb,thb,t(x)}b=1B
对于回归问题,最终预测结果是所有模型预测结果的均值:
y
^
=
1
B
∑
b
=
1
B
(
∑
t
=
1
T
α
b
,
t
h
b
,
t
(
x
)
)
\hat{y} = \frac{1}{B} \sum_{b=1}^B \left( \sum_{t=1}^T \alpha_{b,t} h_{b,t}(x) \right)
y^=B1b=1∑B(t=1∑Tαb,thb,t(x))
公式推导:
生成多个子数据集: 假设我们有一个包含 N 个样本的数据集,每次从中随机抽取一个样本并返回抽取 N 次,生成一个包含 N 个样本的子数据集。每个样本被选中的概率为 1 − ( 1 − 1 N ) N 1 - \left(1 - \frac{1}{N}\right)^N 1−(1−N1)N
当 N 较大时,约为 1 − e − 1 ≈ 0.632 1 - e^{-1} \approx 0.632 1−e−1≈0.632
在每个子数据集上应用 Boosting: 使用 Boosting 方法(如 AdaBoost 或 Gradient Boosting)在每个子数据集上生成一系列弱学习器 h b , t ( x ) h_{b,t}(x) hb,t(x) 及其权重 α b , t \alpha_{b,t} αb,t
集成 Boosting 模型: 对所有 Boosting 模型的预测结果进行投票(分类问题)或平均(回归问题)。
常见问题和解决方案:
计算成本:
模型复杂度:
数据不平衡:
过拟合:
处理缺失值:
算法概述:
将随机森林(Bagging 的一种)和 Boosting 结合起来,可以在随机森林生成的基础上进一步提升模型性能。例如,可以先用随机森林生成多个决策树,再用 Boosting 对这些决策树进行加权组合。
模型构建过程:
公式:
假设我们有 B 棵决策树,第 b 棵树为 hb(x) ,Boosting 方法对这些决策树进行加权组合,权重为 αb。最终模型为所有决策树的加权和:
对于分类问题,最终预测结果是所有决策树预测结果的众数:
y
^
=
mode
{
∑
b
=
1
B
α
b
h
b
(
x
)
}
\hat{y} = \text{mode}\left\{ \sum_{b=1}^B \alpha_b h_b(x) \right\}
y^=mode{b=1∑Bαbhb(x)}
对于回归问题,最终预测结果是所有决策树预测结果的均值:
y
^
=
1
B
∑
b
=
1
B
(
α
b
h
b
(
x
)
)
\hat{y} = \frac{1}{B} \sum_{b=1}^B \left( \alpha_b h_b(x) \right)
y^=B1b=1∑B(αbhb(x))
公式推导:
生成随机森林: 使用随机森林算法生成多个决策树 hb(x)。
对决策树应用 Boosting: 使用 Boosting 方法(如 AdaBoost 或 Gradient Boosting)对这些决策树进行加权组合,权重为αb。
集成 Boosting 模型: 对所有决策树的预测结果进行投票(分类问题)或平均(回归问题)。
常见问题和解决方案:
计算成本:
模型复杂度:
数据不平衡:
过拟合:
处理缺失值:
算法 | 主要特点 | 优点 | 缺点 | 常见问题 | 解决方案 |
---|---|---|---|---|---|
Bagging | - 有放回抽样生成多个子数据集 - 每个子数据集上训练一个模型 - 最后对模型结果进行平均或投票 | - 减少方差,提升模型稳定性 - 简单易实现 | - 对偏差的减少效果有限 - 计算成本较高 | - 过拟合 - 高计算成本 - 数据不平衡 - 特征重要性解释复杂 - 大数据处理 | - 限制树的最大深度 - 使用并行计算 - 样本加权或生成合成样本 - 使用 SHAP 值等解释技术 - 使用分布式计算框架 |
Random Forest | - Bagging 的一种 - 通过随机选择特征进行节点分裂 | - 高精度 - 自动处理缺失值 - 提供特征重要性 | - 高计算成本 - 对小数据集不适用 | - 过拟合 - 高计算成本 - 数据不平衡 - 特征重要性解释复杂 - 大数据处理 | - 限制树的最大深度 - 使用并行计算 - 样本加权或生成合成样本 - 使用 SHAP 值等解释技术 - 使用分布式计算框架 |
AdaBoost | - 逐步调整样本权重 - 训练一系列弱学习器 | - 高精度 - 减少偏差 | - 对噪声敏感 - 计算成本高 | - 过拟合 - 弱学习器选择 - 高计算成本 - 样本权重不稳定 - 多分类问题处理 | - 使用早停法 - 限制弱学习器复杂度 - 使用并行计算 - 设置权重上限或平滑处理 - 使用 AdaBoost.M1 或 M2 |
Gradient Boosting | - 逐步训练新模型纠正前一个模型的误差 | - 高精度 - 减少偏差 - 灵活性强 | - 高计算成本 - 模型复杂度高 | - 过拟合 - 高计算成本 - 模型复杂度 - 数据不平衡 - 缺失值处理 | - 使用早停法 - 使用并行计算 - 使用 SHAP 值等解释技术 - 样本加权或生成合成样本 - 使用 XGBoost, LightGBM, CatBoost |
Stacking | - 结合多个不同基学习器的输出 - 训练次级学习器进行最终预测 | - 高精度 - 增加模型多样性 | - 训练时间长 - 次级学习器可能过拟合 | - 训练时间长 - 次级学习器过拟合 - 基学习器选择 - 次级学习器选择 - 数据泄露 | - 使用并行计算 - 使用交叉验证生成次级训练数据 - 尝试多种基学习器 - 尝试多种次级学习器 - 确保基学习器在生成预测时没有见过验证集数据 |
Voting | - 结合多个模型的预测结果 - 通过硬投票或软投票选择最终预测结果 | - 简单易实现 - 增加模型多样性 | - 可能需要调整模型权重 - 对偏差的减少效果有限 | - 基学习器选择 - 基学习器数量 - 权重分配 - 数据不平衡 - 多分类问题处理 | - 尝试多种基学习器 - 选择适当数量的基学习器 - 使用交叉验证或基于性能分配权重 - 使用加权投票 - 使用混淆矩阵等工具解释结果 |
Bagging + Boosting | - 结合 Bagging 和 Boosting 方法 - 提升模型性能 | - 增加模型多样性 - 提高准确性 | - 高计算成本 - 模型复杂度高 | - 计算成本高 - 模型复杂度高 - 数据不平衡 - 过拟合 - 缺失值处理 | - 使用并行计算 - 限制决策树和弱学习器数量 - 使用 SHAP 值等解释技术 - 样本加权或生成合成样本 - 使用 XGBoost, LightGBM, CatBoost |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。