Logistic Regression 模型和 Ensemble 模型(Bagging 和 Boosting)之间没有区别
Posted
技术标签:
【中文标题】Logistic Regression 模型和 Ensemble 模型(Bagging 和 Boosting)之间没有区别【英文标题】:No difference between Logistic Regression model and Ensemble models (Bagging and Boosting) 【发布时间】:2021-11-15 18:26:42 【问题描述】:我试图将逻辑回归模型和一些集成模型(装袋和提升)与逻辑回归作为其基本估计量进行比较。但是,令人惊讶的是,我在所有三个分类器上都得到了相同的分数:
LogisticRegression()
BaggingClassifier(base_estimator=LogisticRegression())
AdaBoostClassifier(base_estimator=LogisticRegression())
这是我的代码,请帮助我。
lr = LogisticRegression()
lr.fit(x_train, y_train).score(x_test, y_test)
bagging_clf = BaggingClassifier(base_estimator=LogisticRegression(), n_estimators=50, bootstrap=True)
bagging_clf.fit(x_train, y_train).score(x_test, y_test)
adaboost_clf = AdaBoostClassifier(base_estimator=LogisticRegression(), learning_rate=1, n_estimators=50)
adaboost_clf.fit(x_train, y_train).score(x_test, y_test)
所有分类器的得分为 0.9063627039010026。
【问题讨论】:
您将相同的 LogisticRegression 对象传递给所有估算器,该对象由 lr 引用。我猜他们都操纵同一个对象,你基本上得到了最后一个估计器的结果。尝试将 base-estimator=lr 替换为 base_estimator=LogisticRegression(),以便每个估算器都有自己的对象来处理。 谢谢,我已经尝试替换 base_estimator,结果仍然没有改变。我尝试对 base_model 使用 DecisionTreeClassifier(),它为每个模型提供了不同的结果(Bagging = 0.935810475465705,AdaBoost = 0.8818118651358237,DecisionTreeClassifier 本身给出 0.8816795156007015) 【参考方案1】:Bagging 和 boosting 分别适用于非常过拟合和非常欠拟合的基础模型。用逻辑回归做任何一个都不太可能产生显着的效果。您可能确实得到了一些更改,但您只报告了score
,默认情况下将是准确度分数;如果您的测试规模较小,则可能没有太多不同的值。
【讨论】:
非常感谢您的回答,是的,我使用的是一个小数据集,当使用更多观察的数据集时,我得到了不同的结果。以上是关于Logistic Regression 模型和 Ensemble 模型(Bagging 和 Boosting)之间没有区别的主要内容,如果未能解决你的问题,请参考以下文章
Logistic Regression 模型和 Ensemble 模型(Bagging 和 Boosting)之间没有区别
逻辑回归模型(Logistic Regression)及Python实现