boosting
Boosting 算法的特点在于:将表现一般的亚博弱分类器通过组合变成更好的体育app模型。代表自然就是我们的随即森林了。
GBDT和Adaboost是boost算法中比较常见的两种,这里主要讲解Adaboost。
Adaboost
Adaboost算法的核心就是两个权重。对于数据有一个权重,权重大的数据计算的损失就大;然后对于每一个弱分类器有一个权重,这个权重就是每一个弱分类器最终投票的比重。
【先给出Adaboost关键的公式】:
α1=12ln(1−ϵ1ϵ1)α1=12ln(1−ϵ1ϵ1) 分类器的投票权重
Wi=Wie−αiyih^(xi)Wi=Wie−αiyih^(xi) 更新样本的权重
【随即森林中最终投票每一个弱分类器的比重相同】
大概流程就是,现在有一个数据集,然后每个数据的比重都相同,然后训练了好几个不同的弱分类器。
- 挑选错误率最低的弱分类器,然后通过【某种算法】得到这个弱分类器最终投票的比重,然后通过【某种算法】更新每一个数据的比重;
- 因为每一个数据的比重更新了,所以再选择一个错误率最低的弱分类器,然后通过【某种算法】得到这个弱分类器最终投票的比重,然后通过【某种算法】更新每一个数据的比重;
- 重复这个过程。
这里给一个具体计算的例子:
假设这里有10个数据:
加号和减号分别代表不同的类别。然后每个类别有5个样本。
这三个分类器分别是h1(x),h2(x),h3(x)h1(x),h2(x),h3(x)
图中画圈的数据就是分类错误的数据。可以发现每个弱分类器都分错了3个。下面开始Adaboost的算法。
先计算三个弱分类器的错误率,因为一开始每个样本的权重都是0.1,每个分类器又都错了3个样本,所以错误率都是0.3。这里就随机选取第一个分类器作为错误率最低的那个好了。
我们这里通过第一个【某种算法】计算第一个弱分类器在最终的投票权重:
α1=12ln(1−ϵ1ϵ1)=0.5∗ln(0.70.3)=0.4236α1=12ln(1−ϵ1ϵ1)=0.5∗ln(0.70.3)=0.4236
然后通过这个α1=0.4236α1=0.4236来更新每一个样本的权重。这也就是上面提到的第二个【某种算法】:
W(i)=W(i)∗e−αyih^(xi)W(i)=W(i)∗e−αyih^(xi)
这啥意思的,现在假设第一个样本+1,这个样本的权重是0.1(更新前),然后这个样本在第一个分类器中是非类正确的,所以yih^(xi)=1yih^(xi)=1,所以这个样本更新后的权重就是0.1e−0.4236=0.06550.1e−0.4236=0.0655
当然,对于+3这个样本,第一个分类器就分类错误,所以yih^(xi)=−1yih^(xi)=−1,所以呢这个样本更新后的权重就是:0.1e0.4236=0.15270.1e0.4236=0.1527
下面经过第一个分类器之后的样本的权重:
这一次选的是第二个分类器,然后计算它的α2α2,然后再更新每一个样本的权重值:
然后是再寻找错误率最低的分类器:
到这一步的时候,我们已经有了α1,α2,α3α1,α2,α3,所以我们的adaboost已经得到了所有分类器的投票权重,所以最终的模型投票公式就是: