将弱学习者与强分类器结合起来

AjM*_*een 6 artificial-intelligence classification machine-learning decision-tree adaboost

如何将少数弱学习者组合成一个强大的分类器?我知道这个公式,但问题是,在我读过的每篇关于AdaBoost的论文中,只有没有任何例子的公式.我的意思是 - 我的学习者和他们的体重很弱,所以我可以做公式告诉我做的事情(将学习者的体重乘以另一个乘以体重和另一个等等),但我究竟是怎么做到的?我的弱学习者是决策树桩.他们有属性和门槛,那么我会乘以什么呢?

Sli*_*Jim 6

如果我正确地理解了你的问题,那么你可以很好地解释如何将弱分类器连接成一个强大的分类器,并在这些讲义中包含大量图像:

www.csc.kth.se/utbildning/kth/kurser/DD2427/bik12/DownloadMaterial/Lectures/Lecture8.pdf

基本上你是通过采用分离超平面的加权组合创建一个更复杂的决策表面(在讲义中显示这一点的大图)

希望这可以帮助.

编辑

要做到这一点:

在第42页中,您可以看到alpha_t = 1/2*ln((1-e_t)/e_t)可以在for循环中轻松计算的公式,或者如果您正在使用矢量操作直接使用某些数字库(我使用的是非常好的numpy).这alpha_t是在adaboost里面计算的,所以我假设你已经有了这些.

你有第38页的数学公式,大sigma代表所有的总和. h_t是弱分类器函数,它返回-1(否)或1(是). alpha_t基本上是弱分类器有多好,因此在强分类器的最终决策(不是非常民主)中要说多少.

我从来没有真正使用过forloops,但是我会更容易理解并且更加独立于语言(这是pythonish伪代码):

strongclassifier(x):
    response=0
    for t in T: #over all weakclassifiers indices
        response += alpha[t]*h[t](x)
    return sign(response)
Run Code Online (Sandbox Code Playgroud)

这在数学上称为权重和弱响应之间的点积(基本上:强(x)= alpha*弱(x)).

http://en.wikipedia.org/wiki/Dot_product

EDIT2

这就是strongclassifier(x)中发生的事情:分离超平面基本上是在函数weak(x)中决定的,因此所有具有弱(x)= 1的x都位于超平面的一侧而弱(x)= - 1在超平面的另一边.如果你认为它在平面上有线条,你有一个平面将平面分成两部分(总是),一边是( - ),另一边是(+).如果你现在有三条三角形的无限线,它们的负面向外,你会得到三角形内的3(+)和外面的1或2( - ),(在强分类器中)进入一个积极的三角形区域,其余为负的.这是一个过度简化,但重点仍然存在,它在更高的维度上完全类似.