首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >降低n_estimators是提高AdaBoost精度的关键。

降低n_estimators是提高AdaBoost精度的关键。
EN

Data Science用户
提问于 2020-03-26 07:36:13
回答 1查看 2.1K关注 0票数 2

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

正如你所看到的,任何一方都有16分,很容易被漏掉-分类。为了检查性能是如何随着n_estimators的增加而提高的,我使用了以下代码

代码语言:javascript
复制
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个点均未被分类。混淆矩阵是

代码语言:javascript
复制
[[84 16]
 [16 84]]

(除了n_estimators=8之外,这里所有的红点都被正确分类了)

代码语言:javascript
复制
[[100 0]
 [16 84]]

从13岁起,它开始以一种奇怪的方式翻转。给出了混淆矩阵的顺序。

代码语言:javascript
复制
[[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要好。

有人能解释一下发生了什么以及是什么导致了这种行为吗?

EN

回答 1

Data Science用户

发布于 2020-03-26 08:13:29

简而言之,AdaBoost的工作方式是对后续迭代进行训练,然后度量所有可用弱分类器的错误。在随后的每一次迭代中,错误限定的观测结果的“有效性”都会增加,从而使分类器更多地关注它们。因此,在每次迭代后(13次之后)都可以显示混淆矩阵。如果n_estimators=19看起来非常适合,那么对于n_estimators模型的更大值来说,就会出现过度匹配,这会带来更糟糕的性能。在您的情况下,请阅读有关早停。这种技术可以帮助您找到n_estimators的最佳价值。

https://scikit-learn.org/stable/auto_例子/合奏/情节_梯度_助推_早早_stopping.html

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/70249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档