AdaBoost算法

目录

一、核心原理:

二、算法步骤

三、关键优势:

​四. 局限与解决

 五、代码示例(鸢尾花数据集)


AdaBoost(Adaptive Boosting)是一种经典的集成学习算法,通过组合多个弱分类器(如决策树)来构建强分类器。其核心思想是通过迭代优化残差(错误)和动态调整样本权重,逐步提升模型性能。以下是对 AdaBoost 的简明总结和关键要点:

一、核心原理:

提升法:通过顺序训练多个弱分类器,每轮专注修正前一个模型的错误

加权损失函数:使用指数损失函数(分类任务)或均方误差(回归任务)最小化整体误差。

样本权重调整:错误分类的样本权重增加,正确分类的样本权重减少。

权重公式:

其中et为t轮分类器的误差率

二、算法步骤

1.初始化样本权重:所有样本初始权重为1/N,

2.迭代器分类:

        1.训练当前弱分类器(如决策树),使用加权样本

        2.计算分类误差:

        3.为弱分类器分配权重:,误差越小,权重越大

        4.更新样本权重 wt+1​=wt​⋅et​(错误样本)或 wt+1​=wt​⋅(1−et​)(正确样本)。

3.组合弱分类器:最终强分类器为各弱分类器的加权投票(分类)或加权平均(回归)。

三、关键优势:

  • 高准确率:通过迭代优化残差,逐步提升模型性能。
  • 自动处理不平衡数据:通过加权机制对少数类样本进行过采样。
  • 可解释性:输出特征重要性,辅助理解模型决策逻辑。

 


​四. 局限与解决

  • 对噪声敏感:易受离群值影响,可能导致过拟合。
    • 解决方案:提前数据清洗、限制弱分类器深度、调整 learning_rate
  • 训练效率低:需顺序迭代训练多个弱分类器。
    • 解决方案:改用并行化算法(如 LightGBM),或减少 n_estimators
  • 缺乏并行性:各弱分类器依赖前一轮结果,无法并行训练。

 五、代码示例(鸢尾花数据集

from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 数据加载与分割
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建并训练 AdaBoost 模型
model = AdaBoostClassifier(n_estimators=100, base_estimator='决策树')
model.fit(X_train, y_train)

# 预测与评估
y_pred = model.predict(X_test)
print(f"测试集准确率: {model.score(X_test, y_test):.2f}")

你可能感兴趣的:(机器学习,算法,决策树)