集成学习在数学建模中的应用

集成学习在数学建模中的应用

  • 一、集成学习概述
    • (一)基知
    • (二)相关术语
    • (三)集成学习为何能提高性能?
    • (四)集成学习方法
  • 二、Bagging方法
    • (一)装袋(Bagging)方法
    • (二)特点
    • (三)数据集划分的其他方法
    • (四)参数设置
  • 三、Boost方法
    • (一)基知
    • (二)Boosting如何获得多个弱分类器?
  • 四、AdaBoost算法
    • (一)基知
    • (二)弱分类器的权重
    • (三)样本集的权重
    • (四)弱分类器的组合
    • (五)AdaBoost算法
    • (六)实例
    • (六)特点
    • (七)参数设置
  • 五、Bagging和Boost的区别
  • 六、模型的组合方法
    • (一)怎样组合多个弱分类器?
    • (二)Averaging方法
    • (七)Stacking方法
      • (1)原理
      • (2)基础训练过程
      • (3)交叉训练
      • (4)代码示例

一、集成学习概述

(一)基知

分类器对数据集依赖强,数据集纷杂,很难找到适用所有情况的分类器。比如,训练任务和目标任务的数据分布不一致,数据过少等。

集成学习(Ensemble Learning) 是通过某种策略将多个模型集成起来,通过群体决策来提高决策准确率

集成学习中的两个核心问题是:
(1) 如何获得多个模型?(2) 如何集成多个模型?

(二)相关术语

在这里插入图片描述

(三)集成学习为何能提高性能?

(1)从模型的期望误差分析

  • 设X是样本集,yx 是样本的真实的目标值,对于T个不同的模型,第 t 个模型的期望平方误差是:
    e ( f t ) = E x [ ( f t ( X ) − y x ) 2 ] = E x [ ε t ( X ) 2 ] e(f_t)=E_x[(f_t(X)-y_x)^2]=E_x[\varepsilon_t(X)^2] e(ft)=Ex[(ft(X)yx)2]=Ex[εt(X)2]
  • 集成模型 f 的期望平方误差 e(f) 满足:
    1 T ∑ t = 1 r E x [ ε t ( X ) 2 ] ≤ e ( f ) ≤ ∑ t = 1 r E x [ ε t ( X ) 2 ] \frac{1}{T}\sum_{t=1}^{r}E_{x}[\varepsilon_{t}(X)^{2}]\leq e(f)\leq\sum_{t=1}^{r}E_{x}[\varepsilon_{t}(X)^{2}] T1t=1rEx[εt(X)2]e(f)t=1rEx[εt(X)2]
  • 投票规则的集成模型的期望错误大等于所有模型的平均期望错误的1/M,小于等于所有模型的平均期望错误
    (2)从模型的泛化误差分析
    分类问题 f i ( X ) > 0.5 f_i(\mathbf{X}){>}0.5 fi(X)>0.5,大部分样本错误分类,投票后,集成学习器的错误率更高。
    回归问题 E [ ( f i ( X ) − y ) 2 ] > E [ ( y ‾ − y ) 2 ] \mathbb{E}[(f_i(\mathbb{X})-y)^2]>\mathbb{E}[(\overline{y}-y)^2] E[(fi(X)y)2]>E[(yy)2],预测效果弱于均值预测,组合预测结果后,集成学习器的预测误差更大
    在这里插入图片描述

集成好于单个分类器的条件:

  1. 弱分类器独立(难满足)
  2. 弱分类器应好于随机猜测分类器,即 误差<0.5(容易满足)

(3)直观理解集成方法对预测能力的提升

在这里插入图片描述
提升的优势:
假设有25个弱分类器,且每个弱分类器的错误率均为0.35,采用少数服从多数的提升方式,只有当超过13个弱分类器都对样本x错误分类,才会导致x被误分类。
e e n s e m b l e = ∑ i = 13 25 C 25 i ( 0.35 ) i ( 1 − 0.35 ) 25 − i = 0.06 e_{ ens em ble} = \sum_{i=13}^{25}C_{ 25}^{ i}(0.35)^{i}(1-0.35)^{25-i}=0.06 eensemble=i=1325C25i(0.35)i(10.35)25i=0.06

误分类率降低!

(四)集成学习方法

在这里插入图片描述
待解决的问题:

  1. 怎样获得不同的弱分类器?
    Bagging 和 Boosting 方法
  2. 如何将多个弱分类器组合成一个强分类器?
    投票法、加权平均、Stacking

二、Bagging方法

(一)装袋(Bagging)方法

(1)Bagging方法是基于训练集的划分
(又被称为自举汇聚法Bootstrap aggregating),对原始数据进行自助采样(bootstrap samples),形成T个数据集;训练每个数据集,获得T个弱模型;用投票法或加权平均生成集成学习模型。
在这里插入图片描述

自助采样:有放回采样,是重采样的一种。

(2)实例
已知原数据集有10个样本,利用装袋法,产生预测模型。
在这里插入图片描述
分别计算每个划分点,根据信息熵或Gini系数,发现分裂点0.35或0.75能产生最好的分类结果,故,采用0.35作为分类标准。决策树单个分类器准确率最高是70%。

信息熵:
E n t r o p y = − ∑ i = 1 c p ( i ) log ⁡ p ( i ) Entropy = -\sum_{\mathrm{i}=1}^{c} p(\mathrm{i}) \log p(i) Entropy=i=1cp(i)logp(i)
Gini系数:
G i n i ( D ) = 1 − ∑ i = 1 c p ( i ) 2 Gini(D) = 1 - \sum_{i=1}^{c} p(i)^{2} Gini(D)=1i=1cp(i)2
G i n i ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini(D,a)=\sum_{v=1}^V\frac{|D_v|}{|D|}\mathrm{~Gini}\left(D_v\right) Gini(D,a)=v=1VDDv Gini(Dv)
假设有c个类,样本点属于第 i 类的概率为 p ( i ) p(i) p(i)。信息熵和Gini系数都是用于衡量不确定性和多样性的重要指标,它们的系数越小越好

计算步骤:
在这里插入图片描述
Step1:

  • 以 x = 0.35 作为划分点,产生子集 {0.1, 0.2, 0.3} 和 {0.4 ~ 1}
    Gini(x=0.35)= (3/10) * [1-02-12] + (7/10) * [1-(4/7)2-(3/7)2] = 24/49
  • 类似地
    Gini(x=0.75)=(7/10) * [1-(4/7)2-(3/7)2] + (3/10) * [1-02-12] = 24/49

Step2:
重复采样,10轮,每轮获得分类器,准确率在70%
在这里插入图片描述
Step3:
多数表决 决定样本的最终类别,10个样本均正确分类。
装袋通过降低弱分类器方差改变了泛化误差。在这里插入图片描述

(二)特点

  • 结构简单,表现不错。
  • 通过随机改变训练集的分布,产生新的训练子集。某些数据对象被多次采样,对于特定的子空间,弱学习器会具有很高的分类精度。
  • 弱学习器预测能力越强且它们之间的差异越大,集成模型效果越好。
  • Bagging方法不偏好任何基学习器,可以降低模型的方差,对不稳定学习算法非常有效。
  • 适合小算例集,在大规模训练集上效果会下降(参见改进模型)。

(三)数据集划分的其他方法

(1)依据数据或特征对原始训练数据划分,形成多个数据集。如随机森林(Random Forest) 方法。
(2)依据数据的类标号对原始训练数据划分,形成迭代的二分类问题。如错误-纠正输出编码方法。
(3)依据算法模型的变化,获得不同的弱学习模型。如改变神经网络结构或算法添加随机性

(四)参数设置

在这里插入图片描述

  • n_estimators:基学习器个数。
  • criterion:分裂标准,squared_error均方差;均方差等价于特征的方差减少和最小化L2正则项。friedman_mse费尔德曼均方误差。
  • max_depth:树的最大深度,防止过拟合。
  • min_samples_split:内部节点再划分所需要的最少样本数,限制是否继续分裂。
  • min_samples_leaf:叶子节点的最少样本数,用于剪枝。
  • min_weight_fraction_leaf:叶子节点所有样本权重的最小值。如果小于这个权重,那么和它的兄弟节点一起被剪枝。
  • max_features: None,auto考虑所有特征;log2最多考虑 log2N 个特征;sqrt最多考虑平方根个特征;整数表示特征的绝对数;浮点数表示考虑的特征个数的百分比。节省建树代价。
  • max_leaf_nodes:树的最大叶子结点数,防止过拟合。
  • min_impurity_decrease:结点分裂的纯度减少的最小值,限制是否继续分裂。
  • min_samples_leaf:叶子节点的最少样本数,用于剪枝。
  • bootstrap:布尔值,是否使用bootstrap采样。false,全部数据参与训练每个棵树。
  • oob_score:布尔值,是否采用袋外样本(out-of-bag sample)来评估模型的好坏。与交叉验证类似,可以理解为验证集。当bootstrap为真时,使用。oob_score是单颗决策树返回的在验证集上的R2值。
  • n_jobs:并行计算作业数量。

三、Boost方法

(一)基知

提升(Boosting)方法是一种常用的统计学习方法,是一种将弱学习器转换为强学习器的迭代方法。在分类问题中, AdaBoost通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提升分类的性能。

代表性算法AdaBoost,是1995年由Freund和Schapire提出的。

(二)Boosting如何获得多个弱分类器?

  1. 从原数据集中,抽样样本组成训练集;
  2. 产生弱学习器,去除已正确分类的样本,保留误分类样本
  3. 从原数据集中,再抽取样本,与上一轮的误分类样本构成新的训练集;
  4. 重复(2)-(3)步骤,直至获得T个分类器;
  5. 组合弱学习器,形成强学习器。
    在这里插入图片描述

四、AdaBoost算法

(一)基知

在这里插入图片描述

  • 问题1 怎样获得多个弱分类器?
    AdaBoost算法提高那些在前一轮弱分类器错误分类的样本的权值降低那些被正确分类样本的权值
  • 问题2 如何将多个弱分类器组合成一个强分类器?
    AdaBoost算法采用加权表决的方法。具体地,加大分类误差率小的弱分类器的权值,使其在表决中起到较大的作用。
    f ( x ) = α 1 f 1 ( x ) + α 2 f 2 ( x ) + . . . . . . + α T f T ( x ) f(x){=}\alpha_{1}f_{1}(x){+}\alpha_{2}f_{2}(x){+}......+\alpha_{\mathrm{T}}f_{\mathrm{T}}(x) f(x)=α1f1(x)+α2f2(x)+......+αTfT(x)

(二)弱分类器的权重

设训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } , y i ∈ { − 1 , + 1 } D=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N})\}, y_{i}\in\{-1,+1\} D={(x1,y1),(x2,y2),...,(xN,yN)},yi{1,+1},产生T个弱分类器,其中

  • 第 j 个分类器 fj错误率定义为:

ε j = 1 N [ ∑ i = 1 N w i I ( f j ( x i ) ≠ y i ) ] , j = 1 , 2 , . . . , T \varepsilon_{j}=\frac{1}{N}[\sum_{i=1}^{N}w_{i}I(f_{j}(x_{i})\neq y_{i})], j=1,2,...,T εj=N1[i=1NwiI(fj(xi)=yi)],j=1,2,...,T
弱分类器的误分类率 εj 是错误分类样本的加权平均,N是样本数,wi是第 i 个样本权重,指示函数 I(•) 等于0或1。wi是归一化后的值。

  • 弱分类器 fj重要性(权重)定义为:

α j = 1 2 l n ( 1 − ε j ε j ) , j = 1 , 2 , . . . , T \alpha_{ j}=\frac{1}{2}\mathbf{ln} (\frac{1-\varepsilon_{ j}}{\varepsilon_{ j}}), j=1,2,...,T αj=21ln(εj1εj),j=1,2,...,T
在这里插入图片描述

α j \alpha_{j} αj= 0.5,αj = 0;
α j \alpha_{j} αj < 0.5 且 α j \alpha_{j} αj→ 0, α j \alpha_{j} αj是一个很大的正值;
α j \alpha_{j} αj > 0.5 且 α j \alpha_{j} αj→ 1, α j \alpha_{j} αj是一个很大的负值;

结论误差大的分类器,在预测结果表决时,权重小

(三)样本集的权重

  • 初始样本权重设为:
    w 1 i = 1 N , i = 1... N w_{_{1i}}=\frac{1}{N},i=1...N w1i=N1,i=1...N
  • 样本权重更新操作:

Z j = ∑ i = 1 N w j i exp ⁡ ( − α j y i f j ( x i ) ) Z_{ j}=\sum_{i=1}^{N}w_{ ji}\exp{(-\alpha_{ j}y_{i}f_{ j}(x_{ i}))} Zj=i=1Nwjiexp(αjyifj(xi))
w j + 1 , i = w j i Z j exp ⁡ ( − α j y i f j ( x i ) ) , i = 1... N , j = 1 , . . . , T ⇒ w j + 1 , i = { exp ⁡ ( − α j ) Z j w j i , y i = f j ( x i ) exp ⁡ ( α j ) Z j w j i , y i ≠ f j ( x i ) , α j = 1 2 ln ⁡ 1 − ε j ε j w_{j+1, i}=\frac{w_{ji}}{Z_{j}}\exp(-\alpha_{j}y_{i}f_{j}(x_{i})),i=1...N ,j=1,...,T\\\Rightarrow w_{j+1, i}=\begin{cases}\frac{\exp(-\alpha_{j})}{Z_{j}}w_{ji}, y_{i}=f_{j}(x_{i})\\\frac{\exp(\alpha_{j})}{Z_{j}}w_{ji}, y_{i}\neq f_{j}(x_{i})\end{cases}, \alpha_{j}=\frac{1}{2}\ln\frac{1-\varepsilon_{j}}{\varepsilon_{j}} wj+1,i=Zjwjiexp(αjyifj(xi)),i=1...N,j=1,...,Twj+1,i={Zjexp(αj)wji,yi=fj(xi)Zjexp(αj)wji,yi=fj(xi),αj=21lnεj1εj
w j + 1 , i w_{j+1,i} wj+1,i是第 i 个样本在 j+1 个学习器中的权重。
误分类的样本的权重在下一次学习中起到了更大的作用,且权重是指数级更新。
在这里插入图片描述

(四)弱分类器的组合

强分类器是T个弱分类器 f j f_{j} fj的线性组合,定义为:
C ∗ ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ j = 1 r α j f j ( x ) ) C^*(x)=sign(f(x))=sign(\sum_{j=1}^r\alpha_jf_j(x)) C(x)=sign(f(x))=sign(j=1rαjfj(x))
x是待分类对象, f j f_{j} fj是第 j 个弱分类器,C* 是分类结果。
对于x,分类结果C*(x)是T个弱分类器分类结果的加权表决。

当f(x)为负数,x被分类为-1。
当f(x)为正数,x被分类为1。

(五)AdaBoost算法

输入:训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } , y i ∈ { − 1 , + 1 } D=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N})\}, y_{i}\in\{-1,+1\} D={(x1,y1),(x2,y2),...,(xN,yN)},yi{1,+1},T个基学习器。
输出:最终分类器 f ( x ) f(x) f(x)

  1. 初始化训练数据的权值分布, D 1 = { w 11 , w 12 , w 1 i , . . . , w 1 N } , w 1 i = 1 / N D_1=\{w_{11} ,w_{12},w_{1i},...,w_{1N}\},w_{1i}=1/N D1={w11,w12,w1i,...,w1N},w1i=1/N
  2. F o r j = 1...... T \mathrm{For} j=1......\mathrm{T} Forj=1......T
  3. 使用具有权值分布的训练集Dj进行训练,得到基分类器 f j ( x ) f_{j}\left(x\right) fj(x) X → { − 1 , + 1 } X\to\{-1,+1\} X{1,+1}
    X→{-1,+1}
  4. 计算 f j ( x ) f_{j}\left(x\right) fj(x)的分类误差率
    ε j = 1 N [ ∑ i = 1 N w i I ( f j ( x i ) ≠ y i ) ] \varepsilon_{j}=\frac{1}{N}[\sum_{i=1}^{N}w_{i}I(f_{j}(x_{i})\neq y_{i})] εj=N1[i=1NwiI(fj(xi)=yi)]
  5. 计算 f j ( x ) f_{j}\left(x\right) fj(x)的系数
    α j = 1 2 l n ( 1 − ε j ε j ) \alpha_{j}=\frac{1}{2}\mathbf{ln}(\frac{1-\varepsilon_{j}}{\varepsilon_{j}}) αj=21ln(εj1εj)
  6. 更新训练数据集的权重分布
    w j + 1 , i = w j i Z e x p ( − α j y i f j ( x i ) ) w_{_{j+1, i}}=\frac{w_{_{ji}}}{Z}\mathbf{e} \mathbf{x} \mathbf{p}(-\alpha_{_j}y_{_i}f_{_j}(x_{_i})) wj+1,i=Zwjiexp(αjyifj(xi))
  7. 由基分类器的线性组合,获得强分类器 f ( x ) f\left(x\right) f(x)

(六)实例

在这里插入图片描述

初始化权重分布: w 1 i = 0.1 , i = 1 , 2 , … , 10 \mathrm{w_{1i}}=0.1,\mathrm{i}=1,2,\ldots,10 w1i=0.1,i=1,2,,10

第1轮迭代:
①产生第1个弱分类器 j = 1;在D1数据集上,阈值取2.5,分类误差率最小 ⇒ f 1 ( x ) = { 1 , x < 2.5 − 1 , x > 2.5 \Rightarrow f_1(x)=\begin{cases} 1, x<2.5\\-1, x>2.5\end{cases} f1(x)={1,x<2.51,x>2.5
②f1在D1的上的误差 e 1 = 0.1 × 3 = 0.3 e_1=0.1\times3=0.3 e1=0.1×3=0.3
f = 0.4236 f 1 ( x ) f=0.4236f_1(x) f=0.4236f1(x),对D1预测,3个样本误分类;
③f1的权重 α 1 = 1 2 l n 1 − e 1 e 1 = 0.4236 \alpha_{_1}=\frac{1}{2}\mathbf{ln} \frac{1-e_{_1}}{e_{_1}}= 0.4 2 3 6 α1=21lne11e1=0.4236
④更新样本权重
D 2 = ( 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.1666 , 0.1666 , 0.1666 , 0.0715 ) D_{2}=(0.0715,0.0715,0.0715,0.0715,0.0715,\boxed{0.1666,0.1666,0.1666},0.0715) D2=(0.0715,0.0715,0.0715,0.0715,0.0715,0.1666,0.1666,0.1666,0.0715)

第2轮迭代:
①在权值分布为D2的数据集上,阈值取8.5,分类误差率最小,产生第2个弱分类器:
⇒ f 2 ( x ) = { 1 , x < 8.5 − 1 , x > 8.5 \Rightarrow f_2( x )=\begin{cases} 1,&x < 8 .5\\-1,&x > 8 .5\end{cases} f2(x)={1,1,x<8.5x>8.5
② f2在D2的上的误差: e 2 = 0.0715 × 3 = 0.2143 e_2=0.0715\times3=0.2143 e2=0.0715×3=0.2143
③ f2的权重: α 2 = 1 2 l n 1 − e 2 e 2 = 0.6496 \alpha_{_2}=\frac{1}{2}\mathbf{ln}\frac{1-e_{_2}}{e_{_2}}=0.6496 α2=21lne21e2=0.6496
f = 0.4236 f 1 ( x ) + 0.6496 f 2 ( x ) f=0.4236f_1(x)+0.6496f_2(x) f=0.4236f1(x)+0.6496f2(x),对D1分类,有3个样本误分类;
④更新样本权重:
D 2 = ( 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.1666 , 0.1666 , 0.1666 , 0.0715 ) D_{2}=(0.0715,0.0715,0.0715,0.0715,0.0715,0.0715,\boxed{0.1666,0.1666,0.1666},0.0715) D2=(0.0715,0.0715,0.0715,0.0715,0.0715,0.0715,0.1666,0.1666,0.1666,0.0715)

第3轮迭代:
① 在权值分布为D3的数据集上,阈值取5.5,分类误差率最小,产生第3个弱分类器:
⇒ f 3 ( x ) = { 1 , x < 5.5 − 1 , x > 5.5 \Rightarrow f_{3}(x)=\begin{cases} 1, x<5.5\\-1, x>5.5\end{cases} f3(x)={1,x<5.51,x>5.5
② f3在D3的上的误差: e 3 = 0.0455 × 4 = 0.1820 e_3=0.0455\times4=0.1820 e3=0.0455×4=0.1820
③ f3的权重: α 3 = 1 2 l n 1 − e 3 e 3 = 0.7514 \alpha_{_3}=\frac{1}{2}\mathbf{ln} \frac{1-e_{_3}}{e_{_3}}= 0.7 5 1 4 α3=21lne31e3=0.7514
④更新样本权重: D 4 = ( 0.125 , 0.125 , 0.125 , 0.102 , 0.102 , 0.102 , 0.065 , 0.065 , 0.065 , 0.125 ) D_{4}=(0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125) D4=(0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125)

f ( x ) = 0.4236 f 1 ( x ) + 0.6496 f 2 ( x ) + 0.7514 f 3 ( x ) f(x)=0.4236f_1(x)+0.6496f_2(x)+0.7514f_3(x) f(x)=0.4236f1(x)+0.6496f2(x)+0.7514f3(x),对D1分类,有0个样本误分类;生成分类器过程终止。
强分类器是 f ( x ) = 0.4236 f 1 ( x ) + 0.6496 f 2 ( x ) + 0.7514 f 3 ( x ) f(x)=0.4236f_1(x)+0.6496f_2(x)+0.7514f_3(x) f(x)=0.4236f1(x)+0.6496f2(x)+0.7514f3(x)

达到最大迭代次数或误分类率小于指定阈值等条件,算法终止。

(六)特点

  • 优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。
  • 缺点:对离群点敏感
  • 适用数据类型:数值型和标称型

提升方法的直观理解
在这里插入图片描述

(七)参数设置

在这里插入图片描述

  • base_estimator:基学习器。None表示默认学习器是深度为1的决策树分类器。如果指定其他学习器,需给出样本的权重。
  • n_estimators:基学习器个数。
  • learning_rate:浮点数,学习率,取值[0,1]。弱学习器的权重缩减的系数。若基学习器个数较大,则学习率可适当取大一些的值,否则取小一点的值,以免错过最优解。
  • algorithm:SAMME用对样本集分类效果作为弱学习器权重,而SAMME.R使用了对样本集分类的预测概率大小来作为弱学习器权重。SAMME.R迭代一般比SAMME快。
  • random_state:随机种子。

另:

1. AdaBoostClassifier的对象

  • estimators_:以列表的形式返回所有的分类器。
  • classes_:类别标签
  • estimator_weights_:每个分类器权重
  • estimator_errors_:每个分类器的错分率,与分类器权重相对应。
  • feature_importances_:特征重要性,这个参数使用前提是基分类器也支持这个属性。
    2. AdaBoostClassifier的方法
  • decision_function(X):返回决策函数值(比如svm中的决策距离)
  • fit(X,Y):在数据集(X,Y)上训练模型。
  • get_parms():获取模型参数
  • predict(X):预测数据集X的结果。
  • predict_log_proba(X):预测数据集X的对数概率。
  • predict_proba(X):预测数据集X的概率值。
  • score(X,Y):输出数据集(X,Y)在模型上的准确率。
  • staged_decision_function(X):返回每个基分类器的决策函数值
  • staged_predict(X):返回每个基分类器的预测数据集X的结果。
    .- staged_predict_proba(X):返回每个基分类器的预测数据集X的概率结果。
  • **staged_score(X, Y)**返回每个基分类器的预测准确率

在这里插入图片描述
l loss:  { ‘linear’,‘square’,‘exponential’ } \text{loss: }\{\text{‘linear’,‘square',‘exponential’}\} loss: {‘linear’,‘square’,‘exponential’},每次迭代时,采用的损失函数
在这里插入图片描述


五、Bagging和Boost的区别

1. 样本选择
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例 在分类器中的权重发生变化,而权值是根据上一轮的分类结果进行调整。
2. 样例权重
Bagging:使用均匀取样,每个样例的权重相等。
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3. 预测模型
Bagging:所有弱学习器的权重相等。
Boosting:每个弱学习器都有相应的权重,对于误差小的学习器会有更大的权重。
4. 并行计算
Bagging:各个弱学习器可以并行生成。
Boosting:各个弱学习器只能顺序生成,因为后一个模型参数需要前一轮模型的结
果。
5. 计算效果
Bagging:因为各个训练子集之间是独立的,所以降低了弱学习器的方差,从而改进了泛化误差。
Boosting:因为弱学习器针对错误样本学习,所以降低了学习器的偏差,从而改进了泛化误差。


六、模型的组合方法

(一)怎样组合多个弱分类器?

  • 多专家组合:一种并行结构,所有的弱分类器都给出各自的预测结果,通过“组合”把这些预测结果转换为最终结果。 (eg.投票及其变种、混合专家模型)
  • 多级组合:一种串行结构,下一个分类器只在前一个分类器预测不够准的实例上进行训练或检测。( eg. 级联算法)
    在这里插入图片描述

(二)Averaging方法

  1. 算术平均: y ^ = 1 n ∑ i = 1 n y ^ i \hat{y}=\frac{1}{n}\sum_{i=1}^{n} \hat{y}_{i} y^=n1i=1ny^i

  2. 加权平均: y ^ = ∑ i = 1 n ( w i y ^ i ) ∑ i = 1 n w i \widehat{y} = \frac{\sum_{i=1}^n(w_i\widehat{y}_i)}{\sum_{i=1}^nw_i} y =i=1nwii=1n(wiy i)

  3. 几何平均: y ^ = ∏ i = 1 n y ^ i n \widehat{y}=\sqrt[n]{\prod_{i=1}^n\widehat{y}_i} y =ni=1ny i

  • 算术平均的应用:软投票Soft voting,即计算弱分类器预测概率的均值,与概率阈值相比,获得最终的分类结果
  • 原因:算术平均对于弱学习器学习结果相近的情况,起到的作用不大。
  • 解决:采用排序平均(Ranking averaging)。

例:已知弱学习器预测的回归值分别为:0.35000056, 0.35000002,0.35000098,0.35000111,排序平均后的预测结果是?
![解答:先排序:
0.35000002(1), 0.35000056(2),0.35000098(3), 0.35000111(4)
再对排序归一化或标准化:
0.35000002(0.1), 0.35000056(0.2),0.35000098(0.3), 0.35000111(0.4)
最后,求平均:
0.3500000×0.1+0.35000056×0.2+0.35000098×0.3+0.35000111×0.4](https://i-blog.csdnimg.cn/direct/f3532a1e56fd4a2e955244a3c7132d6d.png)
在这里插入图片描述

(七)Stacking方法

(1)原理

算法通过两层模型结构来实现模型融合。在第一层(Level 0),训练多个基学习器,这些模型可以是同质的也可以是异质的。在第二层(Level 1),使用元模型或次学习器将第一层所有模型的预测结果融合起来,得到最终的预测结果。
在这里插入图片描述

(2)基础训练过程

Step1:首先,将训练数据集分为两个部分,一部分用于训练基础模型(也称为基学习器或一级学习器),另一部分作为验证集
Step2:使用这些基础模型对验证集做出预测,生成预测结果。这些基础模型可以是不同的算法,也可以是同一算法的不同参数设置。
Step3:将这些基础模型的预测结果作为新的特征,与原始特征一起输入到最终的模型(也称为元学习器或二级学习器)中进行训练

(3)交叉训练

交叉训练提高了Stacking融合有效性,信息隔离,避免重复学习造成过拟合
在这里插入图片描述

(4)代码示例

在这里插入图片描述
在这里插入图片描述

另:

  • stack_method:选择元学习器的训练数据类型:‘auto’、‘predict_proba’、‘decision_function’、'predict’四个不同取值
  • passthrough:特征增强

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/49111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

昇思25天学习打卡营第22天 | DCGAN生成漫画头像

昇思25天学习打卡营第22天 | DCGAN生成漫画头像 文章目录 昇思25天学习打卡营第22天 | DCGAN生成漫画头像DCGAN模型数据集数据下载和超参数创建数据集数据集可视化 搭建网络生成器判别器损失函数和优化器 模型训练总结打卡 DCGAN模型 深度卷积对抗生成网络&#xff08;Depp Co…

python打包exe文件-实现记录

1、使用pyinstaller库 安装库&#xff1a; pip install pyinstaller打包命令标注主入库程序&#xff1a; pyinstaller -F.\程序入口文件.py 出现了一个问题就是我在打包运行之后会出现有一些插件没有被打包。 解决问题&#xff1a; 通过添加--hidden-importcomtypes.strea…

GeoHash原理介绍以及在redis中的应用

GeoHash将二维信息编码成了一个一维信息。降维后有三个好处&#xff1a; 编码后数据长度变短&#xff0c;利于节省存储。利于使用前缀检索当分割的足够细致,能够快速的对双方距离进行快速查询 GeoHash是一种地址编码方法。他能够把二维的空间经纬度数据编码成一个字符串。 1…

react开发-配置开发时候@指向SRC目录

这里写目录标题 配置开发时候指向SRC目录VScode编辑器给出提示总体1.配置react的 2.配置Vscode的1.配置react的2,配置VSCode的提示支持 配置开发时候指向SRC目录VScode编辑器给出提示 总体1.配置react的 2.配置Vscode的 1.配置react的 1. 我么需要下载一个webpack的插件 这样…

判断推理1

判断推理 1.定义判断 2.类比推理 3.逻辑判断 4.图形推理 加粗文本 加粗文本

map/multimap容器及STL案例

1.map概念&#xff1a;map中所有元素都是pair pair中的第一个元素为key&#xff08;键值&#xff09;起到索引作用&#xff0c;第二个为value&#xff08;实值&#xff09; 所有元素都会根据key值自动排序 本质&#xff1a;map/multimap属于关联式容器&#xff0c;底层结构是…

C语言 | Leetcode C语言题解之第257题二叉树的所有路径

题目&#xff1a; 题解&#xff1a; char** binaryTreePaths(struct TreeNode* root, int* returnSize) {char** paths (char**)malloc(sizeof(char*) * 1001);*returnSize 0;if (root NULL) {return paths;}struct TreeNode** node_queue (struct TreeNode**)malloc(size…

vue3使用html2canvas

安装 yarn add html2canvas 代码 <template><div class"container" ref"container"><div class"left"><img :src"logo" alt"" class"logo"><h2>Contractors pass/承包商通行证&l…

Mamba-yolo|结合Mamba注意力机制的视觉检测

一、本文介绍 PDF地址&#xff1a;https://arxiv.org/pdf/2405.16605v1 代码地址&#xff1a;GitHub - LeapLabTHU/MLLA: Official repository of MLLA Demystify Mamba in Vision: A Linear AttentionPerspective一文中引入Baseline Mamba&#xff0c;指明Mamba在处理各种高…

网络通讯实验报告

拓扑图 需求 1、通过DHCP服务&#xff0c;给PC4和PC5分配IP地址、网关、掩码、DNS服务器IP地址 2、Client-1要求手工配置IP地址&#xff0c;为192.168.1.1, c 3、telnet客户端可以远程登录telnet服务器进行设备管理&#xff0c;并成功修改telnet服务器的名字为123 &#xff0c…

操作系统——进程与线程(死锁)

1&#xff09;为什么会产生死锁&#xff1f;产生死锁有什么条件&#xff1f; 2&#xff09;有什么办法解决死锁&#xff1f; 一、死锁 死锁:多个程序因竞争资源而造成的一种僵局&#xff08;互相等待对方手里的资源&#xff09;&#xff0c;使得各个进程都被阻塞&#xff0c;…

一篇文章搞懂MySQL的事务与隔离级别

事务 概述 一个事务其实就是一个完整的业务逻辑&#xff0c;是一个最小的工作单元。要么同时成功&#xff0c;要么同时失败&#xff0c;不可再分 假设转账&#xff0c;从A账户向B账户转账10000 A账户的钱减去10000&#xff08;update语句&#xff09; B账户的钱加上10000&…

【HarmonyOS学习】用户文件访问

概述 文件所有者为登录到该终端设备的用户&#xff0c;包括用户私有的图片、视频、音频、文档等。 应用对用户文件的创建、访问、删除等行为&#xff0c;需要提前获取用户授权&#xff0c;或由用户操作完成。 用户文件访问框架 是一套提供给开发者访问和管理用户文件的基础框…

无需抠图!AI绘画直接文本生成透明底图层,设计师必看的ComfyUI透明图层生成工作流教程!(附插件模型)

大家好&#xff0c;我是画画的小强 AI 绘画自出现以来一直都在不断发展完善&#xff0c;实现了很多我们在实际应用中迫切需要的功能&#xff0c;比如生成正确的手指、指定的姿势、准确的文本内容等。上周&#xff0c;又一个重磅新功能在开源的 SD 生态内实现了——直接通过文本…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十四章 注册字符设备号

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

Springboot项目打包成镜像、使用docker-compose启动

Springboot项目打包成镜像、使用docker-compose启动 1、创建一个boot项目 1、添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSch…

gitee的怎么上传项目

前提 1.先下载Git Bash (如果没有下载的宝子们下载连接如下: 链接: link ) 项目上传到Gitee步骤 1.在Gitee上建立远程仓库 2.填写相关信息 3.进入本地你想要上传的文件目录下&#xff0c;右键单击空白处&#xff0c;点击Git Bash Here 4.配置你的用户名和邮箱 git con…

【leetcode】排列序列

给出集合 [1,2,3,...,n]&#xff0c;其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况&#xff0c;并一一标记&#xff0c;当 n 3 时, 所有排列如下&#xff1a; "123""132""213""231""312""321" 给定…

最简单的typora+gitee+picgo配置图床

typoragiteepicgo图床 你是否因为管理图片而感到头大&#xff1f;是时候了解一下 Typora、Gitee 和 PicGo 这个超级三剑客了&#xff0c;它们可以帮你轻松打造自己的图床&#xff0c;让你的博客图片管理变得简单又有趣。让我们开始这场神奇的图床之旅吧&#xff01; Typora …

7.20 模拟赛总结 [邻项交换] + [决策单调性]

只放题解喽 题解 T1T2T3T4 T1 等价于维护差分数组&#xff0c;数据范围较小&#xff0c;map 套 vector 维护即可 更大的数据范围可以 hash 做 T2 神奇贪心 本题关键在于定序&#xff0c;考虑顺序确定后答案怎么求 设 f i f_i fi​ 表示 第 i i i 件衣服烘干完的时间&…