AdaBoost集成学习分类系统
项目介绍
本项目是一个基于MATLAB环境开发的AdaBoost(Adaptive Boosting)集成学习系统。该系统实现了经典的AdaBoost.M1算法逻辑,通过迭代训练一系列弱分类器(决策树桩),并将它们加权组合成一个能够处理非线性分类问题的强分类器。系统特别针对具有挑战性的圆形分布数据进行了优化设计,展示了集成学习在复杂决策边界构建方面的卓越能力。
功能特性
- 自动化数据生成:内置非线性同心圆数据集生成器,模拟真实世界中的复杂分类场景。
- 动态权重调整:在迭代中实时更新样本权重,自动聚焦于难以分类的边界样本。
- 过程可视化:实时监控训练集与测试集的误差收敛曲线,并动态绘制决策边界的演变过程。
- 全面指标评估:自动计算并输出准确率、精确率、召回度,并生成直观的混淆矩阵。
- 灵活参数配置:支持自定义迭代次数等超参数,方便用户观察过拟合与欠拟合现象。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 工具箱需求:基本MATLAB内置函数,无需额外依赖特定工具箱。
- 硬件建议:标准通用配置即可流畅运行。
实现逻辑详解
1. 数据准备与预处理
程序首先生成400个样本点,分布在两个不同半径的同心圆区域内,代表两个不同的类别(+1和-1)。随后,系统对数据进行随机打乱,并按照70%:30%的比例划分训练集与测试集。这一步骤确保了模型的评估具有统计学意义。
2. 初始化配置
系统初始化样本分布权重D为均匀分布(1/N)。设置迭代次数上限为40次,并预分配结构体数组用于存储每一轮产生的弱分类器参数,包括特征维度、分割阈值、分类方向以及该分类器的权重(Alpha)。
3. 核心训练迭代
在每一轮训练循环中,系统执行以下核心逻辑:
- 弱分类器训练:遍历所有特征维度和候选阈值,寻找使当前加权误差率最小的决策树桩。
- 权重计算:根据当前弱分类器的错误率计算其在最终集成模型中的话语权(Alpha)。通过对数函数确保错误率越低的分类器拥有更高的权重。
- 样本分布更新:利用指数损失函数调整样本权重。被当前弱分类器错分的样本在下一轮中的权重将增大,而正确分类的样本权重将减小。
- 模型累加:将当前弱分类器的预测结果按比例累加到强分类器的得分空间中。
4. 结果可视化与性能评估
- 误差曲线:绘制随迭代次数增加而变化的训练误差和测试误差。
- 决策边界图:通过对整个特征空间进行网格采样,计算集成模型的预测值,并使用填色等高线图展示模型形成的复杂非线性边界。
- 统计分析:在循环结束后,针对测试集计算精确的分类统计量,通过混淆矩阵清晰展示模型对各类别的识别能力。
关键算法说明
决策树桩 (Decision Stump)
系统采用最简单的单层决策树作为基分类器。它仅基于单个特征属性和单个分割阈值进行分类。虽然单个决策树桩的分类能力仅略优于随机猜测,但经过AdaBoost提升后,能够组合出极其复杂的决策平面。
加权误差处理
在搜索最佳分割点时,算法不是简单计算错误个数,而是加权求和。这意味着模型被迫去“迁就”那些在之前轮次中表现不佳的样本。
防止数值溢出
代码中包含了对错误率 epsilon 的边界检查(限制在极小正数与1之间),有效防止了在计算 Alpha 权重时出现 log(0) 或除以 0 的计算异常,保证了算法的鲁棒性。
使用方法
- 启动MATLAB软件。
- 将项目相关的脚本文件放置在同一工作目录下。
- 在命令行窗口键入主程序名称并回车。
- 系统将自动开始训练,并在命令行输出迭代进度。
- 训练完成后,会自动弹出两个图表窗口:一个是误差收敛曲线,另一个是带有决策边界的数据分布图。
- 在MATLAB控制台查看最终的准确率、精确率、召回率以及混淆矩阵报告。