Algorithm 这种行为正确吗?

Algorithm 这种行为正确吗?,algorithm,classification,adaboost,Algorithm,Classification,Adaboost,我正在实现论文中描述的AdaBoost,以供自己借鉴。在对算法进行单元测试的过程中,我发现了一些奇怪的行为。有可能这只是算法在屏蔽数据上的奇怪行为,也有可能我遗漏了什么。我想知道是哪种情况 首先,我有: 2 instances of A type faces 1 instance of a B type face 3 instances of noise -------------------- 6 total instances 因此,每个图像的初始权重为1/6 分类器选择的第一个特征识别

我正在实现论文中描述的AdaBoost,以供自己借鉴。在对算法进行单元测试的过程中,我发现了一些奇怪的行为。有可能这只是算法在屏蔽数据上的奇怪行为,也有可能我遗漏了什么。我想知道是哪种情况

首先,我有:

2 instances of A type faces
1 instance  of a B type face
3 instances of noise
--------------------
6 total instances
因此,每个图像的初始权重为
1/6

分类器选择的第一个特征识别A型面,但不识别B型面,也不识别任何噪声。因此,它的错误(以及增强分类器中的相关权重)为
1/6

接下来更新权重(首先将正确分类的图像乘以
(error/1-error))==0.2,得到:

A type face weight: 1/30
B type face weight: 1/6
noise image weight: 1/6
然后将权重归一化(总和为1):

第二个功能可以正确选择B类型图像,但不能选择噪波或A类型图像。因此,它的错误为
1/11
2/22
),明显小于
1/6

因为Viola Jones提出的“默认”阈值(这是在我们讨论cascades和本文后面部分中的调整阈值之前)是权重的一半,并且只有两个权重,第二个特征的权重更大(因为它具有更低的误差)然后,得到的增强分类器只能正确地对B型面进行分类

直观地说,我希望有一个强分类器,由检测a面的弱分类器和检测B面的弱分类器组成,以检测a面和B面

我甚至愿意接受,我只会得到两张中的一张,因为AdaBoost是一种多数投票算法,可能会在只有两张投票人的情况下表现得很奇怪,但我认为如果它只会正确地分类其中一张脸,那么它会正确地分类a脸,因为a脸的数量更多

换言之,我希望每个弱分类器添加到强分类器后,其权重会依次降低


我是否遗漏了一个步骤,或者这只是过于简单的数据的奇怪行为?

计算中有一个错误。使用第一个特征时,错误为1/6,因为只有B面被错误分类。在这种情况下,噪波和A面分类正确。因此,当您根据w(i)=w(i)*beta^(1-e(i))更新权重时,只有B面e(i)等于1。对于面和噪声e(i)=0。因此,将更新噪波和A面的权重:

A type face weight: 1/30
B type face weight: 1/6
noise image weight: 1/30
正常化后:

A type face weight: 1/10
B type face weight: 1/2
noise image weight: 1/10

现在,当您使用第二项功能时,错误为1/5。

您完全正确。我只是减少了正确分类的人脸的权重,而不是正确分类的非人脸的权重。现在效果好多了。我会在可能的时候(必须等24小时)奖励赏金。
A type face weight: 1/10
B type face weight: 1/2
noise image weight: 1/10