机器学习实践——基于单层决策树的AdaBoost算法

背景:集成算法是将相同或不同的分类器组合成为一个强分类的方法,这种组合方法包括自聚汇聚法(bagging),还有boosting方法。我们选用最流行的AdaBoos算法。

AdaBoost的运行过程:训练数据集的每一个样本,应赋予一个权重,这些权重构成一个向量D,一开始,这些权重都初始化为相等的值,首先在训练数据集上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器,但是在第二次训练时,将会根据分类器的错误率,对数据集中样本的各个权重进行调整,分类正确的样本的权重降低,而分类错的样本权重则上升,但这些权重的总和保持不变为1。AdaBoost为每个分类器分配一个权重值alpha,这些alpha的值是基于每个弱分类的错误率进行计算的。

alpha的计算公式与权重D的公式书上都有,自己去看就行了,就不贴了。

上面的官方定义估计也看不明白,这里我通俗一点讲:

1:首先要选取一个分类器作为弱分类器,什么分类器都可以,这里选择单层决策树作为弱分类器。

2:要明白D是针对每个训练样本的,而alpha是针对每次弱分类器的分类结果的,

3;通过弱分类器先对数据集进行一次分类,将分错的样本的权重加大,这样下次分类时,就会更加考虑该样本的正确率,作为最优分类。分类器得到的分类结果乘上alpha的值,保存下来,经过多次的迭代之后,运用sign函数将累计分类结果转换为最终的结果,这就是构成的强分类器的分类结果。

所以,第一步:基于单层决策树构建弱分类器

简单说一下,单层决策树,就是只依靠一个特征对数据集进行分类。那么为了找到最好的特征,所以第一层循环就是遍历每个特征。在某一特征中,定义一个阈值,通过这个阈值,将大于这个阈值分为一类,小于阈值的分为另一类,那么,这个阈值怎么定义呢,从最小值开始逐步加上一个步长知道最大值为止,所有第二层循环是对每个步长进行循环,寻找最好的阈值。在某一阈值下,是大于阈值归为1,还是小于阈值归为1呢?都要尝试一下以寻找最高的正确率,所以第三层循环就是对每个不等号进行循环。

这是构建单层决策树的伪代码:

将最小错误率minEroor设为无穷大
对数据集中的每一个特征(第一层循环):
    对每个步

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值