使用随机森林作为带有 adaboost 的基础分类器

     2023-03-12     292

关键词:

【中文标题】使用随机森林作为带有 adaboost 的基础分类器【英文标题】:using random forest as base classifier with adaboost 【发布时间】:2021-07-02 17:33:55 【问题描述】:

我可以将 AdaBoost 与随机森林一起用作基础分类器吗?我在互联网上搜索,我没有找到任何人这样做。

就像下面的代码;我尝试运行它,但它需要很多时间:

estimators = Pipeline([('vectorizer', CountVectorizer()),
                       ('transformer', TfidfTransformer()),
                       ('classifier', AdaBoostClassifier(learning_rate=1))])

RF=RandomForestClassifier(criterion='entropy',n_estimators=100,max_depth=500,min_samples_split=100,max_leaf_nodes=None,
                          max_features='log2')


param_grid=
    'vectorizer__ngram_range': [(1,2),(1,3)],
    'vectorizer__min_df': [5],
    'vectorizer__max_df': [0.7],
    'vectorizer__max_features': [1500],

    'transformer__use_idf': [True , False],
    'transformer__norm': ('l1','l2'),
    'transformer__smooth_idf': [True , False],
     'transformer__sublinear_tf': [True , False],

    'classifier__base_estimator':[RF],
    'classifier__algorithm': ("SAMME.R","SAMME"),
    'classifier__n_estimators':[4,7,11,13,16,19,22,25,28,31,34,43,50]

我尝试使用 GridSearchCV,将 RF 分类器添加到 AdaBoost 参数中。 如果我使用它会提高准确性吗?

【问题讨论】:

【参考方案1】:

简短回答: 这并非不可能。 不知道理论上这样做有没有问题,但是我试了一次,准确率提高了。

长答案:

我在具有 n 行 p 实值特征和长度为 n 的标签列表的典型数据集上进行了尝试。如果重要的话,它们是通过 DeepWalk 算法获得的图中节点的嵌入,并且节点分为两类。我使用 5 折交叉验证在这些数据上训练了一些分类模型,并测量了它们的常用评估指标(精度、召回率、AUC 等)。我使用的模型是 SVM、逻辑回归、随机森林、2 层感知器和带有随机森林分类器的 Adaboost。最后一个模型,带有随机森林分类器的 Adaboost,产生了最好的结果(95% AUC 与多层感知器的 89% 和随机森林的 88% 相比)。当然,现在运行时间增加了 100 倍,但仍然是 20 分钟左右,所以这对我来说不是一个限制。

以下是我的想法:首先,我正在使用交叉验证,因此可能不会出现过拟合现象。其次,两者都是集成学习方法,但随机森林是一种装袋方法,而 Adaboost 是一种提升技术。也许它们仍然有足够的不同以使它们的组合有意义?

【讨论】:

【参考方案2】:

难怪您实际上没有看到任何人这样做 - 这是一个荒谬和糟糕的主意。

您正在尝试构建一个集成 (Adaboost),它本身由集成基分类器 (RF) 组成 - 本质上是一个“集成平方”;所以,难怪计算时间长。

但即使它是实用的,也有很好的理论理由这样做;引用我在Execution time of AdaBoost with SVM base classifier 中的回答:

Adaboost(和类似的集成方法)是使用决策树作为基础分类器(更具体地说,决策 stumps,即深度仅为 1 的 DTs)构思的;如果您没有明确指定base_classifier 参数,那么今天仍然有充分的理由假设DecisionTreeClassifier(max_depth=1) 的值。 DT 适合这种集成,因为它们本质上是不稳定分类器,而 SVM 则不是这种情况,因此后者在用作基分类器时预计不会提供太多。

最重要的是,SVM 在计算上比决策树(更不用说决策stumps)要昂贵得多,这就是您观察到处理时间长的原因。

该论点也适用于 RF - 它们不是不稳定分类器,因此在将它们用作提升算法(如 Adaboost)的基础分类器时,没有任何理由真正期望性能改进。

【讨论】:

具有所有自变量作为分类的随机森林回归器

...35个唯一值),并且要预测的y值是天数(数值)。我正在使用随机森林 查看详情

adaboost

...成。代表算法是boosting系列算法。在boosting系列算法中,Adaboost是最著名的算法之一。第二类是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(RandomForest)系列算法。。Adaboost既... 查看详情

sparkrandomforestclassifier随机森林分类

...征缩放,并且能够捕获非线性和特征交互。spark.mllib支持使用连续和分类功能对二元和多类分类以及进行回归的随机森林。基础算法随机森林分别训练一组决策树,因此可以并行进行训练。该算法将随机性注入训练过程中 查看详情

机器学习系列-bagging与随机森林

...agging集成学习算法有两个大类:一个是Boosting,代表算法是AdaBoost;另一个是Bagging,本文介绍的随机森林是它的一个变种。Bagging也叫自举汇聚法(bootstrapaggregating),它在原始数据集上通过有放回抽样重新选出(T)个包含(m)条数据的... 查看详情

第九篇:随机森林(randomforest)

... 随机森林非常像《机器学习实践》里面提到过的那个AdaBoost算法,但区别在于它没有迭代,还有就是森林里的树长度不限制。    因为它是没有迭代过程的,不像AdaBoost那样需要迭代,不断更新每个样本以及子... 查看详情

决策树随机森林adaboost

...?信息增益  ?ID3、C4.5、CART?Bagging与随机森林?提升  ?Adaboost/GDBT ?熵、互信息  熵是对平均不确定性的度量。  平均互信息:得知特征Y的信息而使得对标签X的信息的不确定性减少的程度。描述随机变量之间的相似程度... 查看详情

随机森林(rf)的原理

...里就对bagging算法的流程做一个总结。相对于Boosting系列的Adaboost和GBDT,bagging算法要简单的多。输入为样本集D=(x1,y1),(x2,y2),...(xm,ym),弱学习器算法,弱分类器迭代次数T。输出为最终的强分类器f(x).1)对于t=1,2...,T:理解了bagging算法... 查看详情

随机森林算法基础梳理(代码片段)

...成方法,其中参与训练的基础学习器按照顺序生成(例如AdaBoost)。序列方法的原理是利用基础学习器之间的依赖关系。通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果。并行集成方法,其中参与训... 查看详情

如何更好地使用 Adaboost 分类器?

】如何更好地使用Adaboost分类器?【英文标题】:HowcanIuseAdaboostClassfierbetter?【发布时间】:2020-11-0121:13:28【问题描述】:我必须在python中解决一个多类分类问题。我开始使用ensemble,我从adaboostclassfier开始,但在gridsearch之后我得... 查看详情

随机森林:预测 vs predict_proba

...述】:我正在研究一个多类、高度不平衡的分类问题。我使用随机森林作为基础分类器。我必须在考虑多个标准(指标:precision,recallconf_matrix,roc_auc)的评估集上给出模型性能报告。模型火车:rf=RandomForestCla 查看详情

使用 OpenCV 随机森林进行回归

】使用OpenCV随机森林进行回归【英文标题】:UsingOpenCVRandomForestforRegression【发布时间】:2014-08-1105:01:21【问题描述】:我之前使用随机森林进行分类任务,使用示例here作为指导设置参数。它工作完美。但是现在我想解决一个回... 查看详情

其他参数中的参数 - 在集成学习中使用带有随机森林的引导聚合

】其他参数中的参数-在集成学习中使用带有随机森林的引导聚合【英文标题】:Parametersinsideotherparameters-usingbootstrapaggregationwithrandomforestsinensemblelearning【发布时间】:2019-06-2611:34:38【问题描述】:假设我决定使用集成方法-如果... 查看详情

Scikit learn - 如何使用 SVM 和随机森林进行文本分类?

】Scikitlearn-如何使用SVM和随机森林进行文本分类?【英文标题】:Scikitlearn-HowtouseSVMandRandomForestfortextclassification?【发布时间】:2014-03-2506:54:27【问题描述】:我有一组trainFeatures和一组testFeatures,带有正面、中性和负面标签:train... 查看详情

使用带有特征和类名称的 graphviz 可视化随机森林中的树

】使用带有特征和类名称的graphviz可视化随机森林中的树【英文标题】:Visualisingtreesfromrandomforestusinggraphvizwithfeatureandclassnames【发布时间】:2021-08-1507:19:13【问题描述】:我已经使用randomsearchCV训练了一个随机森林分类器,并且... 查看详情

拟合 scikit-learn 决策树和随机森林分类器时的 MemoryError

...有86k行、5个特征和1个目标列的pandasDataFrame。我正在尝试使用70%的DataFrame作为训练数据来训练Dec 查看详情

adaboost原理和实现

上两篇说了决策树到集成学习的大概,这节我们通过adaboost来具体了解一下集成学习的简单做法。集成学习有bagging和boosting两种不同的思路,bagging的代表是随机森林,boosting比较基础的adaboost,高级一点有GBDT,在这里我也说下我... 查看详情

如何评估随机森林分类器的性能?

...【发布时间】:2015-05-2218:56:58【问题描述】:我最近开始使用Python中的随机森林实现,使用scikitlearnsklearn.ensemble.RandomForestClassifier。我在Kaggle上找到了一个示例脚本,用于使用随机森林(见下文)对土地覆盖物进行分类,我 查看详情

强制随机森林分类器使用所有输入特征?

】强制随机森林分类器使用所有输入特征?【英文标题】:Forcetherandomforestclassifiertousealltheinputfeatures?【发布时间】:2020-07-0610:38:35【问题描述】:为了执行二元预测,我有5个特性要用于我的随机森林分类器,其中两个根本没有... 查看详情