Gentle adaboost解释

1 算法原理

1.1 Gentle adaboost

这里写图片描述

参考文献: 

1.2 算法实现2

参考

  实现Gentle Adaboost的关键是要能估计出后验概率,即给定特征向量 x 的情况下,估计出当前权值分布下的该样本正样本的概率Pω(y=1|x)
  在Gentle Adaboost中,弱分类器定义为:
  公式(1)
  

f(x)=Pw(y=1|x)Pw(y=1|x)

  在特征向量是1维的情况下,可以利用lookup table将特征的取值范围分为 多个区间,然后通过统计每个区间中的权值总和来估计后验概率。具体来说,令 W+1i W1i 分别表示第 i 个区间B(i)内正负样本权值的总和。
  
W+1i=xjB(i),yj=1wj
W1i=xjB(i),yj=1wj

后验概率为:
公式(2)
Pw(y=1|xB(i))=W+1iW+1i+W1i
Pw(y=1|xB(i))=W1iW+1i+W1i

将公式(2)代入公式(1)即可得到弱分类器。
如下公式(3):
f(x)=W+1iW1iW+1i+W1i

Gentle adaboost代码段
  for i = 1:length(nodes)
    curr_tr = nodes{i};

    step_out = calc_output(curr_tr, Data); %节点分裂没有体现least-squres原则??

    s1 = sum( (Labels ==  1) .* (step_out) .* distr);
    s2 = sum( (Labels == -1) .* (step_out) .* distr);

    if(s1 == 0 && s2 == 0)
        continue;
    end
    Alpha = (s1 - s2) / (s1 + s2); %%弱分类器结果。与公式(3)一致

    Weights(end+1) = Alpha;

    Learners{end+1} = curr_tr;

    final_hyp = final_hyp + step_out .* Alpha;    
  end

  distr = exp(- 1 * (Labels .* final_hyp));
  Z = sum(distr);
  distr = distr / Z;  

end
1.3算法实现3

openCV中对Gentle Adaboost算法弱分类器训练流程如下:
这里写图片描述
openCV中,节点分裂规则为均方误差法则。
这里写图片描述
强分类器训练流程为:
这里写图片描述

  • 可以看出,leftevaluerightvalue为节点左右分裂结果
  • 同时也是弱分类器的输出结果,他们可看作某一区域划分 B(1)B(+1) 的弱置信度.
  • leftvalue 和 rightvalue 可看作y的均值,lefterror 和righterror可看作 y的均方误差。
      可以看出:
    leftvalue=f(x)left=iwiyiiwi=yi=1wiyi+yi=1wiyiiwi=yi=1wiyi=1wiyi=1wi+yi=1wi=W+1iW1iW+1i+W1i
    同理 rightvalue 可得同样结论。

2 原理推导

这里写图片描述
  
  
  
参考文献:《基于Gentle Adaboost的行人检测》
《基于AdaBoost检测器的似然估计方法》
《采用Gentle AdaBoost和嵌套级联结构的实时人脸检测》
《Additive Logistic Regression: a Statistical View of Boosting》
http://blog.csdn.net/wsj998689aa/article/details/42652827

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值