我为一个项目实现了Adaboost,但不确定我是否正确理解了adaboost。这是我实现的方法,请让我知道这是否是正确的解释。

  • 我的弱分类器是8个不同的神经网络。经过全面训练后,这些方法中的每一个都可以预测约70%的准确性。
  • 我充分训练了所有这些网络,并在训练集上收集了它们的预测;所以我对训练集有8个预测向量。

  • 现在,我使用adaboost。我对adaboost的解释是,它将找到最终的分类器,作为我在上面训练过的分类器的加权平均值,其作用是找到这些权重。因此,对于每个训练示例,我都有8个预测,并且使用adaboost权重将它们组合在一起。请注意,通过这种解释,弱分类器在adaboost迭代过程中不会重新训练,只对权重进行更新。但是,更新后的权重实际上会在每次迭代中创建新的分类器。

    这是伪代码:
    all_alphas = []
    all_classifier_indices = []
    initialize all training example weights to 1/(num of examples)
    compute error for all 8 networks on the training set
    for i in 1 to T:
          find the classifier with lowest weighted error.
          compute the weights (alpha) according to the Adaboost confidence formula
          Update the weight distribution, according to the weight update formula in Adaboost.
          all_alphas.append(alpha)
          all_classifier_indices.append(selected_classifier)
    

    T迭代之后,有T alphas和T分类器索引;这些T分类器索引将指向8个神经网络预测向量之一。

    然后在测试集上,对于每个示例,我都通过对alpha*classifier求和来进行预测。

    我想将adaboost与神经网络结合使用,但是我认为我误解了adaboost算法。

    最佳答案

    提升摘要:

    1-通过使用训练数据训练您的第一个弱分类器

    2-训练有素的分类器在一些样本上犯了错误,并对其他样本进行了正确分类。增加错误分类的样本的权重,减少正确分类的样本的权重。使用这些权重重新训练您的分类器,以获得第二分类器。

    在您的情况下,您首先必须使用这些更新的权重从数据中重新采样并进行替换,创建新的训练数据,然后在这些新数据上训练分类器。

    3-重复第2步T次,并在每个回合结束时,根据公式计算分类器的alpha权重。
    4-最终分类器是T个分类器的决策的加权和。

    希望从该解释中可以清楚地看出您做错了一点。无需使用新数据集来重新训练网络,而是可以在整个原始数据集中对其进行训练。实际上,您使用的是随机森林类型分类器(除了您使用的是NN而不是决策树)外。

    PS:无法保证提升会提高准确性。实际上,到目前为止,我所知道的所有增强方法都无法提高作为弱学习者的NN的准确性(原因是因为增强的工作方式并且需要进行更长时间的讨论)。

    关于machine-learning - 神经网络的Adaboost,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35691636/

    10-12 19:25