我正在研究AdaBoost分类器。这是数据集的图。(X,Y是预测列,颜色是标签)

正如你所看到的,任何一方都有16分,很容易被漏掉-分类。为了检查性能是如何随着n_estimators的增加而提高的,我使用了以下代码
for i in range(1,21):
clf = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2),
n_estimators=i,algorithm='SAMME')
clf.fit(X_df,y)
y_pred = clf.predict(X_df)
from sklearn.metrics import confusion_matrix as CM
#CM(y_pred,y_pred1)
#CM(y,y_pred1)
print(i,CM(y,y_pred))直至n_estimators = 13,所有32个点均未被分类。混淆矩阵是
[[84 16]
[16 84]](除了n_estimators=8之外,这里所有的红点都被正确分类了)
[[100 0]
[16 84]]从13岁起,它开始以一种奇怪的方式翻转。给出了混淆矩阵的顺序。
[[84 16] | [[ 84 16] | [[84 16] | [[ 84 16] | [[ 84 16] | [[100 0] | [[100 0] | [[84 16]
[16 84]] | [ 0 100]] | [16 84]] | [ 0 100]] | [ 0 100]] | [ 16 84]] | [ 0 100]] | [16 84]]显然,n_estimators=19的性能比n_estimators = 20要好。
有人能解释一下发生了什么以及是什么导致了这种行为吗?
发布于 2020-03-26 08:13:29
简而言之,AdaBoost的工作方式是对后续迭代进行训练,然后度量所有可用弱分类器的错误。在随后的每一次迭代中,错误限定的观测结果的“有效性”都会增加,从而使分类器更多地关注它们。因此,在每次迭代后(13次之后)都可以显示混淆矩阵。如果n_estimators=19看起来非常适合,那么对于n_estimators模型的更大值来说,就会出现过度匹配,这会带来更糟糕的性能。在您的情况下,请阅读有关早停。这种技术可以帮助您找到n_estimators的最佳价值。
https://scikit-learn.org/stable/auto_例子/合奏/情节_梯度_助推_早早_stopping.html
https://datascience.stackexchange.com/questions/70249
复制相似问题