我为一个项目实现了Adaboost,但我不确定我是否正确地理解adaboost。这是我所做的,如果是正确的解释,请告诉我。
现在我用adaboost。我对adaboost的解释是,它将找到一个最终的分类器,作为我上面训练过的分类器的加权平均值,它的作用是找到这些权重。所以,对于每一个训练例子,我都有8个预测,我用最棒的权重组合它们。请注意,通过这种解释,弱分类器在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算法。
发布于 2016-03-07 10:39:25
补充摘要:
1-使用训练数据训练你的第一个弱分类器
2-第一种训练分类器对某些样本进行错误分类,对其他样本进行正确的分类。增加错误分类样本的权重,减少正确分类样本的权重。用这些权重重新训练你的分类器,以得到你的第二个分类器。
在这种情况下,首先必须用这些更新的权重替换数据,创建一个新的培训数据,然后对这些新数据进行分类器的训练。
3-重复第二步T次,在每一轮结束时,根据公式计算分级机的α权值。最后一个分类器是T分类器决策的加权和。
希望从这个解释中可以清楚地看出,你做错了。与其用新的数据集重新培训您的网络,不如在原始数据集中对它们进行所有的培训。实际上,您使用的是随机森林类型分类器(除了使用NN而不是决策树)集合。
PS:没有任何保证,增加提高准确性。事实上,到目前为止,我所知道的所有助推方法都未能成功地提高作为弱学习者的神经网络的准确性(原因是助推的方式,需要更长的讨论)。
https://stackoverflow.com/questions/35691636
复制相似问题