AdaBoost 算法说明它是根据训练数据根据一个权重向量训练一个分类器。
假设训练数据的大小为 N,权重向量的维数也是 N。关于这个抽样程序,我有三个问题,
1)采样数据的大小会和原始数据集一样吗?2)权重向量是什么样的?如果它是一个分布,那么它们的总和必须为 1。是否可能有一个包含整数条目的权重向量?3)一般来说,哪种算法可用于根据给定的权重向量或分布对数据集进行采样?
AdaBoost 算法说明它是根据训练数据根据一个权重向量训练一个分类器。
假设训练数据的大小为 N,权重向量的维数也是 N。关于这个抽样程序,我有三个问题,
1)采样数据的大小会和原始数据集一样吗?2)权重向量是什么样的?如果它是一个分布,那么它们的总和必须为 1。是否可能有一个包含整数条目的权重向量?3)一般来说,哪种算法可用于根据给定的权重向量或分布对数据集进行采样?
训练 Adaboost 有两种方法。要么直接在弱学习器的训练中使用权重向量,要么使用权重向量对原始数据中的数据点进行替换采样。
在后一种情况下,采样数据集与原始数据集大小相同,并且将包含一些重复的数据点。权重向量通常是一个分布,因为它使绘制加权样本更容易,但任何权重向量都将在归一化后起作用。对新数据集进行采样的最简单方法是使权重向量成为概率分布,计算其累积分布函数,然后在范围内生成 N 个随机双精度数。然后测试看看随机数在哪个区间内。
for i = 1:N
rnd = new Random(0.0,1.0)
for j = 1:N
if (cdf(j) < rnd)
samplePoint(i) = dataPoint(j)
end
end
end
有些方法不是,但这更容易理解。