adaboost java代码_Adaboost算法及其代码实现

85c3378d39a4107d916e3e9ca8474eb7.png

Adaboost算法及其代码实现

算法概述

AdaBoost(adaptive boosting),即自适应提升算法。

Boosting 是一类算法的总称,这类算法的特点是通过训练若干弱分类器,然后将弱分类器组合成强分类器进行分类。

为什么要这样做呢?因为弱分类器训练起来很容易,将弱分类器集成起来,往往可以得到很好的效果。

俗话说,"三个臭皮匠,顶个诸葛亮",就是这个道理。

这类 boosting 算法的特点是各个弱分类器之间是串行训练的,当前弱分类器的训练依赖于上一轮弱分类器的训练结果。

各个弱分类器的权重是不同的,效果好的弱分类器的权重大,效果差的弱分类器的权重小。

值得注意的是,AdaBoost 不止适用于分类模型,也可以用来训练回归模型。

这需要将弱分类器替换成回归模型,并改动损失函数。

$几个概念

强学习算法:正确率很高的学习算法;

弱学习算法:正确率很低的学习算法,仅仅比随机猜测略好。

弱分类器:通过弱学习算法得到的分类器, 又叫基本分类器;

强分类器:多个弱分类器按照权值组合而成的分类器。

$提升方法专注两个问题:

1.每一轮如何改变训练数据的权值或者概率分布:

Adaboost的做法是提高被分类错误的训练数据的权值,而提高被分类错误的训练数据的权值。

这样,被分类错误的训练数据会得到下一次弱学习算法的重视。

2.弱组合器如何构成一个强分类器

加权多数表决。

每一个弱分类器都有一个权值,该分类器的误差越小,对应的权值越大,因为他越重要。

算法流程

给定二分类训练数据集:

$T = {(x_1, y_1), (x_2, y_2), ... , (x_n, y_n)}$

和弱学习算法

目标:得到分类器\(G(x)\)

1.初始化权重分布:

一开始所有的训练数据都赋有同样的权值,平等对待。

$D_1 = (w_{11}, w_{12}, ... , w_{1n})$, $w_{1i} = \frac{1}{N}$, $i = 1, 2, ... , N$

### 2.权值的更新

设总共有M个弱分类器,m为第m个弱分类器, $m = 1, 2, ... , M$

(1)第m次在具有$D_m$权值分布的训练数据上进行学习,得到弱分类器$G_m(x)$。

这个时候训练数据的权值:$D_m = (w_{m, 1}, w_{m, 2}, ... , w_{m, n})$, $i = 1, 2, ... , N$

(2)计算$Gm(x)$在该训练数据上的**分类误差率**:

注:I函数单位误差函数

**分类误差率**:$e_m = \sum^{N}_{i = 1} w_i I (G_m(x_i) \neq y_i)$

(3)计算$G_(x)$的系数:

$\alpha_m = \frac 1 2 \ln \frac{1 - e_m}{e_m}$

(4)更新训练数据的权值:

$D

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值