天天看点

数据科学系统学习 机器学习算法 # 西瓜书学习记录 [12] 集成学习实践

本篇内容为《机器学习实战》第 7 章利用 adaboost 元算法提高分类性能程序清单。所用代码为 python3。

adaboost 优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。 缺点:对离群点敏感。 适用数据类型:数值型和标称型数据。

boosting 方法拥有多个版本,这里将只关注其中一个最流行的版本 adaboost。

在构造 adaboost 的代码时,我们将首先通过一个简单数据集来确保在算法实现上一切就绪。使用如下的数据集:

在 python 提示符下,执行代码加载数据集:

我们先给出函数<code>buildstump()</code>的伪代码:

为了解实际运行过程,在 python 提示符下,执行代码并得到结果:

这一行可以注释掉,这里为了理解函数的运行而打印出来。

将当前错误率与已有的最小错误率进行对比后,如果当前的值较小,那么就在字典<code>basestump</code>中保存该单层决策树。字典、错误率和类别估计值都会返回给 adaboost 算法。

上述,我们已经构建了单层决策树,得到了弱学习器。接下来,我们将使用多个弱分类器来构建 adaboost 代码。

首先给出整个实现的伪代码如下:

在 python 提示符下,执行代码并得到结果:

最后,我们来观察测试错误率。

输入以下命令进行分类:

随着迭代的进行,数据点 [0,0] 的分类结果越来越强。也可以在其它点上分类:

这两个点的分类结果也会随着迭代的进行而越来越强。