美文网首页深度学习
2020机器学习AdaBoost (2)

2020机器学习AdaBoost (2)

作者: zidea | 来源:发表于2020-03-27 19:16 被阅读0次
machine_learning.jpg
Chest Pain Blocked Arteries Weight Heart Disease Sample Weight
Yes Yes 205 Yes \frac{1}{8}
No Yes 180 Yes \frac{1}{8}
Yes No 210 Yes \frac{1}{8}
Yes Yes 167 Yes \frac{1}{8}
No Yes 156 No \frac{1}{8}
No Yes 125 No \frac{1}{8}
Yes No 168 No \frac{1}{8}
Yes Yes 172 No \frac{1}{8}
Gini Index stump
0.47 Chest Pain
0.5 Blocked Arteries
0.2 Weight > 176

我们通过比较他们Gini指数知道以(Weight > 176)的 stump 效果最好,所有就选择这个 stump 作为第一颗 stump。我们之前已经说到不同 stump 具有不同话语权,那么我们看一看这个 stump 的话语权。这种话语权反映在 AdaBoost 模型中,就是每颗 stump 的权重。

我们先看一个样本,如下表,也就是心脏病患者虽然体重小于 176 但是被stump(weight > 16)误判为无心脏病。

Chest Pain Blocked Arteries Weight Heart Disease Sample Weight
Yes Yes 167 Yes \frac{1}{8}

对于 stump 做出所有的误判就可以用于衡量这颗 stump 的权重。这个例子 stump(Weight > 176) 误判是\frac{1}{8}。这是因为所有样本权重加和为 1 。所以所有通过误判样本的权重总和也是在 0 到 1 之间。

话语权 = \frac{1}{2} \log \frac{1 - 总误差}{总误差}

可以根据上面公式来计算每颗 stump 的话语权。通过绘制曲线y = \frac{1}{2} \log \frac{1 - x}{x} 发现我们给这个函数一组介于 0和 1 之间的数字,也就是总错误时候,当 stump 表现优秀给出很小总误差时,这个函数就给出很大值,相反就会给出很小的值。

如果 stump 得到 0.5 总错误率,就说明他什么也没做,我们通过硬币也能得到这样效果,所以给他话语权就是 0 ,也就是他没有话语权。好现在我们一起实际计算一下

话语权 = \frac{1}{2} \log(7) = 0.97
好我们计算一下 stump(chest pain) 的话语权来巩固一下。在 stump(chest pain)做出了 3 次误判 \frac{3}{8}
话语权 = \frac{1}{2} \log (\frac{7}{3}) = 0.42

在开始时我们给每颗 stump 都是同一个权重\frac{1}{8} 也就是我们没有强调那些给某些分类器对样本做出正确分类。但是当第一颗 stump(Weight > 176) 对样本做出误判后,这样在构建下一颗 stump 我们就需要考虑到让他重点关注这个分错的样本,所以会加大其权重,为了保持权重和 1 所有也就是等于降低其他样本的权重

W_{upate} = W_{incorrect} \times e^{话语权}

其实就等于我们每一次通过计算得到话语权对每一个样本的权重进行缩放,为了更好理解是如何缩放的,我们可以看这个图。我们知道话语权越大也就是说明 stump 表现越好,也就是会增加分错样本的权重,相反则降低权重

\frac{1}{8} e^{0.97} = 0.33
这样也不难看出新得到权重 0.33 要大于之前 0.125 权重。然后我们通过下面式子来计算其他样本的权重
W_{upate} = W_{correct} \times e^{- 话语权}
从图不难看出当 stump 做的足够好则分对样本的权重几乎为 0。

当 stump 表现不佳时,分对样本权重样本缩放比例将接近于 1 也就是分对样本权重的会接近于之前样本的权重。

\frac{1}{8} e^{-0.97} = \frac{1}{8} \times 0.38 = 0.05

Chest Pain Blocked Arteries Weight Heart Disease Sample Weight New Weight
Yes Yes 205 Yes \frac{1}{8} 0.05
No Yes 180 Yes \frac{1}{8} 0.05
Yes No 210 Yes \frac{1}{8} 0.05
Yes Yes 167 Yes \frac{1}{8} 0.33
No Yes 156 No \frac{1}{8} 0.05
No Yes 125 No \frac{1}{8} 0.05
Yes No 168 No \frac{1}{8} 0.05
Yes Yes 172 No \frac{1}{8} 0.05

接下来工作就是我们对新的样本权重进行归一化,使得他们权重和为 1。所以每一个新权重都除以他们的和 0.68

Chest Pain Blocked Arteries Weight Heart Disease Sample Weight New Weight
Yes Yes 205 Yes \frac{1}{8} 0.07
No Yes 180 Yes \frac{1}{8} 0.07
Yes No 210 Yes \frac{1}{8} 0.07
Yes Yes 167 Yes \frac{1}{8} 0.49
No Yes 156 No \frac{1}{8} 0.07
No Yes 125 No \frac{1}{8} 0.07
Yes No 168 No \frac{1}{8} 0.07
Yes Yes 172 No \frac{1}{8} 0.07

然后基于新的权重我们来计算下一颗 stump,理论上我们是基于新的样本权重来就算 Gini 指数来决定通过如何划分特征的到第 2 颗 stump。
加权 Gini 指数将更加强调那些上一个 stump 分类错误这个样本。

或者,我们可以创建一个新的样本集合,其中包含具有最大样本权重的样本的副本,而不是使用加权 Gini 指数。

然后我们可以随机选取 0 到 1 之间的数。当我们使用样本权重来作为分布,可以看到这个数字的落在那个位置。如何权重在 0 到 0.07 之间,将样本放置新的样本集合,然后当样本位于 0.07 到 0.14 之间我们可以将样本放置新的集合。

例如我们得到随机数是 0.72 ,好处就是改变样本排序

最后希望大家关注我们微信公众号


wechat.jpeg

相关文章

网友评论

    本文标题:2020机器学习AdaBoost (2)

    本文链接:https://www.haomeiwen.com/subject/ziekuhtx.html