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

news2024/11/15 8:02:54

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

  • 一、集成学习概述
    • (一)基知
    • (二)相关术语
    • (三)集成学习为何能提高性能?
    • (四)集成学习方法
  • 二、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.coloradmin.cn/o/1943235.html

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

相关文章

YOLO--置信度(超详细解读)

YOLO&#xff08;You Only Look Once&#xff09;算法中的置信度&#xff08;Confidence&#xff09;是一个关键概念&#xff0c;用于评估模型对预测框内存在目标对象的信心程度以及预测框对目标对象位置的准确性。 一、置信度的定义 数值范围&#xff1a;置信度是一个介于0和…

分享 12 款免费开源 Ai 编码助手,助您简化开发工作流程

AI 编码助手是一种利用人工智能和机器学习来帮助开发人员编写、调试和优化代码的软件工具。这些助手旨在理解自然语言提示并提供代码建议、生成代码片段&#xff0c;甚至根据提供的上下文完成整个功能。 它们与 Visual Studio Code、IntelliJ IDEA 等流行的开发环境集成&#…

uniapp原生插件开发实战——iOS打开文件到自己的app

用原生开发获取文件的名称、路径等能力封装为一个插件包供前端使用 首先根据ios插件开发教程,创建一个插件工程,template 选framework 开始编写代码: iOS 9 及以下版本会调用以下方法: - (BOOL)application:(UIApplication *_Nullable)application openURL:(NSURL *_Nul…

《简历宝典》18 - 简历中“技术能力”,如何丰满且有层次,Java篇

上一节&#xff0c;我们学习了前端开发&#xff0c;在简历中的 “技术能力” 模块的书写。这一节&#xff0c;我们说一下Java开发的 “技术能力” 该如何书写&#xff0c;从而使这个模块更加的丰满且有层次感。 目录 1 Java开发工作所包含的技能点 2 招聘市场对Java开发的要…

【人工智能 | 机器学习 | 理论篇】模型评估与选择

文章目录 1. 经验误差与过拟合2. 模型评估方法2.1 模型评估概念2.2 留出法2.3 k 折交叉验证法2.4 自助法2.5 调参与最终模型 3. 性能度量3.1 均方误差3.2 错误率、精度3.3 查准率、查全率3.3 扩展3.4 ROC 与 AUC3.5 代价敏感错误率与代价曲线 4. 比较检验4.1 假设检验4.2 交叉验…

精亿内存条玄武光影系列DDR4 7200 RGB电竞内存条鲁大师跑分实测42万分 国货老牌 国产卫士在D5价格就不会起飞

精亿玄武光影DDR4 7200 RGB电竞内存条是一款高性能的内存产品,适用于追求极致性能的游戏玩家和电脑爱好者。根据你提供的信息,这款内存条在鲁大师跑分中获得了42万分的成绩,说明其性能表现非常出色。 精亿玄武光影DDR5 7200 RGB电竞内存 以下是关于这款内存条的一些特点和优势…

【Javascript】前端面试基础2【每日学习并更新10】

模块化开发是怎样做的&#xff1f; 立即执行函数&#xff0c;不暴露私有成员 异步加载JS的方式有哪些 那些操作会造成内存泄漏 是什么&#xff1a;内存泄漏指任何对象在您不再拥有或需要它之后仍然存在造成内存泄漏&#xff1a; setTimeout的第一个参数使用字符串而非函数的…

Windows系统设置暂停更新,暂停时间可达3000天,“永久”暂停更新,亲测有效

好多小伙伴被Windows系统的更新搞得很烦&#xff0c;经常在使用中自己下载更新包&#xff0c;占用网路资源&#xff0c;过段时间就要更新&#xff0c;特别讨厌 今天教你一招&#xff0c;可以暂停更新长达3000天&#xff0c;亲测有效 1、打开系统CMD命令执行窗口&#xff0c;输…

Linux -软件安装

1.为什么安装软件 项目开发好需要部署&#xff0c;而项目本身可能依赖其他软件。 这时在部署项目时就需要安装依赖的软件。 比如: jdk mysql tomcat redis rabbitmq es等 2. centos软件安装的方式 1. 二进制安装。---只需要解压就可以。 只针对特殊平台。 比如jdk tomcat 2. R…

迈巴赫GLS480升级魔术车身空气悬挂脱困系统有哪些实际作用

迈巴赫 GLS480 升级智能魔术车身脱困系统具有以下实际作用&#xff1a; 1. 增强脱困能力&#xff1a;在车辆陷入困境&#xff0c;如泥泞、沙地或雪地时&#xff0c;该系统能够通过主动调整悬挂和车轮的动力分配&#xff0c;帮助车辆更有效地摆脱困境。 2. 提升行驶稳定性&…

测试基础(二)

目录 等价类划分 解决问题 说明 分类 步骤 应用场景 边界值分析 解决问题 选择节点 步骤 优化 判定表 解决问题 说明 定义 组成 规则 步骤 应用场景 场景法 说明 应用场景 注意 错误推荐法 定义 应用场景 等价类划分 解决问题 穷举问题。 说明 等…

synchronized、volatile与CAS:Java线程同步机制概览

synchronized、volatile与CAS&#xff1a;Java线程同步机制概览 1、synchronized&#xff08;悲观锁&#xff09;2、volatile&#xff08;轻量级同步&#xff09;3、CAS&#xff08;乐观锁&#xff0c;非阻塞&#xff09; &#x1f496;The Begin&#x1f496;点点关注&#x…

职场进阶:从职场小白到专家的心路历程与实战策略

职场进阶&#xff1a;从职场小白到专家的心路历程与实战策略 引言 在职场这条漫长而充满挑战的道路上&#xff0c;每个人都渴望找到属于自己的那片天空。从初入职场的懵懂小白&#xff0c;到最终成为某一领域的专家&#xff0c;这不仅仅是一个职位晋升的过程&#xff0c;更是个…

中年骑友的穿搭指南

在骑行的世界里&#xff0c;合适的装备不仅是对安全的一种保障&#xff0c;更是对个性和风格的一种表达。对于中年骑友而言&#xff0c;选择合适的骑行穿搭尤为重要。他们不仅需要考量保护功能&#xff0c;同时也需在舒适与风格之间找到平衡。本文将深入探讨适合中年骑友的骑行…

函数重载和引用

1.函数重载 函数重载&#xff1a;是函数的一种特殊情况&#xff0c;C允许在同一作用域中声明几个功能类似的同名函数&#xff0c;这些同名函数 的形参列表(参数个数 或 类型 或 类型顺序)不同&#xff0c;常用来处理实现功能类似数据类型不同的问题。 C支持函数重载&#xff…

虚拟仿真如何实现多人在线使用?

在虚拟仿真教学或模型操作中&#xff0c;往往都是多人来对同一个模型来进行使用&#xff0c;但是这种情况下没办法更好的保证每个人都能参与进来&#xff0c;即使可以一起参与但是也没办法进行操作协作。我们可以尝试使用点量实时云渲染系统来解决实现多人同屏在线协同&#xf…

Vuex看这一篇就够了

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

埃文科技受邀出席2024年河南省工业领域网络和数据安全政策宣贯会

2024年7月18日&#xff0c;由河南省工业和信息化厅主办&#xff0c;河南省工业信息安全产业发展联盟、河南省信息安全产业协会承办的2024年河南省工业领域网络和数据安全政策宣贯会在郑州召开&#xff0c;活动旨在提升河南省工业领域网络和数据安全保护能力&#xff0c;助力企业…

2个案例区分是平行眼还是交叉眼,以及平行眼学习方法

案例一&#xff1a; 交叉眼&#xff1a;看到凸出的“灌水”&#xff0c;是交叉眼。PS&#xff1a;看的时候&#xff0c;眼是斗鸡眼&#xff0c;眼睛易疲劳 平行眼&#xff1a;看到凹陷的“灌水”&#xff0c;是平行眼。PS&#xff1a;看的时候眼睛是平视&#xff0c;不容易疲…

【BUG】已解决:Downgrade the protobuf package to 3.20.x or lower.

Downgrade the protobuf package to 3.20.x or lower. 目录 Downgrade the protobuf package to 3.20.x or lower. 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身…