收藏 分销(赏)

人工智能和机器学习--PPT12-集成学习.pdf

上传人:w****g 文档编号:3313596 上传时间:2024-07-01 格式:PDF 页数:85 大小:2.20MB
下载 相关 举报
人工智能和机器学习--PPT12-集成学习.pdf_第1页
第1页 / 共85页
人工智能和机器学习--PPT12-集成学习.pdf_第2页
第2页 / 共85页
人工智能和机器学习--PPT12-集成学习.pdf_第3页
第3页 / 共85页
人工智能和机器学习--PPT12-集成学习.pdf_第4页
第4页 / 共85页
人工智能和机器学习--PPT12-集成学习.pdf_第5页
第5页 / 共85页
点击查看更多>>
资源描述

1、集成学习Bagging,Boosting and Stacking王秋月中国人民大学信息学院 问题问题:决策树容易过拟合决策树容易过拟合 剪枝有助于将方差剪枝有助于将方差(variance)减少)减少到一定程度到一定程度 通常使模型泛化的效通常使模型泛化的效果并不显著果并不显著决策树:高方差改进:使用多棵树改进:使用多棵树创建许多棵不同的树创建许多棵不同的树改进:使用多棵树改进:使用多棵树结合所有树的预测来降低方差结合所有树的预测来降低方差什么是集成学习训练多个学习器来完成预测任务(分类或回归),然后通过结合结合多个学习器的预测结果而得到最终的结果。简单平均 投票:硬投票、软投票“三个臭皮匠,

2、顶个诸葛亮”?“三个臭皮匠,顶个诸葛亮”?Francis Galton(1822-1911)英国科学家、探险家1.问题简单,且有唯一正确答案;2.独立、有差异的个体为什么?为什么?如何构建多个有差异的学习器 不同的机器学习模型 相同的机器学习模型,不同的训练数据集 不同的特征选择 不同的超参数BAGGING如何创建多棵树如何创建多棵树使用使用bootstrapping,即,即有放回的随机抽样有放回的随机抽样如何创建多棵树如何创建多棵树创建多个创建多个bootstrapped样本样本如何创建多棵树如何创建多棵树使用每个使用每个bootstrapped样本构建一棵决策树样本构建一棵决策树样本中的数

3、据分布(1-1/n)n00.250.300.350.4020406080100Number of BootstrappedSamples(n)给定一个包含给定一个包含n条记录的条记录的数据集,创建数据集,创建n个个bootstrapped样本样本 对于给定的一条记录对于给定的一条记录 x,每个每个bootstrapped样本样本包含大约包含大约2/3条记录条记录Vote toForm a Single Classifier聚集结果多棵树的结果通过多棵树的结果通过投票投票或者取或者取平均平均得到每个样例点的最终结果得到每个样例点的最终结果Vote toForm a Single Classifi

4、erDataPoint聚集结果多棵树的结果通过多棵树的结果通过投票投票或者取或者取平均平均得到每个样例点的最终结果得到每个样例点的最终结果Vote toForm a Single ClassifierResults聚集结果多棵树的结果通过多棵树的结果通过投票投票或者取或者取平均平均得到每个样例点的最终结果得到每个样例点的最终结果Vote toForm a Single Classifier聚集结果多棵树的结果通过多棵树的结果通过投票投票或者取或者取平均平均得到每个样例点的最终结果得到每个样例点的最终结果Vote to Form a Single ClassifierBagging=Bootst

5、rapAggregating聚集结果多棵树的结果通过多棵树的结果通过投票投票或者取或者取平均平均得到每个样例点的最终结果得到每个样例点的最终结果Bagging集成学习 bootstrapped样本为样本为每棵决策树提供了内每棵决策树提供了内置的错误率估算置的错误率估算 在数据子集上创建决策树在数据子集上创建决策树 用未使用的样例来计算用未使用的样例来计算那棵树的错误率那棵树的错误率Bagging错误率的计算 bootstrapped样本为样本为每棵决策树提供了内每棵决策树提供了内置的错误率估算置的错误率估算 在数据子集上创建决策树在数据子集上创建决策树 用未使用的样例来计算用未使用的样例来计算

6、那棵树的错误率那棵树的错误率Bagging错误率的计算 bootstrapped样本为样本为每棵决策树提供了内每棵决策树提供了内置的错误率估算置的错误率估算 在数据子集上创建决策树在数据子集上创建决策树 用未使用的样例来计算用未使用的样例来计算那棵树的错误率那棵树的错误率 称作“袋外(称作“袋外(out-of-bag)”错误率)”错误率Bagging错误率的计算 拟合一个拟合一个袋装模型不能袋装模型不能像逻辑回归一样产生系像逻辑回归一样产生系数数 特征的重要性因而要用特征的重要性因而要用袋外错误率(袋外错误率(oob error)来估算来估算 为某一特征随机地排列为某一特征随机地排列数据,并计

7、算精度的变数据,并计算精度的变化,用以衡量其重要性化,用以衡量其重要性特征重要度的计算 RF:袋外数据排列检验。:袋外数据排列检验。具体是打乱袋外数据中的具体是打乱袋外数据中的特征项(加入噪声),打特征项(加入噪声),打乱前后误差的绝对值反映乱前后误差的绝对值反映了该特征的重要性。了该特征的重要性。GBDT:特征的全局重要性:特征的全局重要性是所有树中该特征重要性是所有树中该特征重要性的均值,而单棵树中特征的均值,而单棵树中特征重要性等于该特征分裂导重要性等于该特征分裂导致的基尼不纯度减少之和。致的基尼不纯度减少之和。XGB:根据特征被选中为:根据特征被选中为分裂节点的次数和来判断分裂节点的次

8、数和来判断特征重要性。特征重要性。特征重要度的计算 Bagging模型的性能模型的性能随着树的数目增大随着树的数目增大而改进而改进 一般在大约一般在大约50棵树时获棵树时获得最大的改进得最大的改进RMSE(Cross-Validated)0100200300400500Numberof Bagged Trees拟合多少棵树?同决策树:同决策树:易于解释和实现 输入数据可以是异构的,不要求预处理特有的:特有的:比决策树的方差低 可以并行地构建多棵树Bagging的优势导入包含分类方法的类:导入包含分类方法的类:from sklearn.ensemble import BaggingClassif

9、ier创建该类的一个对象:创建该类的一个对象:BC=BaggingClassifier(n_estimators=50)拟合训练数据,并预测:拟合训练数据,并预测:BC=BC.fit(X_train,y_train)y_predict=BC.predict(X_test)使用交叉验证调参。回归用使用交叉验证调参。回归用BaggingRegressor。Bagging分类器的语法http:/scikit-learn.org/stable/modules/generated/sklearn.ensemble.BaggingClassifier.htmlBaggingClassifier参数设置ba

10、se_estimator基学习器在采样得到的数据子集上训练的基学习器。缺省值是None。等于None时,则使用决策树做基学习器。n_estimators基学习器个数用于集成的基学习器的个数。缺省值是10。max_samples最大样例个数从训练集中随机抽取的,用于训练每个基学习器的样例数目。缺省值是1.0。整数值表示抽取样例的个数;小数值表示抽取样例数占训练集的总样例数的比。max_features最大特征数从训练集中随机抽取的,用于训练每个基学习器的特征数目。缺省值是1.0。整数值表示抽取特征的个数;小数值表示抽取特征数占训练集的总特征数的比。有有 棵独立的决策树,棵独立的决策树,每棵树的方

11、差是每棵树的方差是 2,则则bagged方差是:方差是:2 然而,然而,bootstrap样本样本是相关的是相关的():RMSE(Cross-Validated)0100200300400500Numberof Bagged TreesBagging减少的方差 解决方案:进一步消除解决方案:进一步消除树之间的相关性树之间的相关性 每棵树使用一组每棵树使用一组随机抽取的特征:随机抽取的特征:分类:分类:回归:回归:/3RMSE(Cross-Validated)0100200300400500Numberof Bagged Trees引入更多的随机性WhyWhy?引入更多的随机性RMSE(Cros

12、s-Validated)0100200300400500Numberof Bagged TreesBagging RandomForest 解决方案:进一步消除解决方案:进一步消除树之间的相关性树之间的相关性 每棵树使用一组每棵树使用一组随机抽取的特征:随机抽取的特征:分类:分类:回归:回归:/3 称作“随机森林”称作“随机森林”相对于相对于Bagging,随机,随机森林的错误率会进一步森林的错误率会进一步降低。降低。增加足够的树直到错误增加足够的树直到错误率不再变化为止率不再变化为止 新增加树不会改善新增加树不会改善结果了。结果了。RMSE(Cross-Validated)010020030

13、0400500Numberof Bagged TreesBagging RandomForest随机森林多少棵树?导入包含分类方法的类:导入包含分类方法的类:from sklearn.ensemble import RandomForestClassifier创建该类的一个对象:创建该类的一个对象:RC=RandomForestClassifier(n_estimators=100,max_features=10)拟合训练数据,并预测:拟合训练数据,并预测:RC=RC.fit(X_train,y_train)y_predict=RC.predict(X_test)使用交叉验证调参数。回归用使用

14、交叉验证调参数。回归用RandomForestRegressor。随机森林的语法http:/scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html随机森林参数设置n_estimators基学习器个数,森林中树的个数。缺省值是10。criterion分裂条件选择标准RandomForestClassifier的缺省值是“gini”,即用基尼指数作为衡量指标,也可以是“entropy”,即使用熵作为衡量指标;RandomForestRegressor的缺省值是“mse”,即使用均方

15、差作为衡量指标,也可以是“mae”,即使用平均绝对值误差作为衡量指标。max_features选择分裂条件时考虑的最大特征数有以下多种可能的取值:整数,即可考虑的特征的最多个数;小数,即可考虑的特征的最多个数占总的特征数的比例;“auto”,即最多考虑(总的特征数)个特征;“log2”,即最多考虑(log2总的特征数)个特征;“sqrt”,即最多考虑(总的特征数)个特征;缺省值是“auto”。直到找到一个有效的分裂为止,即使需要考虑多于max_features个特征。max_depth决策树的最大深度缺省值是None。如果为None,则节点会一直分裂下去直到每个叶子节点都纯了或者叶子节点包含的

16、样例个数少于min_samples_split。有时需要比随机森林更多的随机性有时需要比随机森林更多的随机性 解决方案:随机选择特征,并创建解决方案:随机选择特征,并创建随机划分随机划分-即不即不使用贪婪划分使用贪婪划分 称作“超随机森林”称作“超随机森林”引入更多的随机性导入包含分类方法的类:导入包含分类方法的类:from sklearn.ensemble import ExtraTreesClassifier创建该类的一个对象:创建该类的一个对象:EC=ExtraTreesClassifier(n_estimators=100,max_features=10)拟合训练数据,并预测:拟合训练

17、数据,并预测:EC=EC.fit(X_train,y_train)y_predict=EC.predict(X_test)使用交叉验证调参。回归用使用交叉验证调参。回归用ExtraTreesRegressor。超随机森林分类器的语法http:/scikit-learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.htmlBOOSTING起源 PAC(Probably Approximately Correct)学习框架 Valiant&Kearns(1984)弱可学习 强可学习 Valiant&Kearn

18、s(1989)证明了弱可学习和强可学习的等价性 Schapire(1990)第一次提出一个多项式时间的Boosting算法 Freund(1991)提出一种效率更高的Boosting算法 Freund&Schapire(1995)提出AdaBoost(Adaptive Boosting)算法 Friedman(1999)提出梯度提升梯度提升(Gradient Boosting)算法Boosting模型的基本思路 相继地训练多个弱学习器,每个弱学习器力图纠正前面学习器的错误,最后将多个弱学习器加权结合起来。AdaBoostTemperature 50 F决策树桩:Boosting算法的基学习器T

19、emperatureTemperature 50 F决策树桩:Boosting算法的基学习器TemperatureTemperature 50 FHumidity50 FHumidity 30%Humidity决策树桩:Boosting算法的基学习器创建初始创建初始的决策树的决策树桩桩Boosting概述拟合数据拟合数据并计算残并计算残差差x xxxxxxxxxBoosting概述调整样例调整样例点的权重点的权重x xxxxxxxxxBoosting概述发现新的发现新的决策树桩决策树桩来拟合加来拟合加权残差权残差x xxxxxxxxxBoosting概述+用新的决用新的决策树桩来策树桩来拟合当

20、前拟合当前残差残差x xxxxxxxxxBoosting概述+xxxxxxx x xxx计算误差,计算误差,并修改数并修改数据点的权据点的权重重x xxxxxxxxxBoosting概述+xxxxxxx x xxx发现新的发现新的决策树桩决策树桩来拟合加来拟合加权残差权残差x xxxxxxxxxBoosting概述+xxxxxxx x xxx+用新的决用新的决策树桩来策树桩来拟合当前拟合当前残差残差x xxxxxxxxxBoosting概述+xxxxxxx x xxx+xxxxxxxxx xx将多个决策树桩结将多个决策树桩结合成一个分类器合成一个分类器x xxxxxxxxxBoosting概述

21、+xxxxxxx x xxx+xxxxxxxxx xx=将多个决策树桩结将多个决策树桩结合成一个分类器合成一个分类器x xxxxxxxxxBoosting概述+xxxxxxx x xxx+xxxxxxxxx xx=xxxxxxxxx xx+=+Boosting概述预测结果等于多个分预测结果等于多个分类器结果的加权和类器结果的加权和+=+Boosting概述相继的分类器加相继的分类器加权权(学习率)(学习率)+=+Boosting概述使用使用1.0的学的学习率有助于防止习率有助于防止过拟合(正则化)过拟合(正则化)AdaBoost伪码1.给定包含n个样本的训练集 x1,x2,xn,初始化每个样本

22、的权重wi=1/n。2.分别设m=1,2,M,重复下面的步骤:1.在当前训练集上训练一个弱学习器:2.用训练出的弱学习器预测训练集中每个样例的类别:();3.计算该弱学习器的加权错误率:()=1()=1其中()是指示函数,当()成立时,值为1,否则为0。4.计算该弱学习器的权重值计算该弱学习器的权重值:()=log(1 ()()其中是学习率。5.修改训练集中每个样例的权重修改训练集中每个样例的权重:=exp(),i=1,2,n6.归一化wi:=/=13.将M个训练好的弱学习器用加权投票法结合起来,得到最终的集成学习器C:=argmax=1()(=)导入包含分类方法的类:导入包含分类方法的类:f

23、rom sklearn.ensemble import AdaBoostClassifierfrom sklearn.tree import DecisionTreeClassifier创建该类的一个对象:创建该类的一个对象:ABC=AdaBoostClassifier(base_estimator=DecisionTreeClassifier(),learning_rate=0.1,n_estimators=200)基学习器基学习器可以被手可以被手工设置工设置AdaBoost分类器的语法导入包含分类方法的类:导入包含分类方法的类:from sklearn.ensemble import Ad

24、aBoostClassifierfrom sklearn.tree import DecisionTreeClassifier创建该类的一个对象:创建该类的一个对象:ABC=AdaBoostClassifier(base_estimator=DecisionTreeClassifier(),learning_rate=0.1,n_estimators=200)这里也可以这里也可以设置最大深设置最大深度度AdaBoost分类器的语法导入包含该分类方法的类:导入包含该分类方法的类:from sklearn.ensemble import AdaBoostClassifierfrom sklearn

25、.tree import DecisionTreeClassifier创建该类的一个对象:创建该类的一个对象:ABC=AdaBoostClassifier(base_estimator=DecisionTreeClassifier(),learning_rate=0.1,n_estimators=200)拟合训练数据,并预测:拟合训练数据,并预测:ABC=ABC.fit(X_train,y_train)y_predict=ABC.predict(X_test)使用交叉验证调节参数。回归用使用交叉验证调节参数。回归用AdaBoostRegressorAdaBoost分类器的语法http:/sci

26、kit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.htmlAdaBoost参数设置base_estimator基学习器缺省是使用决策树做基学习器。要求基学习器支持样本加权。n_estimators基学习器个数缺省值是50。集成的基学习器的最大个数。或者说算法的最大迭代次数,如果已经完美拟合数据了,则会提前停止。learning_rate学习率缺省值是1.0。一般设为0到1之间的值,收缩每个基学习器对最终结果的贡献量,也即每个基学习器的权重缩减系数。它和n_estimators之间存在一个折衷,一

27、起来决定算法的拟合效果。如果要达到一定的拟合效果,更小的学习率意味着要训练更多的弱学习器。algorithmAdaBoost分类算法(仅用于AdaBoostClassifier)可能取值:“SAMME”或“SAMME.R”,缺省值是“SAMME.R”。Scikit-Learn中实现的AdaBoost分类算法实际是一个被称作SAMME的多分类算法版本,当只有两个类别时,SAMME就等同于AdaBoost。如果基学习器可以估算类别概率值(即它们有一个predict_prob()方法),则可以使用SAMME的一个变体SAMME.R(R表示“real”,即实数),它基于类别概率值而不是类别标签来计算弱

28、学习器的权重。通常它比SAMME算法收敛更快,且测试错误率更低,但要求基学习器必须支持类别概率值的计算。loss损失函数(仅用于AdaBoostRegressor)可能取值:“linear”,“square”或“exponential”,缺省值是“linear”。每一轮调整样本权重时需要用到的损失函数,用于计算每一轮训练出的弱学习器在训练集中每个样本上的预测值与真实值之间的误差,可以是线性误差,平方误差或指数误差。Gradient Boosting 加性模型(additive model):F x=1()前向分步式构建加性模型:Fx=F1x+()Gradient Boosting每一步弱学习器

29、hm(x)的训练目标是减少当前模型的预测值F(m-1)(x)和目标值y之间的差距,更一般地,即最小化损失函数L(y,F(m-1)(x)+hm(x):x=argmin=1L(y,F1+()如果L是平方误差,则 y F1对于任意可微的损失函数L,数值化地近似求解最小化问题Fx=F1x =11L(y,F1)(,)()=1()=argmin=1L(y,F1=11L(y,F1)残差伪残差Gradient BoostingGradient Boosting伪码1.初始化弱学习器为一个常数值:F0 x=argmin=1L(y,)2.分别设m=1,2,M,重复下面的步骤:a)计算伪残差计算伪残差(pseudo

30、 residuals):=L(y,=1x=1,2,b)训练一个弱学习器 拟合伪残差拟合伪残差,即用训练集,=1训练c)求解下面的一维优化问题得到:=argmin=1L(y,F1=11L(y,F1)d)更新模型:Fx=F1x+()3.输出最终模型:Fx Boosting是递加的,所是递加的,所以可能过拟合以可能过拟合 使用交叉验证来设置决使用交叉验证来设置决策树的个数策树的个数Test SetErrorRandomForestBoosting02004006008001000BoostingIterations调节Gradient Boosting模型 学习率学习率():设为设为1.0用于正则

31、化用于正则 化。又称 作又称 作“shrinkage”0Base=0.12004006008001000BoostingIterationsTest SetError调节Gradient Boosting模型Fx=F1x+()学 习 率学 习 率():设 为设 为1.0用于正则化用于正则化。又称又称作作“shrinkage”子采样:设为子采样:设为1.0,只,只使用部分数据用于训练使用部分数据用于训练基学习器(基学习器(stochastic gradient boosting)0Base=0.1 subsample=0.52004006008001000BoostingIterationsTe

32、st SetError调节Gradient Boosting模型0Base=0.1 subsample=0.5=0.1,subsample=0.52004006008001000BoostingIterationsTest SetError调节Gradient Boosting模型 学 习 率学 习 率():设 为设 为1.0用于正则化用于正则化。又称又称作作“shrinkage”子采样:设为子采样:设为1.0,只,只使用部分数据用于训练使用部分数据用于训练基学习器(基学习器(stochastic gradient boosting)0Base=0.1 subsample=0.5=0.1,su

33、bsample=0.5=0.1,max_features=22004006008001000BoostingIterationsTest SetError调节Gradient Boosting模型 学 习 率学 习 率():设 为设 为1.0用于正则化用于正则化。又称又称作作“shrinkage”子采样:设为子采样:设为1.0,只,只使用部分数据用于训练使用部分数据用于训练基学习器(基学习器(stochastic gradient boosting)最大特征数:基学习器最大特征数:基学习器分裂时考虑的特征数目分裂时考虑的特征数目导入包含分类方法的类:导入包含分类方法的类:from sklear

34、n.ensemble import GradientBoostingClassifier创建该类的一个对象:创建该类的一个对象:GBC=GradientBoostingClassifier(learning_rate=0.1,max_features=1,subsample=0.5,n_estimators=200)拟合训练数据,并预测:拟合训练数据,并预测:GBC=GBC.fit(X_train,y_train)y_predict=GBC.predict(X_test)Gradient Boosting分类器的语法使用交叉验证调节参数,回归用使用交叉验证调节参数,回归用GradientBoo

35、stingRegressorhttp:/scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.htmlGradientBoostingClassifier参数设置loss损失函数分类和回归的损失函数不同。对于分类,可以是对数似然损失“deviance”或者指数损失“exponential”,缺省值是“deviance”。使用“exponential”则等同于AdaBoost算法。对于回归,可以是平方损失“ls”、绝对损失“lad”、Huber损失“huber”或分位数损失“qu

36、antile”,缺省值是“ls”。一般来说,如果数据的噪音点不多,用默认的“ls”比较好。如果噪音点较多,则推荐使用抗噪音的“huber”损失函数。如果我们需要对训练集进行分段预测时,则采用“quantile”损失函数。n_estimators基学习器个数集成的基学习器的个数。或者说算法的迭代次数。缺省值是100。learning_rate学习率缺省值是0.1。一般设为0到1之间的值,缩减每个基学习器对最终结果的贡献量,即每个基学习器的权重缩减系数,也称步长。它和n_estimators之间存在一个折衷,一起来决定算法的拟合效果。如果要达到一定的拟合效果,更小的学习率意味着要训练更多的弱学习器

37、。subsample子采样用于训练每个基学习器的样本数量占整个训练集的比例。缺省值是1.0,即用全部数据训练基学习器。小于1.0则是随机梯度提升。小于1.0的值会降低系统的方差,防止过拟合,但会增大系统的偏差。Boosting使用不同的损失函数使用不同的损失函数 每一步,为每个数据点确每一步,为每个数据点确定分类间距(定分类间距(margin)正确分类的点,间距是正的;正确分类的点,间距是正的;错误分类的点,间距是负的错误分类的点,间距是负的 损失函数的值从间距计算得到损失函数的值从间距计算得到Incorrectly Classified PointsCorrectly Classified

38、PointsLoss0MarginBoosting的损失函数例如二分类的margin:yf x,其中y=1,-1 错误分类的点损失值为错误分类的点损失值为 1 正确分类的点被忽略正确分类的点被忽略 理论上“理想的”损失函数理论上“理想的”损失函数 实际难以优化实际难以优化非平滑和非非平滑和非凸函数凸函数Loss0-1LossMisclassifiedMarginCorrect0-1损失函数 AdaBoost=Adaptive Boosting 损失函数是损失函数是指数函数指数函数:()使使AdaBoost比其他类型的比其他类型的Boosting算法对离群点更敏算法对离群点更敏感感Loss0-1

39、LossMisclassifiedMarginCorrectAdaBoostAdaBoost的损失函数 一般化的一般化的boosting方法,方法,可以使用不同的损失函数可以使用不同的损失函数 常见的实现使用常见的实现使用二项式二项式对数似然损失函数对数似然损失函数(偏(偏差):差):log(1+()比比AdaBoost对离群值更对离群值更鲁棒鲁棒Loss0-1LossMisclassifiedMarginCorrectAdaBoostDeviance(GradientBoosting)Gradient Boosting的损失函数Bagging vs.Boostingboostingbaggi

40、ng Bootstrap产生的样本产生的样本 独立独立创建的基本树创建的基本树 只考虑数据点只考虑数据点 不使用权重不使用权重 多余的树不会造成过拟合多余的树不会造成过拟合 主要关注降低主要关注降低方差方差 拟合全部数据集拟合全部数据集 相继相继创建的基本树创建的基本树 利用前面创建的模型的残差利用前面创建的模型的残差 增加错误分类点的权重增加错误分类点的权重 当心过拟合当心过拟合 主要关注降低主要关注降低偏差偏差Bagging vs.BoostingSTACKING 不同类型的模型不同类型的模型可以结合起来构可以结合起来构建建stacked模型模型 类似类似bagging,但不,但不局限于决

41、策树局限于决策树TestLabeled DataMeta FeaturesTrainBase LearnersLogistic RegressionSVMRandom ForestFinal PredictionMeta LearnerStacking:结合多个异构的分类器Stacking:结合多个异构的分类器 不同类型的模型不同类型的模型可以结合起来构可以结合起来构建建stacked模型模型 类似类似bagging,但不,但不局限于决策树局限于决策树 基学习器的输出产生基学习器的输出产生的特征,可以和数据的特征,可以和数据特征结合在一起特征结合在一起TestLabeled DataMeta

42、FeaturesTrainBase LearnersLogistic RegressionSVMRandom ForestFinal PredictionMeta Learner 基学习器的输出可以基学习器的输出可以用多数投票或加权和用多数投票或加权和等方式结合起来等方式结合起来 如果元学习器有参如果元学习器有参数,则需要另外取数,则需要另外取出的数据做预测出的数据做预测 当心增加的模型复当心增加的模型复杂度杂度Stacking:结合多个异构的分类器TestLabeled DataMeta FeaturesTrainBase LearnersLogistic RegressionSVMRand

43、om ForestFinal PredictionMeta Learner多层堆叠导入包含该分类方法的类导入包含该分类方法的类:from sklearn.ensemble import VotingClassifier创建该类的一个对象:创建该类的一个对象:VC=VotingClassifier(estimator_list,voting=hard,weights=estimator_weight_list)拟合训练数据,并预测:拟合训练数据,并预测:VC=VC.fit(X_train,y_train)y_predict=VC.predict(X_test)用新增一层的交叉验证或另外取出的数据集调参用新增一层的交叉验证或另外取出的数据集调参投票分类器的语法一组拟合的一组拟合的模型,以及模型,以及如何结合如何结合http:/scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html演示 第12章-集成学习.ipynb

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服