本篇内容为《机器学习实战》第 7 章利用 adaboost 元算法提高分类性能程序清单。所用代码为 python3。
adaboost 优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。 缺点:对离群点敏感。 适用数据类型:数值型和标称型数据。
boosting 方法拥有多个版本,这里将只关注其中一个最流行的版本 adaboost。
在构造 adaboost 的代码时,我们将首先通过一个简单数据集来确保在算法实现上一切就绪。使用如下的数据集:
在 python 提示符下,执行代码加载数据集:
我们先给出函数<code>buildstump()</code>的伪代码:
为了解实际运行过程,在 python 提示符下,执行代码并得到结果:
这一行可以注释掉,这里为了理解函数的运行而打印出来。
将当前错误率与已有的最小错误率进行对比后,如果当前的值较小,那么就在字典<code>basestump</code>中保存该单层决策树。字典、错误率和类别估计值都会返回给 adaboost 算法。
上述,我们已经构建了单层决策树,得到了弱学习器。接下来,我们将使用多个弱分类器来构建 adaboost 代码。
首先给出整个实现的伪代码如下:
在 python 提示符下,执行代码并得到结果:
最后,我们来观察测试错误率。
输入以下命令进行分类:
随着迭代的进行,数据点 [0,0] 的分类结果越来越强。也可以在其它点上分类:
这两个点的分类结果也会随着迭代的进行而越来越强。