随机森林[Breiman,2001]和XGBoost[Chen和Guestrin,2016]已成为最先进的机器学习方法,用于解决分类和回归中的许多挑战。LocalCascadeEnsemble(LCE)[Fauveletal.,2022]是一种新的机器学习方法,它结合了它们的优势并采用互补的多样化方法来获得更好的泛化预测因子。因此,LCE进一步增强了随机森林和XGBoost的预测性能。本文介绍了LCE和相应的Python包以及一些代码示例。LCE包与scikit-learn兼容并通过了check_estimator测试,因此可以轻松集成到scikit-learn管道中。LCE剖面集成方法的构建涉及结合相对准确和多样化的个体预测因子。有两种互补的方法可以生成不同的预测变量:(i)通过改变训练数据分布和(ii)通过学习训练数据的不同部分。LCE采用了这两种不同的方法。(i)LCE结合了两种众所周知的方法,它们修改原始训练数据的分布,对偏差方差权衡产生互补作用:装袋[Breiman,1996](方差减少)和提升[Schapire,1990](减少偏见)。(ii)LCE学习训练数据的不同部分,这些部分可以捕获基于分而治之策略(决策树)无法发现的全局关系。在详细介绍LCE如何组合这些方法之前,我们先介绍它们背后的关键概念,这些概念将用于解释LCE。偏差方差权衡定义了学习算法泛化到训练集之外的能力。高偏差意味着学习算法无法捕获训练集的底层结构(欠拟合)。高方差意味着算法在训练集上学习得太紧(过度拟合)。所有训练的目标都是最小化偏差和方差。Bagging对减少方差有重大影响:它是一种生成多个版本的预测变量(引导程序复制)并使用它们获得聚合预测变量的方法。目前最先进的套袋方法是随机森林。Boosting在减少偏差方面起着重要作用:它是一种迭代学习弱预测变量并将它们相加以创建最终强预测变量的方法。添加弱学习器后,重新加权数据,以便未来的弱学习器更加关注先前弱学习器预测错误的示例。当前使用提升的最先进方法是XGBoost。图1说明了bagging和boosting方法之间的区别。图1.植物病害数据集的Bagging和Boosting。n-估计器的数量。新的集成方法LCE结合了boosting-bagging方法来处理机器学习模型面临的bias-variancetrade-off;此外,它采用分而治之的方法来个性化训练数据不同部分的预测误差。LCE如图2所示。图2.LocalCascadeEnsembleontheplantdiseasesdataset,参考图1,蓝色为Bagging,红色为Boosting。n—树的数量,XGB—XGBoost。具体来说,LCE基于级联泛化:它按顺序使用一组预测变量,并在每个阶段向输入数据集添加新属性。新属性来自预测器给出的输出(例如,分类器的类别概率),称为基学习器。LCE采用分而治之的策略(决策树)在局部应用级联泛化,并通过使用基于提升的预测器作为基础学习器来减少决策树的偏差。LCE使用性能最佳的最先进的提升算法作为基学习器(XGBoost,如图2中的XGB1?、XGB11)。在树构建过程中,每个决策节点的基础学习器的输出作为一个新属性(例如,图2中的XGB1?(D1))添加到数据集,以向下传播树。预测输出表示基学习器正确预测样本的能力。在下一个树级别,添加到数据集的输出被基础学习器用作加权方案,以便更多地关注以前预测错误的样本。最后,通过使用bagging减轻了由boostedtrees引起的过度拟合。Bagging通过从随机样本创建多个预测变量并通过简单多数投票聚合树来替换原始数据集(例如,图2中的D1、D2)来减少方差。LCE将基学习器生成的模型存储在每个节点中。缺失数据的处理。与XGBoost类似,LCE排除分离的缺失值并使用块传播。在节点分裂过程中,块传播将所有缺失数据样本发送到错误较少的决策节点一侧。LCE的超参数是基于树的学习中的经典超参数(例如,max_depth、max_features、n_estimators)。此外,LCE在树的每个节点上学习特定的XGBoost模型,它只需要指定XGBoost超参数的范围。然后,Hyperopt[Bergstra等人,2011年]自动设置每个XGBoost模型的超参数,Hyperopt是一种使用Parzen估计树算法的基于序列模型的优化。Hyperopt从先前的选择和基于树的优化算法中选择下一个超参数。Parzen估计树的最终结果通常与超参数设置的网格搜索和随机搜索性能相当,并且在大多数情况下优于网格搜索和随机搜索性能。它是在[Fauvel等人,2022]公共UCI数据集[Dua和Graff,2017]上进行评估的。结果表明,与包括随机森林和XGBoost在内的最先进的分类器相比,LCE平均实现了更好的预测性能。Python包及代码示例LCE要求Python≥3.7,可直接使用pip安装pipinstalllcensembleconda使用以下命令安装condainstall-cconda-forgelcensembleLCE包兼容scikit-learn,可直接使用scikit-学习流水线和模型选择工具的交互。以下示例说明了如何使用LCE对公共数据集进行分类和回归任务。还显示了包含缺失值的数据集上的LCE示例。Iris数据集上的这个示例展示了如何训练LCE模型并将其用作预测器。它还通过使用cross_val_score演示了LCE与scikit-learn模型选择工具的兼容性。fromlceimportLCEClassifierfromsklearn.datasetsimportload_irisfromsklearn.metricsimportclassification_reportfromsklearn.model_selectionimportcross_val_score,train_test_split#加载数据并生成训练/测试splitdata=load_iris()X_train,X_test,y_train,y_test=train_test_split(data.data,data.target,random_state=0)#使用默认参数训练LCEClassifiersclf=LCEClassifier(n_jobs=-1,random_state=123)clf.fit(X_train,y_train)#进行预测并生成分类report_pred=clf.predict(X_test)print(classification_report(y_test,y_pred))print(cross_val_score(clf,data.data,data.target,cv=3))[0.980.940.96]这个例子说明了LCE对缺失值的稳健性。Iris训练集修改为每个变量有20%的缺失值。importnumpyasnpfromlceimportLCEClassifierfromsklearn.datasetsimportload_irisfromsklearn.metricsimportclassification_reportfromsklearn.model_selectionimporttrain_test_split#加载数据并生成训练/测试拆分data=load_iris()X_train,X_test,y_train,y_test=train_test_split(data.data,data.target,random_state=0)#Input20%ofmissingvaluespervariableinthetrainsetnp.random.seed(0)m=0.2forjinrange(0,X_train.shape[1]):sub=np.random.choice(X_train.shape[0],int(X_train.shape[0]*m))X_train[sub,j]=np.nan#使用默认参数训练LCEClassifierclf=LCEClassifier(n_jobs=-1,random_state=123)clf.fit(X_train,y_train)#Makepredictionandgenerateclassificationreporty_pred=clf.predict(X_test)print(classification_report(y_test,y_pred))最后,这个例子展示了如何在回归任务中使用LCE。fromlceimportLCERegressorfromsklearn.datasetsimportload_diabetesfromsklearn.metricsimportmean_squared_errorfromsklearn.model_selectionimporttrain_test_split#加载数据并生成训练/测试拆分data=load_diabetes()X_train,X_test,y_train,y_test=train_test_split(data.data,data.target,random_state=0)#使用默认参数训练LCERegressorreg=LCERegressor(n_jobs=-1,random_state=0)reg.fit(X_train,y_train)#进行预测y_pred=reg.predict(X_test)mse=mean_squared_error(y_test,reg.predict(X_test))print("Themeansquarederror(MSE)ontestset:{:.0f}".format(mse))#Themeansquarederror(MSE)ontestset:3556总结本文介绍LCE,是一种新的用于一般分类和回归任务的集成方法,该方法的作者也直接提供了相关的Python包,我们可以直接使用。https://avoid.overfit.cn/post/c10cc8f023484c95bab2bff5dd37c74c最后是本文的引用J。Bergstra、R.Bardenet、Y.Bengio和B.Kégl。超参数优化算法。在第24届国际神经信息处理系统会议论文集中,2011.L。布雷曼。装袋预测器。机器学习,24(2):123–140,1996.L.布雷曼。随机森林。机器学习,45(1):5–32,2001.T.Chen和C.Guestrin。XGBoost:一个可扩展的树提升系统。在第22届ACMSIGKDD知识发现与数据挖掘国际会议论文集中,2016.D。Dua和C.Graff。UCI机器学习库,2017.K。Fauvel、V.Masson、E.Fromont、P.Faverdin和A.Termier。实现可持续的乳品管理——一种用于发情期检测的机器学习增强方法。在第25届ACMSIGKDD知识发现和数据挖掘国际会议论文集中,2019.K。Fauvel、E.Fromont、V.Masson、P.Faverdin和A.Termi呃。XEM:一种用于多元时间序列分类的可解释设计集成方法。数据挖掘和知识发现,36(3):917–957,2022.R.沙皮尔。弱学习能力的优势。机器学习,5(2):197–227,1990.作者:KevinFauvel
