Adaboost与神经网络

san*_* mk 4 machine-learning neural-network adaboost

我为一个项目实施了Adaboost,但我不确定我是否正确理解了adaboost.这是我实施的内容,如果是正确的解释,请告诉我.

  1. 我的弱分类器是8种不同的神经网络.在完全训练之后,每个预测都具有大约70%的准确度.
  2. 我完全训练所有这些网络,并收集他们对训练集的预测; 所以我在训练集上有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)
Run Code Online (Sandbox Code Playgroud)

经过T反复,有T阿尔法和T分类指数; 这些T分类器索引将指向8个神经网络预测向量之一.

然后在测试集上,对于每个例子,我通过总结来预测alpha*classifier.

我想在神经网络中使用adaboost,但我认为我错误地解释了adaboost算法错误.

TNM*_*TNM 7

提升摘要:

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

2-第一个训练有素的分类器会对某些样本产生错误并对其他样本进行正确分类 增加错误分类的样品的重量并减少正确样品的重量.使用这些权重重新分类您的分类器以获得第二个分类器.

在您的情况下,您首先必须使用这些更新的权重重新取样并使用数据替换,创建新的训练数据,然后通过这些新数据训练分类器.

3-重复第二步T次,在每轮结束时,根据公式计算分类器的α重量.4-最终分类器是T分类器决策的加权和.

从这个解释中可以清楚地看出,你做错了.您没有使用新数据集重新训练您的网络,而是在原始数据集上对它们进行了全程培训.事实上,你有点使用随机森林类型分类器(除了你使用NN而不是决策树)集合.

PS:无法保证提升可提高准确度.事实上,到目前为止,我所知道的所有提升方法都不能成功提高NN作为弱学习者的准确性(原因在于提升的方式有效,需要更长时间的讨论).

  • 谢谢,我改为直接在损失函数中使用adaboost给出的权重.现在对每个训练样例加权损失,权重来自adaboost (2认同)