关于 Adaboost 算法中的采样过程

机器算法验证 r 机器学习 采样 数据挖掘 助推
2022-03-31 12:55:17

AdaBoost 算法说明它是根据训练数据根据一个权重向量训练一个分类器。

假设训练数据的大小为 N,权重向量的维数也是 N。关于这个抽样程序,我有三个问题,

1)采样数据的大小会和原始数据集一样吗?2)权重向量是什么样的?如果它是一个分布,那么它们的总和必须为 1。是否可能有一个包含整数条目的权重向量?3)一般来说,哪种算法可用于根据给定的权重向量或分布对数据集进行采样?

1个回答

训练 Adaboost 有两种方法。要么直接在弱学习器的训练中使用权重向量,要么使用权重向量对原始数据中的数据点进行替换采样。

在后一种情况下,采样数据集与原始数据集大小相同,并且将包含一些重复的数据点。权重向量通常是一个分布,因为它使绘制加权样本更容易,但任何权重向量都将在归一化后起作用。对新数据集进行采样的最简单方法是使权重向量成为概率分布,计算其累积分布函数,然后在范围内生成 N 个随机双精度数。然后测试看看随机数在哪个区间内。(0,1]

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

有些方法不是,但这更容易理解。O(n2)