本篇博客参考了书籍《MATLAB神经网络43个案例分析》,文中的代码也是来源于书中的实例,在此向原作者表示感谢。
Adaboost算法的思想是合并多个“弱”分类器的输出以产生有效分类,其主要步骤为:首先给出弱学习算法和样本空间(x,y),从样本空间中找出m组训练数据,每组训练数据的权重都是1/m。然后用弱学习算法迭代运算T次,每次运算后都按照分类结果更新训练数据权重分布,对于分类失败的训练个体赋予较大权重,下一次迭代运算时更加关注这些训练个体。弱分类器通过反复迭代得到同一个分类函数序列,每个分类函数赋予一个权重,分类结果越好的函数,其对应权重越大。T次迭代之后,最终强分类函数F由弱分类函数加权得到。BP_Adaboost模型即把BP神经网络作为弱分类器,反复训练BP神经网络预测样本输出,通过Adaboost算法得到多个BP神经网络弱分类器组成的强分类器。当然Adaboost算法也可以和其他算法相结合,比如SVM,PCA等等。
算法步骤如下:
步骤1:数据选择和网络初始化,从样本空间中随机选择m组训练数据,初始化测试数据的分布权值为1/m,根据样本输入输出维数确定神经网络结构,初始化BP神经网络权值和阈值。
步骤2:弱分类器预测。训练第t个弱分类器时,用训练数据训练BP神经网络并且预测训练数据输出,得到预测序列g(t)的预测误差和,误差和的计算公式如下所示: