码迷,mamicode.com
首页 > 其他好文 > 详细

Adaboost分类器

时间:2019-09-11 13:40:27      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:一个   算法   sum   表示   开始   res   开发   adb   问题:   

Adaboost分类器

2019-08-31

 

非集成的机器学习算法就像古代皇帝一样,一个人说了算;集成学习算法类似于现在的国会,需要听取在会所有人的意见。

Adaboost是一个集成学习算法,下面将会对算法进行拆解,以使我们明白Adaboost的内部原理。

Adboost算法核心内容可以划分为两个问题:

(1)如何构建弱分类器;

(2)如何组合这些弱分类器。

其中(1)又可以细化为:

1)使用哪种模型作为弱分类器的主算法?SVM还是DecisionTree,又或者是LogisticRegression;

2)如何使用原始数据?全部使用还是随机抽取又或者是分批使用;

3)到底应该训练出多少个弱分类器?

解决完这些问题,整个Adaboost算法就非常清晰了。

 

1.构建弱分类器

1.1 弱分类器的主算法

这个由设计者自己选择,Adboost算法不强制规定选择那种算法作为弱分类器的主算法。

1.2 原始数据集的使用

Adaboost算法会使用全部的训练集来训练弱分类器,并不会进行类似于随机抽取或者分批的操作;但是Adaboost会给每个训练数据添加一个权重系数。

目前只需要直到Adboost算法使用全部的训练集训练模型,并为每个数据增加了一个权重系数这两点就可以了。

1.3 弱分类器的个数

这个Adaboost算法中也没有强制规定,开发人员可以自己规定弱分类器个数,或者自己设置停止迭代的条件。

1.4 弱分类器训练过程

假设总训练集为D,训练集的样本个数为N,最多训练M个弱分类器;

m代表正准备训练的分类器的编号;

$W_{i}$表示第i个弱分类器的权重列表,$W_{i,j}$代表第i个弱分类器的第j个数据的权值,i,j都从0开始计

在这些条件下,弱分类器的训练过程如下:

1)初始化权重系数W并初始化m=0;

$W_{0,j} = \frac{1}{N}\, \, \, \, \, \, \, \, \, j\in [0,1,2\cdots N-1]$

2)若m大于M-1,停止弱分类器训练,准备组合弱分类器;

3)否则使用带权重的训练数据训练弱分类器,得到弱分类器$G_{m}(x)$;

4)计算弱分类器$G_{m}(x)$在训练集上的错误率:

$\widehat{y}_{m}=G_{m}(x)$

$\varepsilon _{m}=W_{m}\cdot (\widehat{y}_{m}\neq y)$

5)计算相关系数:

$\alpha_{m}=0.5log\frac{1-\varepsilon _{m}}{\varepsilon _{m}}$

6)更新权重:

$W_{m+1}=W_{m}\times exp(-\alpha_{m}\times \widehat{y}\times y)$

归一化权重

$W_{m+1}=W_{m+1}/(\sum W_{m+1,j}\,\,)$

7)令$m = m+1$,查是否达到迭代终止条件,否的话跳到第2)步继续;

8)达到条件的话终止迭代,准备组合弱分类器。

 

2.组合弱分类器

这个时候上一节中求的相关系数就用上了,最终的强分类器$F(x)$:

$F(x)=\sum_{i=0}^{M-1}\alpha_{i}G_{i}(X)$

当$F(x)>0$,预测为正

 

Adaboost分类器

标签:一个   算法   sum   表示   开始   res   开发   adb   问题:   

原文地址:https://www.cnblogs.com/sienbo/p/11438951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!