问题标签 [adaboost]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Adaboost 影响修剪需要更长的训练时间
OpenCV 文档指出,影响修剪可用于“减少提升模型的计算时间,但会大大降低准确性” 。默认情况下,weight_trim_rate 参数为 0.95。通过将该参数更改为 0 来禁用影响训练后,我实际上实现了很大的加速。当使用包含 262144 个样本的数据集时,我实现了 5 倍的加速。当使用十倍大的数据集时,我实现了 3 倍的加速。这似乎与预期的行为相反。谁能解释为什么会发生这种情况?谢谢!
下面添加了一些示例数据。这里的基本情况是禁用影响调整。这给出了 95.03 的准确度和 10.607 的训练时间。当打开影响修剪(默认为 0.95)时,准确率按预期下降到 94.94,但训练时间需要 5 倍。
示例代码:
algorithm - 这种 AdaBoost 行为是否正确?
我正在实施Viola-Jones论文中描述的 AdaBoost,以供我自己启迪。在对算法进行单元测试的过程中,我发现了一些奇怪的行为。这可能只是算法对预设数据的奇怪行为,或者我可能遗漏了一些东西。我想知道是哪种情况。
首先,我有:
所以每张图片的初始权重为1/6
.
分类器选择的第一个特征识别 A 类人脸,但不是 B 类人脸,也不是任何噪声。因此,它的误差(以及增强分类器中的相关权重)为1/6
.
接下来更新权重(首先将正确分类的图像乘以(error / 1 - error)) == 0.2
产生:
然后将权重归一化(总和为 1):
第二个特征正确地选择了 B 型图像,而不是噪声或 A 型图像。因此,它有一个1/11
( 2/22
) 的误差,明显小于1/6
。
由于 Viola-Jones 提出的“默认”阈值(这是我们在本文后面部分进行级联和调整阈值之前)是权重的一半,并且只有两个权重,而第二个特征的权重更大(因为它有一个较低的错误),那么得到的增强分类器只能正确地分类 B 型人脸。
直观地说,我希望一个强分类器由一个检测 A 面孔的弱分类器和一个检测 B 面孔以检测 A 和 B 面孔的弱分类器组成。
我什至愿意接受我只会得到两者之一,因为 AdaBoost 是一种多数投票算法,并且只有 2 个选民可能会表现得很奇怪,但我希望它只会正确分类其中一张脸那么它将正确分类 A 面,因为它们的数量更多。
换句话说,我希望每个添加到强分类器的弱分类器的权重都会依次降低。
我错过了一步还是这只是过于简单的数据的奇怪行为?
face-detection - 如何为人脸检测器的adaboost方法指定弱分类器的阈值
我已经阅读了 Rapid Object Detection using a Boosted Cascade of Simple Features。在第 3 部分中,它定义了一个弱分类器,如下所示:
我的问题是:如何指定阈值theta_j
?
对于强大的分类器,我的问题是这样的:
r - 在 R 中使用 foreach 进行并行提升
我经常使用 foreach 包在 R 中训练随机森林,我试图找到一个粗略的等价物来训练 adaboost 模型,但我遇到了如何组合结果的问题。randomForest 包具有“组合”功能,允许将多个 randomForest 对象组合成一个 RF 对象,是否有任何具有类似功能的增强包?我通常使用包 adabag,但我不知道如何组合输出的模型(或者是否有办法)。有没有人试过这个并想出一个解决方案?此代码段用于并行创建模型:
但后来我只是得到了一个模型列表而不是一个模型,我不知道如何组合它们。
matlab - 我应该在每次 AdaBoost 迭代中训练我的弱分类器吗?
我对机器学习甚至编程本身还很陌生,所以如果我要问的问题没有多大意义,我很抱歉。所以我一直在使用 5 种不同且不那么弱的分类器(5 个错误率在 0.25-0.3 左右的神经网络),我一直在为这些分类器实施 AdaBoost。我不明白的是,我是否必须在每次迭代中一遍又一遍地训练所有 5 个分类器,然后计算误差,如果是这样,我如何使用事实,即我应该在某些示例上“更努力地”训练(权重更高)?
classification - 自适应提升与 SVM
我正在研究二进制分类案例并比较不同分类器的性能。在多个数据集上测试Adaboost
算法的性能(以决策树为基分类器)SVM
,我发现该boosting
算法的性能更好。
我的问题是为什么会发生这种情况?这是因为boosting
总是表现出色SVM
吗?还是与我的数据集的特征有关?任何人都可以解释发生在我身上的事情吗?
image-processing - 收集adaboost算法的负样本进行人脸检测
Viola-Jones 的 AdaBoost 方法在人脸检测中非常流行?我们需要大量的正样本和负样本来训练人脸检测器。
收集正样本的规则很简单:包含人脸的图像。但是收集负样本的规则不是很明确:不包含人脸的图像。
但是有很多场景不包含人脸(可能是天空、河流、家畜等)。我应该收集哪个?如何知道我已经收集了足够的负样本?
一些关于负样本的建议:使用正样本并使用左侧部分作为负样本裁剪面部区域。这是工作吗?
opencv - 如何理解人脸检测xml
我已经使用 opencv_trainedcascade.exe 训练了面孔。我有一系列不同阶段的 xml 文件。每个 xml 文件都有内部节点和 leafVlaues,其中一个如下所示。
我的查询是(1)这些stageThreshold、internalNodes 和leafValues 是什么意思?(2)在实际的人脸检测中,它们在级联分类器中是如何使用的,我读了几篇关于Adaboost算法的论文。但我不是很明白。谢谢
machine-learning - 什么是使用 Adaboost(自适应提升)方法和决策树的示例
是否有任何好的教程来解释如何在为样本训练集构建决策树的连续迭代期间对样本进行加权?我想具体说明在构建第一棵决策树后如何分配权重。
决策树是使用信息增益作为锚点设计的,我想知道由于先前迭代中的错误分类被加权,这将如何影响。
任何好的教程/例子都非常感谢。