机器学习(五) ----------集成学习(2)(Adaboost算法+GDBT算法+XGBoost算法)

目录

4 Adaboost算法(Adaptive Boosting)

4.1 核心思想

4.2 算法流程

4.3 算法特点

4.4 API

4.4.1 api

4.4.2 参数介绍

4.4.3 代码实现

5 梯度提升树 (Gradient Boosting Decision Tree)

5.1 原理

5.2 步骤

5.3 API

5.3.1 GradientBoostingClassifier

主要参数

主要方法

5.3.2 GradientBoostingRegressor

主要参数

主要方法

5.4 代码实现

6 XGboost(Extreme Gradient Boosting)极端梯度提升树

6.1 核心思想

6.2 公式推导

1. 目标函数

2. 正则化项

3. 泰勒展开

4. 求解目标函数

5. 移除常数项

6. 合并同类项

7. 改写为树结构形式

8. 求解最优权重

9. 求解最优结构

6.3 特点

6.4 API

6.4.1 核心类

6.4.2 核心函数

6.4.3 通用参数(General Parameters)

6.4.4 Tree Booster参数

6.4.5 目标参数(Objective Parameters)

6.4.6 评估参数(Evaluation Parameters)

6.4.7 调用示例


Adaboost算法(Adaptive Boosting)

4.1 核心思想

AdaBoost算法(Adaptive Boosting)是一种迭代算法,其核心思想是将多个弱分类器组合成一个强分类器。在机器学习中,弱分类器通常指的是分类能力稍强于随机猜测的分类器,而强分类器则是指分类能力很强的分类器。AdaBoost算法通过调整样本权重和弱分类器权重,使得每次迭代中,被错分的样本权重增加,而被正确分类的样本权重减小,从而确保弱分类器能够更多地关注那些难以分类的样本。

4.2 算法流程

  1. 初始化训练数据的权重分布
    • 对于每一个训练样本,初始时都被赋予相同的权重。如果有N个样本,则每一个训练样本的初始权值为1/N。这步操作可以表示为初始化一个权重向量D1=(w11, w12, ..., w1N),其中w1i=1/N,i=1,2,...,N。
  2. 迭代训练弱分类器
    • 对于m=1,2,...,M(M为指定的最大迭代次数,即弱分类器的个数):
      • 使用具有权值分布Dm的训练数据集进行学习,得到弱分类器Gm(x)。这通常是一个简单的分类器,如决策树桩(决策树深度为1的决策树)。
      • 计算Gm(x)在训练数据集上的分类误差率em。这通常通过计算Gm(x)错误分类的样本的权值之和,然后除以所有样本的权值之和来得到。
      • 计算Gm(x)的系数αm。αm通常与em成反比,即em越小,αm越大,表示该弱分类器在最终强分类器中的重要性越大。
    • 模型权重计算公式:a_t = \frac{1}{2}ln\left ( \frac{1-e_m}{e_m} \right )     
    •  样本权重计算公式: 
  3. 更新训练数据集的权值分布
    • 对于每一个样本,根据其是否被Gm(x)正确分类,调整其权重。如果Gm(x)将样本正确分类,则降低其权重;如果Gm(x)将样本错误分类,则增加其权重。这样可以使得在下一轮迭代中,被Gm(x)错误分类的样本能够得到更多的关注。
  4. 构建强分类器
    • 在经过M轮迭代后,我们得到了M个弱分类器g1(x), g2(x), ..., gM(x)以及它们对应的系数α1, α2, ..., αM。将这些弱分类器按照其系数进行线性组合,即得到最终的强分类器H(x)。
    • H\left ( x \right ) = sign\left ( \sum_{m}^{i=1}\alpha _ig_i(x) \right )
  5. 预测
    • 使用得到的强分类器H(x)对新的数据进行预测。

4.3 算法特点

  1. 高性能:AdaBoost算法能够自动选择并整合多个弱分类器,从而提高整体分类性能。它通过关注错误分类样本,并加大它们的权重,使得后续的弱分类器能够更加关注这些困难样本,从而提高整体性能。
  2. 简单易用:AdaBoost算法不需要对弱分类器进行特别的要求,只需要它们能够稍微好于随机猜测即可。这使得AdaBoost算法非常灵活和容易实现。
  3. 鲁棒性:AdaBoost算法对噪声和异常值具有一定的鲁棒性。通过不断调整样本权重,AdaBoost能够在一定程度上减小噪声和异常值对整个模型的影响。

4.4 API

4.4.1 api

sklearn.ensemble.AdaBoostClassifier()  

4.4.2 参数介绍

  • base_estimator:指定基分类器,默认为 DecisionTreeClassifier(max_depth=1),即深度为 1 的决策树(决策树桩)。
  • n_estimators:弱分类器的数量,默认为 50。
  • learning_rate:学习率,用于控制每个弱分类器权重的更新速度,默认为 1.0。
  • algorithm:指定用于提升的算法,可以是 "SAMME" 或 "SAMME.R",默认为 "SAMME.R"。
  • random_state:控制随机性的种子,用于基分类器的训练和数据集的划分。

4.4.3 代码实现

from sklearn.ensemble import AdaBoostClassifier  
from sklearn.datasets import make_classification  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import accuracy_score  
  
# 生成一个模拟的二分类数据集  
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42)  
  
# 划分数据集为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 初始化 AdaBoostClassifier,使用默认参数  
abc = AdaBoostClassifier(random_state=42)  
  
# 使用训练数据拟合模型  
abc.fit(X_train, y_train)  
  
# 使用测试集进行预测  
y_pred = abc.predict(X_test)  
  
# 计算并打印准确率  
accuracy = accuracy_score(y_test, y_pred)  
print("Accuracy: {:.2f}%".format(accuracy * 100))  
  
# 你还可以查看模型的更多属性,如弱分类器的数量、每个弱分类器的权重等  
print("Number of estimators:", abc.n_estimators_)  
print("Estimator weights:", abc.estimator_weights_)  
print("Estimator errors:", abc.estimator_errors_)

梯度提升树 Gradient Boosting Decision Tree

梯度提升树(Gradient Boosting Decision Tree,简称GBDT)是一种集成学习算法,它通过构建多个决策树并将它们的结果进行组合来改进预测性能。梯度提升树被认为是统计学习中性能最好的方法之一,它结合了梯度提升(Gradient Boosting)和决策树(Decision Tree)两种技术。

5.1 原理

1. 初始化

  • GBDT通过迭代地训练弱学习器(如决策树)并将它们组合起来,以最小化损失函数。
  • 在每一步迭代中,GBDT会计算当前模型在训练数据上的梯度,并根据这个梯度来更新弱学习器。
  • 具体来说,GBDT会找到一个最佳的弱学习器,使得在当前模型预测错误的地方进行修正,从而最小化损失函数。

2. 公式推导

  • 假设我们有一个损失函数L(y, F(x)),其中y是真实标签,F(x)是模型预测值。
  • 初始模型F_0(x)通常是一个常数。
  • 在第m步迭代,我们的目标是找到一个函数T_m(x)(即弱学习器)和一个系数\beta_m,使得F_m(x) = F_{m-1}(x) + \beta _m * T_m(x)的损失函数最小化。
  • 我们可以使用梯度下降的思想来找到β_mT_m(x)。首先,计算损失函数关于F(x)的梯度,记为
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值