机器学习理论基础—集成学习(1)

机器学习理论基础—集成学习

个体与集成

集成学习通过构建并结合多个学习器来完成学习任务,有时也称为多分类系统等。

分类: 根据集成学习中的个体学习器的不同可以分为同质集成(集成的学习器相同例如全部是决策树),和异质集成(集成的学习器包括多种,例如决策树神经网络SVM等)。

  • 同质集成中的学习器称为:基学习器
  • 异质集成中的学习器称为:组件学习器(或个体学习器
  • 弱学习器指的是泛化性能略优于随机猜想的学习器(例如二分类问题中精度略高于50%

集成举例

样本一,样本二,样本三的label值都为1时(共三种情况)

首先集成学习的结果通过投票法产生,即少数服从多数的原则
在这里插入图片描述

  1. 第一种情况:每个分类器都有66.6%的精度值经过集成学习之后提高了性能
  2. 第二种情况:每个分类器都有33.3%的精度值经过集成学习之后结果变差了
  3. 第三种情况:三个分类器没有差别集成的结果保持不变

总结: 集成学习器应该满足的两个基本条件是好而不同的。

集成个体学习器的收敛性保证

在这里插入图片描述
参数说明:

  • F(x)集成了多个学习器的集成学习最后结果
  • f(x)样本x的真实标签
  • T个体学习器的数量
  • &个体学习器的误差

解读:k个学习器成功预测样本x的概率

两个基本结论:

  1. 收敛速率随着个体学习器数量T呈指数下降
  2. ∈ =0.5的个体集成器对收敛没有作用

引入推导过程Hoeffing不等式(霍夫丁不等式
在这里插入图片描述

分类

根据个体学习器的生成方式的不同分为两大类

  1. 存在强依赖关系的(Boosting
  2. 不存在强的依赖关系的(随机森林)
2.2 算法原理
2.2.1 核心思想

需要解决的问题:

①在每一轮训练中,如何对训练样本的权值分布进行调整?

②如何确定各个基学习器“加权”结合的权重?

AdaBoost 的解决思路:

通过 分类器权重公式 来确定 各个基学习器的权重;通过 样本分布更新公式 来确定 各轮训练中的样本分布。

①在确定各个基学习器的权重时:

加大“分类误差率”小的弱分类器的权值,使其在表决中发挥较大作用;减小“分类误差率”大的弱分类器的权值,使其在表决中发挥较小作用。(直观而言:比较“菜”的学习器,权重应该小一些;比较“好”的学习器,权重应该大一些。)

②在确定各轮训练中的样本分布时:

提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类的样本的权值。(例如,假设我们在第 K 次得到的弱学习器,在某个样本上的分类结果出现错误,那么我们自然希望:第 K+1 次产生的弱学习器应该更加关注这个样本,使其尽可能地划分正确。)

2.2.2 分类情景介绍

下面我们从公式的角度推导 AdaBoost 的算法原理。为了防止公式混乱,我们给公式添加与《机器学习(周志华)》相同的编号;没有编号的公式是我们的推导过程。

AdaBoost 算法的训练目标是:基于“加性模型”,最小化指数损失函数

注意,我们在这里讨论的是二分类问题,其中训练样本集的 y i ∈ { − 1 , + 1 } y_i\in\{-1,+1\} yi{1,+1} f f f 是真实函数。对于样本 x x x 来说,真实值 f ( x ) ∈ { − 1 , + 1 } f(x)\in\{-1,+1\} f(x){1,+1},每个基学习器的预测值 h i ( x ) ∈ { − 1 , + 1 } h_i(x)\in\{-1,+1\} hi(x){1,+1},假定基分类器的错误率为 ϵ \epsilon ϵ,即对每个基分类器 h i h_i hi 有:
P ( h i ( x ) ≠ f ( x ) ) = ϵ (8.1) P(h_i(x)\neq f(x))=\epsilon \tag{8.1} P(hi(x)=f(x))=ϵ(8.1)
假设集成通过简单投票法结合 T T T 个基分类器,若有超过半数的基分类器正确,则集成分类就正确;集成分类的结果 F 简单投票 ( x ) F_{简单投票}(x) F简单投票(x) 为:
F 简单投票 ( x ) = s i g n ( ∑ i = 1 T h i ( x ) ) (8.2) F_{简单投票}(x)=\mathrm{sign}\Big(\sum\limits_{i=1}^{T}h_i(x)\Big) \tag{8.2} F简单投票(x)=sign(i=1Thi(x))(8.2)
“加性模型”(additive model),即基学习器的线性组合 H ( x ) H(x) H(x)
H ( x ) = ∑ t = 1 T α t h t ( x ) (8.4) H(x)=\sum\limits_{t=1}^T\alpha_{t}h_{t}(x) \tag{8.4} H(x)=t=1Tαtht(x)(8.4)
其中, α t \alpha_t αt 表示基分类器的权重,因为 AdaBoost 并不使用简单投票法,而是“加权表决法”,即让基学习器具有不同的权值:
F ( x ) = s i g n ( H ( x ) ) = s i g n ( ∑ t = 1 T α t h t ( x ) ) F(x)=\mathrm{sign}(H(x))=\mathrm{sign}\Big(\sum\limits_{t=1}^T\alpha_{t}h_{t}(x)\Big) F(x)=sign(H(x))=sign(t=1Tαtht(x))
**“指数损失函数”**的定义为:
l e x p ( H ∣ D ) = E x ∼ D [ e − f ( x ) H ( x ) ] (8.5) \mathscr{l}_{exp}(H\mid D)=\mathbb{E}_{x\sim D}[e^{-f(x)H(x)}]\tag{8.5} lexp(HD)=ExD[ef(x)H(x)](8.5)
其中, x ∼ D x\sim D xD 表示概率分布 D ( x ) D(x) D(x) E \mathbb{E} E 表示期望。

例如,下面的表格就列出了一个分布 D ( x ) D(x) D(x)

序号 i i i12345678910
数据 x x x0123456789
类别标签 y = f ( x ) y=f(x) y=f(x)111-1-1-1111-1
权值分布 D D D0.10.050.050.20.10.10.10.10.10.1

对于这里出现的“指数损失函数”,我们直观地理解一下使用它的合理性,随后在 2.2.2 节中说明使用它的正确性。

先考虑指数损失函数 e − f ( x ) H ( x ) e^{-f(x)H(x)} ef(x)H(x) 的含义: f f f 为真实函数,对于样本 x x x 来说, f ( x ) ∈ { − 1 , + 1 } f(x)\in\{-1,+1\} f(x){1,+1},只能取 -1 和 +1,而 H ( x ) H(x) H(x) 是一个实数,表示集成学习器的预测结果。当 H ( x ) H(x) H(x) 的符号与 f ( x ) f(x) f(x) 一致时, f ( x ) H ( x ) > 0 f(x)H(x)\gt 0 f(x)H(x)>0,因此, e − f ( x ) H ( x ) = e − ∣ H ( x ) ∣ < 1 e^{-f(x)H(x)}=e^{-|H(x)|}\lt 1 ef(x)H(x)=eH(x)<1,且 ∣ H ( x ) ∣ |H(x)| H(x) 越大指数损失函数 e − f ( x ) H ( x ) e^{-f(x)H(x)} ef(x)H(x) 越小,(这很合理:此时 ∣ H ( x ) ∣ |H(x)| H(x) 越大意味着分类器本身对预测结果的信心越大,损失应该越小;若 ∣ H ( x ) ∣ |H(x)| H(x) 在零附近,虽然预测正确,但表示分类器本身对预测结果的信心很小,损失应该越大);当 H ( x ) H(x) H(x) 的符号与 f ( x ) f(x) f(x) 不一致时, f ( x ) H ( x ) < 0 f(x)H(x)\lt 0 f(x)H(x)<0,因此, e − f ( x ) H ( x ) = e ∣ H ( x ) ∣ > 1 e^{-f(x)H(x)}=e^{|H(x)|}\gt 1 ef(x)H(x)=eH(x)>1,且 ∣ H ( x ) ∣ |H(x)| H(x) 越大,损失函数越大,(这很合理:因为此时 ∣ H ( x ) ∣ |H(x)| H(x) 越大意味着分类器本身对预测结果的信心越大,但预测结果是错的,因此损失应该越大;若 ∣ H ( x ) ∣ |H(x)| H(x) 在零附近,虽然预测错误,但表示分类器本身对预测结果的信心很小,虽然错了,损失应该很小)。

同时,我们不难得到两个工具公式(注意 f ( x ) f(x) f(x) 是真实函数,也就是上表中 x x x 所对应的 y y y 的值):
E x ∼ D [ f ( x ) ] = ∑ x ∈ D D ( x ) f ( x ) (工具公式1) \mathbb{E}_{x\sim D}[f(x)]=\sum\limits_{x\in D}D(x)f(x)\tag{工具公式1} ExD[f(x)]=xDD(x)f(x)(工具公式1)

∑ i = 1 ∣ D ∣ D ( x i ) I ( f ( x i ) = 1 ) = P ( f ( x i ) = 1 ∣ x i ) (工具公式2) \sum\limits_{i=1}^{|D|}D(x_i)\mathbb{I}(f(x_i)=1)=P(f(x_i)=1\mid x_i)\tag{工具公式2} i=1DD(xi)I(f(xi)=1)=P(f(xi)=1xi)(工具公式2)

这里我们引入“指示函数”的概念, I ( ⋅ ) = { 1 ; ⋅ 为真 0 ; ⋅ 为假 \mathbb{I}(\cdot)=\begin{cases}{1};\quad \cdot\ 为真\\{0};\quad \cdot\ 为假\end{cases} I()={1; 为真0; 为假

2.2.3 使用“指数损失函数”的正确性

下面,我们从数学角度说明使用“指数损失函数”的正确性。

若集成学习器 H ( x ) H(x) H(x) 能令指数损失函数最小化,则考虑式(8.5)对 H ( x ) H(x) H(x) 的偏导:
∂ l e x p ( H ∣ D ) ∂ H ( x ) = − e − H ( x ) P ( f ( x ) = 1 ∣ x ) + e H ( x ) P ( f ( x ) = − 1 ∣ x ) (8.6) \dfrac{\partial\mathscr{l}_{exp}(H\mid D)}{\partial H(x)}=-e^{-H(x)}P(f(x)=1\mid x)+e^{H(x)}P(f(x)=-1\mid x)\tag{8.6} H(x)lexp(HD)=eH(x)P(f(x)=1x)+eH(x)P(f(x)=1x)(8.6)

式(8.6)的具体推导过程为:

将工具公式1代入式(8.5):
l e x p ( H ∣ D ) = E x ∼ D [ e − f ( x ) H ( x ) ] = ∑ x ∈ D D ( x ) e − f ( x ) H ( x ) \mathscr{l}_{exp}(H\mid D)=\mathbb{E}_{x\sim D}[e^{-f(x)H(x)}]=\sum\limits_{x\in D}D(x)e^{-f(x)H(x)} lexp(HD)=ExD[ef(x)H(x)]=xDD(x)ef(x)H(x)
由于工具公式2:
∑ i = 1 ∣ D ∣ D ( x i ) I ( f ( x i ) = 1 ) = P ( f ( x i ) = 1 ∣ x i ) \sum\limits_{i=1}^{|D|}D(x_i)\mathbb{I}(f(x_i)=1)=P(f(x_i)=1\mid x_i) i=1DD(xi)I(f(xi)=1)=P(f(xi)=1xi)
又注意到 f ( x i ) ∈ { − 1 , + 1 } f(x_i)\in\{-1,+1\} f(xi){1,+1},所以:
∂ l e x p ( H ∣ D ) ∂ H ( x ) = ∑ i = 1 ∣ D ∣ D ( x i ) ( − e − H ( x i ) I ( f ( x i ) = 1 ) + e H ( x i ) I ( f ( x i ) = − 1 ) ) 分类讨论 ( 两种情形 ) = − e − H ( x i ) P ( f ( x i ) = 1 ∣ x i ) + e H ( x i ) P ( f ( x i ) = − 1 ∣ x i ) 由工具公式 2 得到 \begin{aligned} \dfrac{\partial \mathscr{l}_{exp}(H\mid D)}{\partial H(x)}&=\sum\limits_{i=1}^{|D|}D(x_i)\Big(-e^{-H(x_i)}\mathbb{I}(f(x_i)=1)+e^{H(x_i)}\mathbb{I}(f(x_i)=-1)\Big)&分类讨论(两种情形)\\ &=-e^{-H(x_i)}P(f(x_i)=1\mid x_i)+e^{H(x_i)}P(f(x_i)=-1\mid x_i)&由工具公式2得到 \end{aligned} H(x)lexp(HD)=i=1DD(xi)(eH(xi)I(f(xi)=1)+eH(xi)I(f(xi)=1))=eH(xi)P(f(xi)=1xi)+eH(xi)P(f(xi)=1xi)分类讨论(两种情形)由工具公式2得到
式(8.6)的具体推导过程至此结束。

令式(8.6)为零,进行求解:
− e − H ( x ) P ( f ( x ) = 1 ∣ x ) + e H ( x ) P ( f ( x ) = − 1 ∣ x ) = 0 -e^{-H(x)}P(f(x)=1\mid x)+e^{H(x)}P(f(x)=-1\mid x)=0 eH(x)P(f(x)=1x)+eH(x)P(f(x)=1x)=0

H ( x ) + l n ( P ( f ( x ) = − 1 ∣ x ) ) = − H ( x ) + l n ( P ( f ( x ) = 1 ∣ x ) ) H(x)+\mathrm{ln}(P(f(x)=-1\mid x))=-H(x)+\mathrm{ln}(P(f(x)=1\mid x)) H(x)+ln(P(f(x)=1x))=H(x)+ln(P(f(x)=1x))

可解得:
H ( x ) = 1 2 l n P ( f ( x ) = 1 ∣ x ) P ( f ( x ) = − 1 ∣ x ) (8.7) H(x)=\dfrac{1}{2}\mathrm{ln}\dfrac{P(f(x)=1\mid x)}{P(f(x)=-1\mid x)}\tag{8.7} H(x)=21lnP(f(x)=1x)P(f(x)=1x)(8.7)
因此,有:
s i g n ( H ( x ) ) = s i g n ( 1 2 l n P ( f ( x ) = 1 ∣ x ) P ( f ( x ) = − 1 ∣ x ) ) = { 1 , P ( f ( x ) = 1 ∣ x ) > P ( f ( x ) = − 1 ∣ x ) − 1 , P ( f ( x ) = 1 ∣ x ) < P ( f ( x ) = − 1 ∣ x ) 这三行表达的是一个意思 = a r g m a x y ∈ { − 1 , 1 } P ( f ( x ) = y ∣ x ) (8.8) \begin{aligned} \mathrm{sign}(H(x))&=\mathrm{sign}\Big(\dfrac{1}{2}\mathrm{ln}\dfrac{P(f(x)=1\mid x)}{P(f(x)=-1\mid x)}\Big)\\ &=\begin{cases}{1},&{P(f(x)=1\mid x)\gt P(f(x)=-1\mid x)}\\{-1},&{P(f(x)=1\mid x)\lt P(f(x)=-1\mid x)}\end{cases}&这三行表达的是一个意思\\ &=\mathop {\mathrm{argmax}}\limits_{y\in\{-1,1\}}P(f(x)=y\mid x) \end{aligned} \tag{8.8} sign(H(x))=sign(21lnP(f(x)=1x)P(f(x)=1x))={1,1,P(f(x)=1x)>P(f(x)=1x)P(f(x)=1x)<P(f(x)=1x)=y{1,1}argmaxP(f(x)=yx)这三行表达的是一个意思(8.8)
这意味着 s i g n ( H ( x ) ) \mathrm{sign}(H(x)) sign(H(x)) 达到了贝叶斯最优错误率(即对于每个样本 x x x 都选择后验概率最大的类别)。换言之,若指数损失函数最小化,则分类错误率也将最小化;这说明指数损失函数是分类任务原本 0/1 损失函数的一致的(consistent)替代损失函数。由于这个替代损失函数有更好的数学性质,例如它是连续可微函数,因此我们用它替代 0/1 损失函数作为优化目标

至此,我们知道了使用“指数损失函数”的原因及其正确性。

2.2.4 分类器权重公式

下面,我们将从指数损失函数入手,推导 AdaBoost 算法的分类器权重公式。

在 AdaBoost 算法中,第一个基分类器 h 1 h_1 h1 是通过直接将基学习器算法用于初始数据分布而得;此后迭代地生成 h t h_t ht α t \alpha_{t} αt,当基分类器 h t h_t ht 基于分布 D t D_t Dt 产生后,该基分类器的权重 α t \alpha_{t} αt 应使得 α t h t \alpha_{t}h_{t} αtht 最小化指数损失函数。

此时的指数损失函数:
l e x p ( α t h t ∣ D t ) = E x ∼ D t [ e − f ( x ) α t h t ( x ) ] 由定义式 ( 8.5 ) 得到 = E x ∼ D t [ e − α t I ( f ( x ) = h t ( x ) ) + e α t I ( f ( x ) ≠ h t ( x ) ) ] 分类讨论 ( 两种情形 ) = ∑ x ∈ D t D t ( x ) [ e − α t I ( f ( x ) = h t ( x ) ) + e α t I ( f ( x ) ≠ h t ( x ) ) ] 由工具公式 1 得到 = e − α t P x ∼ D t ( f ( x ) = h t ( x ) ) + e α t P x ∼ D t ( f ( x ) ≠ h t ( x ) ) 由工具公式 2 得到 = e − α t ( 1 − ϵ t ) + e α t ϵ t 错误率的定义 (8.9) \begin{aligned} \mathscr{l}_{exp}(\alpha_{t}h_{t}\mid D_{t})&=\mathbb{E}_{x\sim D_{t}}[e^{-f(x)\alpha_{t}h_t(x)}]&由定义式(8.5)得到\\ &=\mathbb{E}_{x\sim D_t}[e^{-\alpha_{t}}\mathbb{I}(f(x)=h_t(x))+e^{\alpha_t}\mathbb{I}(f(x)\neq h_t(x))]&分类讨论(两种情形)\\ &=\sum\limits_{x\in D_{t}}D_{t}(x)[e^{-\alpha_{t}}\mathbb{I}(f(x)=h_t(x))+e^{\alpha_t}\mathbb{I}(f(x)\neq h_t(x))]&由工具公式1得到\\ &=e^{-\alpha_{t}}P_{x\sim D_t}(f(x)=h_t(x))+e^{\alpha_{t}}P_{x\sim D_t}(f(x)\neq h_t(x))&由工具公式2得到\\ &=e^{-\alpha_t}(1-\epsilon_{t})+e^{\alpha_t}\epsilon_{t}&错误率的定义 \end{aligned}\tag{8.9} lexp(αthtDt)=ExDt[ef(x)αtht(x)]=ExDt[eαtI(f(x)=ht(x))+eαtI(f(x)=ht(x))]=xDtDt(x)[eαtI(f(x)=ht(x))+eαtI(f(x)=ht(x))]=eαtPxDt(f(x)=ht(x))+eαtPxDt(f(x)=ht(x))=eαt(1ϵt)+eαtϵt由定义式(8.5)得到分类讨论(两种情形)由工具公式1得到由工具公式2得到错误率的定义(8.9)
其中,错误率 ϵ t = P x ∼ D t ( h t ( x ) ≠ f ( x ) ) \epsilon_{t}=P_{x\sim D_t}(h_t(x)\neq f(x)) ϵt=PxDt(ht(x)=f(x))

考虑指数损失函数的导数:
∂ l e x p ( α t h t ∣ D t ) ∂ α t = − e − α t ( 1 − ϵ t ) + e α t ϵ t 由式 ( 8.9 ) 对 α t 求偏导 (8.10) \begin{aligned} &\dfrac{\partial\mathscr{l}_{exp}(\alpha_{t}h_{t}\mid D_{t})}{\partial\alpha_t}=-e^{-\alpha_t}(1-\epsilon_t)+e^{\alpha_t}\epsilon_{t} &由式(8.9)对\alpha_{t}求偏导 \end{aligned}\tag{8.10} αtlexp(αthtDt)=eαt(1ϵt)+eαtϵt由式(8.9)αt求偏导(8.10)
令式(8.10)为零,进行求解:
− e − α t ( 1 − ϵ t ) + e α t ϵ t = 0 令式 ( 8.10 ) 为零 α t + l n ϵ t = − α t + l n ( 1 − ϵ t ) 移项后取对数 \begin{aligned} &-e^{-\alpha_{t}}(1-\epsilon_{t})+e^{\alpha_{t}}\epsilon_{t}=0&令式(8.10)为零\\ \\ &\alpha_{t}+\mathrm{ln}\epsilon_{t}=-\alpha_{t}+\mathrm{ln}(1-\epsilon_{t})&移项后取对数 \end{aligned} eαt(1ϵt)+eαtϵt=0αt+lnϵt=αt+ln(1ϵt)令式(8.10)为零移项后取对数

可解得:
α t = 1 2 l n ( 1 − ϵ t ϵ t ) (8.11) \alpha_{t}=\dfrac{1}{2}\mathrm{ln}\Big(\dfrac{1-\epsilon_{t}}{\epsilon_{t}}\Big)\tag{8.11} αt=21ln(ϵt1ϵt)(8.11)
至此,我们求得了 AdaBoost 算法的分类器权重公式。

2.2.5 样本分布更新公式

下面,我们推导 AdaBoost 算法的样本分布更新公式。

AdaBoost 算法在获得 H t − 1 H_{t-1} Ht1 之后样本分布将进行调整,使下一轮的基学习器 h t h_t ht 能纠正 H t − 1 H_{t-1} Ht1 的一些错误。

理想的 h t h_t ht 能纠正 H t − 1 H_{t-1} Ht1 的全部错误,又因为 H ( x ) = H t − 1 ( x ) + α t h t ( x ) H(x)=H_{t-1}(x)+\alpha_{t}h_t(x) H(x)=Ht1(x)+αtht(x)

因此,我们希望最小化 l e x p ( H t − 1 + α t h t ∣ D ) \mathscr{l}_{exp}(H_{t-1}+\alpha_{t}h_{t}\mid D) lexp(Ht1+αthtD),可以简化为,最小化:
l e x p ( H t − 1 + h t ∣ D ) = E x ∼ D [ e − f ( x ) ( H t − 1 ( x ) + h t ( x ) ) ] = E x ∼ D [ e − f ( x ) H t − 1 ( x ) e − f ( x ) h t ( x ) ] (8.12) \begin{aligned} \mathscr{l}_{exp}(H_{t-1}+h_t\mid D)&=\mathbb{E}_{x\sim D}[e^{-f(x)(H_{t-1}(x)+h_t(x))}]\\ &=\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}e^{-f(x)h_t(x)}] \end{aligned}\tag{8.12} lexp(Ht1+htD)=ExD[ef(x)(Ht1(x)+ht(x))]=ExD[ef(x)Ht1(x)ef(x)ht(x)](8.12)
对式(8.12)使用 e − f ( x ) h t ( x ) e^{-f(x)h_t(x)} ef(x)ht(x) 的泰勒展式近似:

使用到的泰勒展开式: e x ∼ 1 + x + 1 2 x 2 + o ( x 2 ) e^x\sim1+x+\dfrac{1}{2}x^{2}+o(x^2) ex1+x+21x2+o(x2)

可得:
l e x p ( H t − 1 + h t ∣ D ) ≃ E x ∼ D [ e − f ( x ) H t − 1 ( x ) ( 1 − f ( x ) h t ( x ) + f 2 ( x ) h t 2 ( x ) 2 ) ] \mathscr{l}_{exp}(H_{t-1}+h_t\mid D)\simeq\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}\Big(1-f(x)h_t(x)+\dfrac{f^2(x)h_t^2(x)}{2}\Big)\Big] lexp(Ht1+htD)ExD[ef(x)Ht1(x)(1f(x)ht(x)+2f2(x)ht2(x))]
又因为 f 2 ( x ) = h t 2 ( x ) = 1 f^2(x)=h_t^2(x)=1 f2(x)=ht2(x)=1,可得:
l e x p ( H t − 1 + h t ∣ D ) = E x ∼ D [ e − f ( x ) H t − 1 ( x ) ( 1 − f ( x ) h t ( x ) + 1 2 ) ] (8.13) \mathscr{l}_{exp}(H_{t-1}+h_t\mid D)=\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}\Big(1-f(x)h_t(x)+\dfrac{1}{2}\Big)\Big]\tag{8.13} lexp(Ht1+htD)=ExD[ef(x)Ht1(x)(1f(x)ht(x)+21)](8.13)
因为理想的基学习器 h t ( x ) h_t(x) ht(x) 要使得指数损失函数最小化,所以:
h t ( x ) = a r g m i n h l e x p ( H t − 1 + h ∣ D ) = a r g m i n h E x ∼ D [ e − f ( x ) H t − 1 ( x ) ( 1 − f ( x ) h ( x ) + 1 2 ) ] 由式 ( 8.13 ) 代入得到 = a r g m i n h E x ∼ D [ e − f ( x ) H t − 1 ( x ) ( − f ( x ) h ( x ) ) ] 常数 1 + 1 2 不影响结果 = a r g m a x h E x ∼ D [ e − f ( x ) H t − 1 ( x ) f ( x ) h ( x ) ] 去负号 a r g m i n 变 a r g m a x = a r g m a x h E x ∼ D [ e − f ( x ) H t − 1 ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] f ( x ) h ( x ) ] 新加入的常数不影响结果 (8.14) \begin{aligned} h_t(x)&=\mathop {\mathrm{argmin}}\limits_{h}\mathscr{l}_{exp}(H_{t-1}+h\mid D)&\quad\\ &=\mathop {\mathrm{argmin}}\limits_{h}\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}\Big(1-f(x)h(x)+\dfrac{1}{2}\Big)\Big]&由式(8.13)代入得到\\ &=\mathop {\mathrm{argmin}}\limits_{h}\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}\Big(-f(x)h(x)\Big)\Big]&常数1+\dfrac{1}{2}不影响结果\\ &=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}f(x)h(x)\Big]&去负号\mathrm{argmin}变\mathrm{argmax}\\ &=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D}\Big[\dfrac{e^{-f(x)H_{t-1}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}f(x)h(x)\Big]&新加入的常数不影响结果 \end{aligned}\tag{8.14} ht(x)=hargminlexp(Ht1+hD)=hargminExD[ef(x)Ht1(x)(1f(x)h(x)+21)]=hargminExD[ef(x)Ht1(x)(f(x)h(x))]=hargmaxExD[ef(x)Ht1(x)f(x)h(x)]=hargmaxExD[ExD[ef(x)Ht1(x)]ef(x)Ht1(x)f(x)h(x)]由式(8.13)代入得到常数1+21不影响结果去负号argminargmax新加入的常数不影响结果(8.14)
注意,式(8.14)中的 E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] \mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}] ExD[ef(x)Ht1(x)] 是一个常数,之所以添加此常数,是为了构造出下面的 D t D_t Dt 分布。

D t D_t Dt 表示一个分布:
D t ( x ) = D ( x ) e − f ( x ) H t − 1 ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] (8.15) D_t(x)=\dfrac{D(x)e^{-f(x)H_{t-1}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}\tag{8.15} Dt(x)=ExD[ef(x)Ht1(x)]D(x)ef(x)Ht1(x)(8.15)
根据数学期望的定义,再将式(8.15)代入式(8.14),则理想的基学习器 h t ( x ) h_t(x) ht(x)
h t ( x ) = a r g m a x h E x ∼ D [ e − f ( x ) H t − 1 ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] f ( x ) h ( x ) ] 式 ( 8.14 ) = a r g m a x h ∑ i = 1 ∣ D ∣ D ( x i ) [ e − f ( x i ) H t − 1 ( x i ) f ( x i ) h ( x i ) E x ∼ D [ e − f ( x i ) H t − 1 ( x i ) ] ] 数学期望的定义 = a r g m a x h ∑ i = 1 ∣ D ∣ D t ( x i ) f ( x i ) h ( x i ) 由式 ( 8.15 ) 代入得到 = a r g m a x h E x ∼ D t [ f ( x ) h ( x ) ] (8.16) \begin{aligned} h_t(x)&=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D}\Big[\dfrac{e^{-f(x)H_{t-1}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}f(x)h(x)\Big]&式(8.14)\\ &=\mathop {\mathrm{argmax}}\limits_{h}\sum\limits_{i=1}^{|D|}D(x_i)\Big[\dfrac{e^{-f(x_i)H_{t-1}(x_i)}f(x_i)h(x_i)}{\mathbb{E}_{x\sim D}[e^{-f(x_i)H_{t-1}(x_i)}]}\Big]&数学期望的定义\\ &=\mathop {\mathrm{argmax}}\limits_{h}\sum_{i=1}^{|D|}D_t(x_i)f(x_i)h(x_i)&由式(8.15)代入得到\\ &=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D_{t}}[f(x)h(x)] \end{aligned}\tag{8.16} ht(x)=hargmaxExD[ExD[ef(x)Ht1(x)]ef(x)Ht1(x)f(x)h(x)]=hargmaxi=1DD(xi)[ExD[ef(xi)Ht1(xi)]ef(xi)Ht1(xi)f(xi)h(xi)]=hargmaxi=1DDt(xi)f(xi)h(xi)=hargmaxExDt[f(x)h(x)](8.14)数学期望的定义由式(8.15)代入得到(8.16)
由于 f ( x ) , h ( x ) ∈ { − 1 , + 1 } f(x),h(x)\in\{-1,+1\} f(x),h(x){1,+1},有:
f ( x ) h ( x ) = 1 − 2 I ( f ( x ) ≠ h ( x ) ) (8.17) f(x)h(x)=1-2\mathbb{I}(f(x)\neq h(x))\tag{8.17} f(x)h(x)=12I(f(x)=h(x))(8.17)
则理想的基学习器 h t ( x ) h_t(x) ht(x)
h t ( x ) = a r g m a x h E x ∼ D t [ f ( x ) h ( x ) ] 式 ( 8.16 ) = a r g m a x h E x ∼ D t [ 1 − 2 I ( f ( x ) ≠ h ( x ) ) ] 由式 ( 8.17 ) 代入得到 = a r g m i n h E x ∼ D t [ I ( f ( x ) ≠ h ( x ) ) ] 去掉常数和负号 (8.18) \begin{aligned} h_t(x)&=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D_{t}}[f(x)h(x)]&式(8.16)\\ &=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D_{t}}[1-2\mathbb{I}(f(x)\neq h(x))]&由式(8.17)代入得到\\ &=\mathop {\mathrm{argmin}}\limits_{h}\mathbb{E}_{x\sim D_{t}}[\mathbb{I}(f(x)\neq h(x))]&去掉常数和负号 \end{aligned}\tag{8.18} ht(x)=hargmaxExDt[f(x)h(x)]=hargmaxExDt[12I(f(x)=h(x))]=hargminExDt[I(f(x)=h(x))](8.16)由式(8.17)代入得到去掉常数和负号(8.18)
由此可见,理想的 h t ( x ) h_t(x) ht(x) 将在分布 D t D_t Dt最小化分类误差

因此,弱分类器将基于分布 D t D_t Dt 进行训练,且针对 D t D_t Dt 的分类误差应小于 0.5,这在一定程度上类似“残差逼近”的思想。

考虑到 D t D_t Dt D t + 1 D_{t+1} Dt+1 的关系,有:
D t + 1 ( x ) = D ( x ) e − f ( x ) H t ( x ) E x ∼ D [ e − f ( x ) H t ( x ) ] 由式 ( 8.15 ) 可得 = D ( x ) e − f ( x ) H t − 1 ( x ) e − f ( x ) α t h t ( x ) E x ∼ D [ e − f ( x ) H t ( x ) ] 将 H t ( x ) 展开得到 = D t ( x ) e − f ( x ) α t h t ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] E x ∼ D [ e − f ( x ) H t ( x ) ] 将式 ( 8.15 ) 代入,构造 D t ( x ) (8.19) \begin{aligned} D_{t+1}(x)&=\dfrac{D(x)e^{-f(x)H_{t}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t}(x)}]}&由式(8.15)可得\\ &=\dfrac{D(x)e^{-f(x)H_{t-1}(x)}e^{-f(x)\alpha_{t}h_{t}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t}(x)}]}&将H_t(x)展开得到\\ &=D_t(x)e^{-f(x)\alpha_{t}h_{t}(x)}\dfrac{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t}(x)}]}&将式(8.15)代入,构造D_t(x) \end{aligned}\tag{8.19} Dt+1(x)=ExD[ef(x)Ht(x)]D(x)ef(x)Ht(x)=ExD[ef(x)Ht(x)]D(x)ef(x)Ht1(x)ef(x)αtht(x)=Dt(x)ef(x)αtht(x)ExD[ef(x)Ht(x)]ExD[ef(x)Ht1(x)]由式(8.15)可得Ht(x)展开得到将式(8.15)代入,构造Dt(x)(8.19)
至此,我们求得了 AdaBoost 算法的样本分布更新公式。

于是,由式(8.11)和(8.19)可见,我们从基于加性模型最小化指数损失函数的角度,推导出了 AdaBoost 算法。

2.3 算法流程
2.3.1 算法描述

AdaBoost 算法流程如下:
输入 : 训练集  D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } ; 基学习算法  L ; 训练轮数  T . 过程 : 1 : D 1 ( x ) = 1 m . 2 : f o r t = 1 , 2 , … , T d o 3 : h t = L ( D , D t ) ; 4 : ϵ t = P x ∼ D t ( h t ( x ) ≠ f ( x ) ) ; 5 : i f ϵ > 0.5 t h e n b r e a k 6 : α t = 1 2 l n ( 1 − ϵ t ϵ t ) ; 7 : D t + 1 ( x ) = D t ( x ) Z t × { e − α t , i f h t ( x ) = f ( x ) e α t , i f h t ( x ) ≠ f ( x ) = D t ( x ) e − α t f ( x ) h t ( x ) Z t 8 : e n d f o r 输出 : F ( x ) = s i g n ( ∑ t = 1 T α t h t ( x ) ) \begin{aligned} 输入:\ &训练集\ D=\{(x_1,y_1),(x_2,y_2),…,(x_m,y_m)\};\\ &基学习算法\ \mathfrak{L};\\ &训练轮数\ T.\\ 过程:\ &\\ &1:D_1(x)=\dfrac{1}{m}.\\ &2:\mathbf{for}\ t=1,2,…,T\ \mathbf{do}\\ &3:\qquad h_t=\mathfrak{L}(D,D_t);\\ &4:\qquad \epsilon_t=P_{x\sim D_t}(h_t(x)\neq f(x));\\ &5:\qquad \mathbf{if}\ \epsilon\gt 0.5\ \mathbf{then\ break}\\ &6:\qquad \alpha_{t}=\dfrac{1}{2}ln\Big(\dfrac{1-\epsilon_{t}}{\epsilon_t}\Big);\\ &7:\qquad D_{t+1}(x)=\dfrac{D_t(x)}{Z_t}\times\begin{cases}{e^{-\alpha_{t}}}, &\mathrm{if}\ h_t(x)=f(x)\\{e^{\alpha_{t}}},&\mathrm{if}\ h_t(x)\neq f(x)\end{cases}=\dfrac{D_t(x)e^{-\alpha_{t}f(x)h_t(x)}}{Z_t}\\ &8:\mathbf{end\ for}\\ 输出:\ &F(x)=\mathrm{sign}\Big(\sum\limits_{t=1}^{T}\alpha_{t}h_{t}(x)\Big) \end{aligned} 输入: 过程: 输出: 训练集 D={(x1,y1),(x2,y2),,(xm,ym)};基学习算法 L;训练轮数 T.1:D1(x)=m1.2:for t=1,2,,T do3:ht=L(D,Dt);4:ϵt=PxDt(ht(x)=f(x));5:if ϵ>0.5 then break6:αt=21ln(ϵt1ϵt);7:Dt+1(x)=ZtDt(x)×{eαt,eαt,if ht(x)=f(x)if ht(x)=f(x)=ZtDt(x)eαtf(x)ht(x)8:end forF(x)=sign(t=1Tαtht(x))
其中, Z t Z_t Zt 是规范化因子,它使得 D t + 1 D_{t+1} Dt+1 是一个分布:
Z t = ∑ i = 1 N w t i e − α t f ( x i ) h t ( x i ) Z_t=\sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})} Zt=i=1Nwtieαtf(xi)ht(xi)
我们知道, D t + 1 D_{t+1} Dt+1 表示的是样本权值的分布;因此,要想使得 D t + 1 D_{t+1} Dt+1 是一个分布,应当使得 D t + 1 D_{t+1} Dt+1 中的各样本权值之和为 1。为了做到这点,我们让 D t + 1 D_{t+1} Dt+1 中的每一个规范化前的样本权值 w t i e − α t f ( x i ) h t ( x i ) w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})} wtieαtf(xi)ht(xi) 都除以样本权值的总和 ∑ i = 1 N w t i e − α t f ( x i ) h t ( x i ) \sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})} i=1Nwtieαtf(xi)ht(xi)(这个总和也就是规范化因子 Z t Z_t Zt),从而让我们得到的各样本权值之和为 1。(直观来说,规范化后的样本权值,即为规范化前的样本权值 占 总样本权值的比例,这个比例的总和当然为 1。)

所以我们也能理解:在式(8.19)中,由于项 E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] E x ∼ D [ e − f ( x ) H t ( x ) ] \dfrac{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t}(x)}]} ExD[ef(x)Ht(x)]ExD[ef(x)Ht1(x)] 是一个常数,所有样本权值同时乘以常数,不会改变规范化前的样本权值 占 总样本权值的比例;因此无论是否有它,规范化之后的结果都是一样的,所以我们不去计算这个常数的值。

2.3.2 算法各步骤含义

AdaBoost 算法各步骤的含义如下(一一对应):
输入 : 训练集  D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } ; 基学习算法  L ; 训练轮数  T . 过程 : 1 : 初始化样本权值分布 . 2 : 循环进行  T 轮训练 3 : 基于分布  D t 从数据集  D 中训练出分类器  h t ; 4 : 估计  h t 的误差 ; 5 : 检查当前基分类器是否比随机猜测好,如果条件不满足,当前基学习器即被抛弃,学习过程停止 6 : 确定分类器  h t 的权重 ; 7 : 更新样本分布,其中  Z t 是规范化因子,以确保  D t + 1 是一个分布 8 : 结束循环 输出 : 分类结果 \begin{aligned} 输入:\ &训练集\ D=\{(x_1,y_1),(x_2,y_2),…,(x_m,y_m)\};\\ &基学习算法\ \mathfrak{L};\\ &训练轮数\ T.\\ 过程:\ &\\ &1:初始化样本权值分布.\\ &2:循环进行\ T\ 轮训练\\ &3:\qquad 基于分布\ D_t\ 从数据集\ D\ 中训练出分类器\ h_t;\\ &4:\qquad 估计\ h_t\ 的误差;\\ &5:\qquad 检查当前基分类器是否比随机猜测好,如果条件不满足,当前基学习器即被抛弃,学习过程停止\\ &6:\qquad 确定分类器\ h_t\ 的权重;\\ &7:\qquad 更新样本分布,其中\ Z_t\ 是规范化因子,以确保\ D_{t+1}\ 是一个分布\\ &8:结束循环\\ 输出:\ &分类结果 \end{aligned} 输入: 过程: 输出: 训练集 D={(x1,y1),(x2,y2),,(xm,ym)};基学习算法 L;训练轮数 T.1:初始化样本权值分布.2:循环进行 T 轮训练3:基于分布 Dt 从数据集 D 中训练出分类器 ht;4:估计 ht 的误差;5:检查当前基分类器是否比随机猜测好,如果条件不满足,当前基学习器即被抛弃,学习过程停止6:确定分类器 ht 的权重;7:更新样本分布,其中 Zt 是规范化因子,以确保 Dt+1 是一个分布8:结束循环分类结果

2.4 具体算例
2.4.1 给定数据集与基学习算法

假设给出如下表所示的训练数据。假设弱分类器由 x < v x\lt v x<v x > v x\gt v x>v 产生,其阈值 v v v 使该分类器在训练数据集上的分类误差率最低。试用 AdaBoost 算法学习一个强分类器。

序号 i i i12345678910
数据 x x x0123456789
类别标签 y = f ( x ) y=f(x) y=f(x)111-1-1-1111-1
2.4.2 算法步骤1-2

解:

我们用 t t t 表示当前训练的轮数, i i i 表示实例的序号, m m m 表示训练集实例的总数量。

在此例中, t = 1 , 2 , … , T t=1,2,…,T t=1,2,,T i = 1 , 2 , … , 10 i=1,2,…,10 i=1,2,,10 m = 10 m=10 m=10

1:初始化样本权值分布 D 1 ( x ) D_1(x) D1(x)
D 1 ( x ) = ( w 11 , w 12 , … , w 110 ) = 1 m D_1(x)=(w_{11},w_{12},…,w_{110})=\dfrac{1}{m} D1(x)=(w11,w12,,w110)=m1

w 1 i = 0.1 , i = 1 , 2 , … , 10 w_{1i}=0.1,\quad i=1,2,…,10 w1i=0.1,i=1,2,,10

这里, w t i w_{ti} wti 表示第 t t t 轮中第 i i i 个实例的权值,并且 ∑ i = 1 N w t i = 1 \sum\limits_{i=1}^{N}w_{ti}=1 i=1Nwti=1

2:开始循环进行 T T T 轮训练:

其中,下面的序号 a a a 表示第 1 轮训练, b b b 表示第 2 轮训练,以此类推。

2.4.3 算法步骤3a-7a(第 1 轮)

3a:基于分布 D t = D 1 D_t=D_1 Dt=D1 从数据集 D D D 中训练出分类器 h t = h 1 h_t=h_1 ht=h1
h 1 = L ( D , D 1 ) h_1=\mathfrak{L}(D,D_1) h1=L(D,D1)
在权值分布为 D 1 D_1 D1 的训练数据上,阈值 v v v 取 2.5 时分类误差率最低,故基本分类器为:
h 1 ( x ) = { 1 , x < 2.5 − 1 , x > 2.5 h_1(x)=\begin{cases}{1},&x\lt 2.5\\{-1},&x\gt 2.5\end{cases} h1(x)={1,1,x<2.5x>2.5
4a:估计 h 1 h_1 h1 的误差:

序号 i i i12345678910
数据 x x x0123456789
类别标签 y = f ( x ) y=f(x) y=f(x)111-1-1-1111-1
权值分布 D 1 D_1 D10.10.10.10.10.10.10.10.10.10.1
基分类器结果 h 1 ( x ) h_1(x) h1(x)111-1-1-1-1-1-1-1
正误×××

h 1 ( x ) h_1(x) h1(x) 的在训练数据集上的误差率为:
ϵ 1 = P x ∼ D 1 ( h 1 ( x ) ≠ f ( x ) ) = 0.1 + 0.1 + 0.1 = 0.3 \epsilon_1=P_{x\sim D_1}(h_1(x)\neq f(x))=0.1+0.1+0.1=0.3 ϵ1=PxD1(h1(x)=f(x))=0.1+0.1+0.1=0.3
务必注意:模型的误差等于误判样本的权重值之和(可以看作弱学习器在数据集上的加权错误率),而非误判样本数占总样本数的比例。

5a:检查当前基分类器是否比随机猜测好:
ϵ 1 = 0.3 ≤ 0.5 \epsilon_{1}=0.3\leq 0.5 ϵ1=0.30.5
基分类器 h 1 h_1 h1 比随机猜测好,循环继续进行。

6a:确定分类器 h t = h 1 h_t=h_1 ht=h1 的权重 α 1 \alpha_1 α1
α 1 = 1 2 l n ( 1 − ϵ 1 ϵ 1 ) = 1 2 l n ( 1 − 0.3 0.3 ) = 0.4236 \alpha_{1}=\dfrac{1}{2}ln\Big(\dfrac{1-\epsilon_{1}}{\epsilon_1}\Big)=\dfrac{1}{2}ln\Big(\dfrac{1-0.3}{0.3}\Big)=0.4236 α1=21ln(ϵ11ϵ1)=21ln(0.310.3)=0.4236
7a:更新样本的权值分布:
D 2 = ( w 21 , … , w 2 i , … , w 210 ) = D 1 ( x ) e − α 1 f ( x ) h 1 ( x ) Z 1 D_2=(w_{21},…,w_{2i},…,w_{210})=\dfrac{D_1(x)e^{-\alpha_{1}f(x)h_1(x)}}{Z_1} D2=(w21,,w2i,,w210)=Z1D1(x)eα1f(x)h1(x)

w 2 i = w 1 i Z 1 e − α 1 f ( x i ) h 1 ( x i ) , i = 1 , 2 , … , 10 w_{2i}=\dfrac{w_{1i}}{Z_1}e^{-\alpha_{1}f(x_i)h_1(x_i)},\quad i=1,2,…,10 w2i=Z1w1ieα1f(xi)h1(xi),i=1,2,,10

且已求得,基分类器权重 α 1 = 0.4236 \alpha_1=0.4236 α1=0.4236

可求,规范化因子(为了使样本的概率分布之和为1):
Z t = ∑ i = 1 N w t i e − α t f ( x i ) h t ( x i ) Z_t=\sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})} Zt=i=1Nwtieαtf(xi)ht(xi)

Z 1 = ∑ i = 1 N w 1 i e − α 1 f ( x i ) h 1 ( x i ) = 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e 0.4236 + 0.1 e 0.4236 + 0.1 e 0.4236 + 0.1 e − 0.4236 = 0.1 e − 0.4236 × 7 + 0.1 e 0.4236 × 3 简化计算 = 0.06546857 × 7 + 0.15274505 × 3 = 0.91651514 \begin{aligned} Z_1&=\sum\limits_{i=1}^{N}w_{1i}e^{-\alpha_{1}f(x_i)h_{1}(x_{i})}\\ &=0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{0.4236}+0.1e^{0.4236}+0.1e^{0.4236}+0.1e^{-0.4236}\\ &=0.1e^{-0.4236}\times 7+0.1e^{0.4236}\times 3\qquad 简化计算\\ &=0.06546857\times 7+0.15274505\times 3\\ &=0.91651514 \end{aligned} Z1=i=1Nw1ieα1f(xi)h1(xi)=0.1e0.4236+0.1e0.4236+0.1e0.4236+0.1e0.4236+0.1e0.4236+0.1e0.4236+0.1e0.4236+0.1e0.4236+0.1e0.4236+0.1e0.4236=0.1e0.4236×7+0.1e0.4236×3简化计算=0.06546857×7+0.15274505×3=0.91651514

可求得:

序号 i i i12345678910
数据 x x x0123456789
类别标签 y = f ( x ) y=f(x) y=f(x)111-1-1-1111-1
权值分布 D 1 = ( w 1 i ) D_1=(w_{1i}) D1=(w1i)0.10.10.10.10.10.10.10.10.10.1
基分类器结果 h 1 ( x ) h_1(x) h1(x)111-1-1-1-1-1-1-1
分子 [ 1 ] ^{[1]} [1] w 1 i e − α 1 f ( x i ) h 1 ( x i ) w_{1i}e^{-\alpha_{1}f(x_i)h_1(x_i)} w1ieα1f(xi)h1(xi)0.065468570.065468570.065468570.065468570.065468570.065468570.152745050.152745050.152745050.06546857
权值分布 [ 2 ] ^{[2]} [2] D 2 = ( w 2 i ) D_2=(w_{2i}) D2=(w2i)0.071430.071430.071430.071430.071430.071430.166660.166660.166660.07143

[1]这里的分子计算: 0.1 e − 0.4236 = 0.06546857 0.1e^{-0.4236}=0.06546857 0.1e0.4236=0.06546857 0.1 e 0.4236 = 0.15274505 0.1e^{0.4236}=0.15274505 0.1e0.4236=0.15274505

[2]可以观察到:第 1 轮中基学习器分类错误的样本 x=6,7,8,在 D 2 D_2 D2 中的权重变大了,而其他样本权重降低了。

此时的集成分类器:
H 1 ( x ) = 0.4236 h 1 ( x ) H_1(x)=0.4236h_1(x) H1(x)=0.4236h1(x)
分类结果 F ( x ) = s i g n ( 0.4236 h 1 ( x ) ) F(x)=\mathrm{sign}\Big(0.4236h_1(x)\Big) F(x)=sign(0.4236h1(x)) 在训练数据集上有 3 个误分类点。

2.4.4 算法步骤3b-7b(第 2 轮)

3b:基于分布 D t = D 2 D_t=D_2 Dt=D2 从数据集 D D D 中训练出分类器 h t = h 2 h_t=h_2 ht=h2
h 2 = L ( D , D 2 ) h_2=\mathfrak{L}(D,D_2) h2=L(D,D2)
在权值分布为 D 2 D_2 D2 的训练数据上,阈值 v v v 取 8.5 时分类误差率最低,故基本分类器为:
h 2 ( x ) = { 1 , x < 8.5 − 1 , x > 8.5 h_2(x)=\begin{cases}{1},&x\lt 8.5\\{-1},&x\gt 8.5\end{cases} h2(x)={1,1,x<8.5x>8.5
4b:估计 h 2 h_2 h2 的误差:

序号 i i i12345678910
数据 x x x0123456789
类别标签 y = f ( x ) y=f(x) y=f(x)111-1-1-1111-1
权值分布 D 2 D_2 D20.071430.071430.071430.071430.071430.071430.166660.166660.166660.07143
基分类器结果 h 2 ( x ) h_2(x) h2(x)111111111-1
正误×××

h 2 ( x ) h_2(x) h2(x) 的在训练数据集上的误差率为:
ϵ 2 = P x ∼ D 2 ( h 2 ( x ) ≠ f ( x ) ) = 0.07143 + 0.07143 + 0.07143 = 0.2143 \epsilon_2=P_{x\sim D_2}(h_2(x)\neq f(x))=0.07143+0.07143+0.07143=0.2143 ϵ2=PxD2(h2(x)=f(x))=0.07143+0.07143+0.07143=0.2143
5b:检查当前基分类器是否比随机猜测好:
ϵ 2 = 0.2143 ≤ 0.5 \epsilon_{2}=0.2143\leq 0.5 ϵ2=0.21430.5
基分类器 h 2 h_2 h2 比随机猜测好,循环继续进行。

6b:确定分类器 h t = h 2 h_t=h_2 ht=h2 的权重 α 2 \alpha_2 α2
α 2 = 1 2 l n ( 1 − ϵ 2 ϵ 2 ) = 1 2 l n ( 1 − 0.2143 0.2143 ) = 0.6496 \alpha_{2}=\dfrac{1}{2}ln\Big(\dfrac{1-\epsilon_{2}}{\epsilon_2}\Big)=\dfrac{1}{2}ln\Big(\dfrac{1-0.2143}{0.2143}\Big)=0.6496 α2=21ln(ϵ21ϵ2)=21ln(0.214310.2143)=0.6496
7b:更新样本的权值分布:
D 3 = ( w 31 , … , w 3 i , … , w 310 ) = D 2 ( x ) e − α 2 f ( x ) h 2 ( x ) Z 2 D_3=(w_{31},…,w_{3i},…,w_{310})=\dfrac{D_2(x)e^{-\alpha_{2}f(x)h_2(x)}}{Z_2} D3=(w31,,w3i,,w310)=Z2D2(x)eα2f(x)h2(x)

w 3 i = w 2 i Z 2 e − α 2 f ( x i ) h 2 ( x i ) , i = 1 , 2 , … , 10 w_{3i}=\dfrac{w_{2i}}{Z_2}e^{-\alpha_{2}f(x_i)h_2(x_i)},\quad i=1,2,…,10 w3i=Z2w2ieα2f(xi)h2(xi),i=1,2,,10

且已求得,基分类器权重 α 2 = 0.6496 \alpha_2=0.6496 α2=0.6496

可求,规范化因子:
Z t = ∑ i = 1 N w t i e − α t f ( x i ) h t ( x i ) Z_t=\sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})} Zt=i=1Nwtieαtf(xi)ht(xi)

Z 2 = ∑ i = 1 N w 2 i e − α 2 f ( x i ) h 2 ( x i ) = 0.07143 e − 0.6496 + 0.07143 e − 0.6496 + 0.07143 e − 0.6496 + 0.07143 e 0.6496 + 0.07143 e 0.6496 + 0.07143 e 0.6496 + 0.16666 e − 0.6496 + 0.16666 e − 0.6496 + 0.16666 e − 0.6496 + 0.07143 e − 0.6496 = 0.07143 e − 0.6496 × 4 + 0.07143 e 0.6496 × 3 + 0.16666 e − 0.6496 × 3 简化计算 = 0.03730465 × 4 + 0.13677236 × 3 + 0.08703896 × 3 = 0.82065256 \begin{aligned} Z_2&=\sum\limits_{i=1}^{N}w_{2i}e^{-\alpha_{2}f(x_i)h_{2}(x_{i})}\\ &=0.07143e^{-0.6496}+0.07143e^{-0.6496}+0.07143e^{-0.6496}+0.07143e^{0.6496}+0.07143e^{0.6496}+0.07143e^{0.6496}+0.16666e^{-0.6496}+0.16666e^{-0.6496}+0.16666e^{-0.6496}+0.07143e^{-0.6496}\\ &=0.07143e^{-0.6496}\times 4+0.07143e^{0.6496}\times 3+0.16666e^{-0.6496}\times 3\qquad 简化计算\\ &=0.03730465\times 4+0.13677236\times 3+0.08703896\times 3\\ &=0.82065256 \end{aligned} Z2=i=1Nw2ieα2f(xi)h2(xi)=0.07143e0.6496+0.07143e0.6496+0.07143e0.6496+0.07143e0.6496+0.07143e0.6496+0.07143e0.6496+0.16666e0.6496+0.16666e0.6496+0.16666e0.6496+0.07143e0.6496=0.07143e0.6496×4+0.07143e0.6496×3+0.16666e0.6496×3简化计算=0.03730465×4+0.13677236×3+0.08703896×3=0.82065256

可求得:

序号 i i i12345678910
数据 x x x0123456789
类别标签 y = f ( x ) y=f(x) y=f(x)111-1-1-1111-1
权值分布 D 2 = ( w 2 i ) D_2=(w_{2i}) D2=(w2i)0.071430.071430.071430.071430.071430.071430.166660.166660.166660.07143
基分类器结果 h 2 ( x ) h_2(x) h2(x)111111111-1
分子 [ 3 ] ^{[3]} [3] w 2 i e − α 2 f ( x i ) h 2 ( x i ) w_{2i}e^{-\alpha_{2}f(x_i)h_2(x_i)} w2ieα2f(xi)h2(xi)0.037304650.037304650.037304650.136772360.136772360.136772360.087038960.087038960.087038960.03730465
权值分布 [ 4 ] ^{[4]} [4] D 3 = ( w 3 i ) D_3=(w_{3i}) D3=(w3i)0.045460.045460.045460.166660.166660.166660.106060.106060.106060.04546

[3]这里的分子计算: 0.07143 e − 0.6496 = 0.03730465 0.07143e^{-0.6496}=0.03730465 0.07143e0.6496=0.03730465 0.07143 e 0.6496 = 0.13677236 0.07143e^{0.6496}=0.13677236 0.07143e0.6496=0.13677236 0.16666 e − 0.6496 = 0.08703896 0.16666e^{-0.6496}=0.08703896 0.16666e0.6496=0.08703896

[4]可以观察到:第 2 轮中基学习器分类错误的样本 x=3,4,5,在 D 3 D_3 D3 中的权重变大了,而其他样本权重降低了。

此时的集成分类器:
H 2 ( x ) = 0.4236 h 1 ( x ) + 0.6496 h 2 ( x ) H_2(x)=0.4236h_1(x)+0.6496h_2(x) H2(x)=0.4236h1(x)+0.6496h2(x)
分类结果 F ( x ) = s i g n ( 0.4236 h 1 ( x ) + 0.6496 h 2 ( x ) ) F(x)=\mathrm{sign}\Big(0.4236h_1(x)+0.6496h_2(x)\Big) F(x)=sign(0.4236h1(x)+0.6496h2(x)) 在训练数据集上有 3 个误分类点。

2.4.5 算法步骤3c-7c(第 3 轮)

3c:基于分布 D t = D 3 D_t=D_3 Dt=D3 从数据集 D D D 中训练出分类器 h t = h 3 h_t=h_3 ht=h3
h 3 = L ( D , D 3 ) h_3=\mathfrak{L}(D,D_3) h3=L(D,D3)
在权值分布为 D 3 D_3 D3 的训练数据上,阈值 v v v 取 5.5 时分类误差率最低,故基本分类器为:
h 3 ( x ) = { 1 , x > 5.5 − 1 , x < 5.5 h_3(x)=\begin{cases}{1},&x\gt 5.5\\{-1},&x\lt 5.5\end{cases} h3(x)={1,1,x>5.5x<5.5
4c:估计 h 3 h_3 h3 的误差:

序号 i i i12345678910
数据 x x x0123456789
类别标签 y = f ( x ) y=f(x) y=f(x)111-1-1-1111-1
权值分布 D 3 D_3 D30.045460.045460.045460.166660.166660.166660.106060.106060.106060.04546
基分类器结果 h 3 ( x ) h_3(x) h3(x)-1-1-1-1-1-11111
正误××××

h 3 ( x ) h_3(x) h3(x) 的在训练数据集上的误差率为:
ϵ 3 = P x ∼ D 3 ( h 3 ( x ) ≠ f ( x ) ) = 0.04546 + 0.04546 + 0.04546 + 0.04546 = 0.1818 \epsilon_3=P_{x\sim D_3}(h_3(x)\neq f(x))=0.04546+0.04546+0.04546+0.04546=0.1818 ϵ3=PxD3(h3(x)=f(x))=0.04546+0.04546+0.04546+0.04546=0.1818
5c:检查当前基分类器是否比随机猜测好:
ϵ 3 = 0.1818 ≤ 0.5 \epsilon_{3}=0.1818\leq 0.5 ϵ3=0.18180.5
基分类器 h 3 h_3 h3 比随机猜测好,循环继续进行.

6c:确定分类器 h t = h 3 h_t=h_3 ht=h3 的权重 α 3 \alpha_3 α3
α 3 = 1 2 l n ( 1 − ϵ 3 ϵ 3 ) = 1 2 l n ( 1 − 0.1818 0.1818 ) = 0.7521 \alpha_{3}=\dfrac{1}{2}ln\Big(\dfrac{1-\epsilon_{3}}{\epsilon_3}\Big)=\dfrac{1}{2}ln\Big(\dfrac{1-0.1818}{0.1818}\Big)=0.7521 α3=21ln(ϵ31ϵ3)=21ln(0.181810.1818)=0.7521
7c:更新样本的权值分布:
D 4 = ( w 41 , … , w 4 i , … , w 410 ) = D 3 ( x ) e − α 3 f ( x ) h 3 ( x ) Z 3 D_4=(w_{41},…,w_{4i},…,w_{410})=\dfrac{D_3(x)e^{-\alpha_{3}f(x)h_3(x)}}{Z_3} D4=(w41,,w4i,,w410)=Z3D3(x)eα3f(x)h3(x)

w 4 i = w 3 i Z 3 e − α 3 f ( x i ) h 3 ( x i ) , i = 1 , 2 , … , 10 w_{4i}=\dfrac{w_{3i}}{Z_3}e^{-\alpha_{3}f(x_i)h_3(x_i)},\quad i=1,2,…,10 w4i=Z3w3ieα3f(xi)h3(xi),i=1,2,,10

且已求得,基分类器权重 α 3 = 0.7521 \alpha_3=0.7521 α3=0.7521

可求,规范化因子:
Z t = ∑ i = 1 N w t i e − α t f ( x i ) h t ( x i ) Z_t=\sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})} Zt=i=1Nwtieαtf(xi)ht(xi)

$$
\begin{aligned}
Z_3&=\sum\limits_{i=1}{N}w_{3i}e{-\alpha_{3}f(x_i)h_{3}(x_{i})}\

&=0.04546e{0.7521}+0.04546e{0.7521}+0.04546e{0.7521}+0.16666e{-0.7521}+0.16666e{-0.7521}+0.16666e{-0.7521}+0.10606e{-0.7521}+0.10606e{-0.7521}+0.10606e{-0.7521}+0.04546e{0.7521}\
&=0.04546e^{0.7521}\times 4+0.16666e^{-0.7521}\times 3+0.10606e^{-0.7521}\times 3\qquad 简化计算\
&=0.09644113\times 4+0.07855946\times 3+0.04999410\times 3\
&=0.77142520
\end{aligned}
$$

可求得:

序号 i i i12345678910
数据 x x x0123456789
类别标签 y = f ( x ) y=f(x) y=f(x)111-1-1-1111-1
权值分布 D 3 = ( w 3 i ) D_3=(w_{3i}) D3=(w3i)0.045460.045460.045460.166660.166660.166660.106060.106060.106060.04546
基分类器结果 h 3 ( x ) h_3(x) h3(x)-1-1-1-1-1-11111
分子 [ 5 ] ^{[5]} [5] w 3 i e − α 3 f ( x i ) h 3 ( x i ) w_{3i}e^{-\alpha_{3}f(x_i)h_3(x_i)} w3ieα3f(xi)h3(xi)0.096441130.096441130.096441130.078559460.078559460.078559460.049994100.049994100.049994100.09644113
权值分布 [ 6 ] ^{[6]} [6] D 4 = ( w 4 i ) D_4=(w_{4i}) D4=(w4i)0.125020.125020.125020.101840.101840.101840.064810.064810.064810.12502

[5]这里的分子计算: 0.04546 e 0.7521 = 0.09644113 0.04546e^{0.7521}=0.09644113 0.04546e0.7521=0.09644113 0.16666 e − 0.7521 = 0.07855946 0.16666e^{-0.7521}=0.07855946 0.16666e0.7521=0.07855946 0.10606 e − 0.7521 = 0.04999410 0.10606e^{-0.7521}=0.04999410 0.10606e0.7521=0.04999410

[6]可以观察到:第 3 轮中基学习器分类错误的样本 x=0,1,2,9,在 D 4 D_4 D4 中的权重变大了,而其他样本权重降低了。

此时的集成分类器:
H 3 ( x ) = 0.4236 h 1 ( x ) + 0.6496 h 2 ( x ) + 0.7521 h 3 ( x ) H_3(x)=0.4236h_1(x)+0.6496h_2(x)+0.7521h_3(x) H3(x)=0.4236h1(x)+0.6496h2(x)+0.7521h3(x)
分类结果 F ( x ) = s i g n ( 0.4236 h 1 ( x ) + 0.6496 h 2 ( x ) + 0.7521 h 3 ( x ) ) F(x)=\mathrm{sign}\Big(0.4236h_1(x)+0.6496h_2(x)+0.7521h_3(x)\Big) F(x)=sign(0.4236h1(x)+0.6496h2(x)+0.7521h3(x)) 在训练数据集上有 0 个误分类点。

具体如下:

序号 i i i12345678910
数据 x x x0123456789
类别标签 y = f ( x ) y=f(x) y=f(x)111-1-1-1111-1
基分类器结果 h 1 ( x ) h_1(x) h1(x)111-1-1-1-1-1-1-1
加权 α 1 h 1 ( x ) \alpha_{1}h_1(x) α1h1(x)0.42360.42360.4236-0.4236-0.4236-0.4236-0.4236-0.4236-0.4236-0.4236
基分类器结果 h 2 ( x ) h_2(x) h2(x)111111111-1
加权 α 2 h 2 ( x ) \alpha_{2}h_2(x) α2h2(x)0.64960.64960.64960.64960.64960.64960.64960.64960.6496-0.6496
基分类器结果 h 3 ( x ) h_3(x) h3(x)-1-1-1-1-1-11111
加权 α 3 h 3 ( x ) \alpha_{3}h_3(x) α3h3(x)-0.7521-0.7521-0.7521-0.7521-0.7521-0.75210.75210.75210.75210.7521
∑ t = 1 T α t h t ( x ) \sum\limits_{t=1}^{T}\alpha_{t}h_{t}(x) t=1Tαtht(x)0.32110.32110.3211-0.5261-0.5261-0.52610.97810.97810.9781-0.3211
集成分类器结果 F ( x ) F(x) F(x)111-1-1-1111-1
正误
2.4.6 算法步骤8

8:结束循环

输出结果:
F ( x ) = s i g n ( ∑ t = 1 T α t h t ( x ) ) = s i g n ( 0.4236 h 1 ( x ) + 0.6496 h 2 ( x ) + 0.7521 h 3 ( x ) ) F(x)=\mathrm{sign}\Big(\sum\limits_{t=1}^{T}\alpha_{t}h_{t}(x)\Big)=\mathrm{sign}\Big(0.4236h_1(x)+0.6496h_2(x)+0.7521h_3(x)\Big) F(x)=sign(t=1Tαtht(x))=sign(0.4236h1(x)+0.6496h2(x)+0.7521h3(x))
AdaBoost 算法在本数据集的运算至此结束。

2.5 代码实现

见代码文件“AdaBoost.ipynb”。

2.6 算法分析
2.6.1 主要优点

①AdaBoost 作为分类器时,分类精度很高,训练误差以指数速率下降;

②在 AdaBoost 的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活;

③作为简单的二元分类器时,构造简单,结果可理解。

2.6.2 主要缺点

在 Adaboost 训练过程中,Adaboost 会使得难于分类的样本的权值呈指数增长,训练将会过于偏向这类困难的样本;因此它对异常样本是敏感的,异常样本在迭代中可能会获得较高的权重,影响最终强学习器的预测准确性。

2.7 常用技巧
2.7.1 特征缩减技术(Shrinkage)

对每个基学习器乘以一个系数 v ( 0 < v < 1 ) v\ (0\lt v\lt 1) v (0<v<1),使其对最终模型的贡献减小,从而防止学的太快产生过拟合, v v v 又称学习率(learning rate)。

于是,上文的加法模型就从:
H ( x ) = H t − 1 ( x ) + α t h t ( x ) H(x)=H_{t-1}(x)+\alpha_{t}h_t(x) H(x)=Ht1(x)+αtht(x)
变为:
H ( x ) = H t − 1 ( x ) + v ⋅ α t h t ( x ) H(x)=H_{t-1}(x)+v\cdot\alpha_{t}h_t(x) H(x)=Ht1(x)+vαtht(x)
一般 v v v 要和迭代次数 T T T 结合起来使用,较小的 v v v 意味着需要较大的 T T T

The Elements of Staistical Learning》提到的策略是先将 v v v 设得很小 ( v < 0.1 ) (v\lt 0.1) (v<0.1),再通过 Early Stopping 选择 T T T;现实中也常用交叉验证(cross-validation)进行选择。

2.7.2 早停法(Early Stopping)

将数据集划分为训练集和测试集,在训练过程中不断检查在测试集上的表现,如果测试集上的准确率下降到一定阈值之下,则停止训练,选用当前的迭代次数 T T T,这同样是防止过拟合的手段。

2.7.3 权值修整(Weight Trimming)

Weight Trimming 的主要目的是提高训练速度,且不显著牺牲准确率。

在 AdaBoost 的每一轮基学习器训练过程中,只有小部分样本的权重较大,因而能产生较大的影响;而其他大部分权重小的样本则对训练影响甚微。

Weight Trimming 的思想是每一轮迭代中删除那些低权重的样本,只用高权重样本进行训练。具体是设定一个阈值(比如90%或99%),再将所有样本按权重排序,计算权重的累积和,累积和大于阈值的权重 (样本) 被舍弃,不会用于训练。注意每一轮训练完成后所有样本的权重依然会被重新计算,这意味着之前被舍弃的样本在之后的迭代中如果权重增加,可能会重新用于训练。

参考文献[9]中有使用 Weight Trimming 的 AdaBoost 代码,可供参考。

2.8 参考文献

[1]《机器学习》周志华

[2]《统计学习方法》李航

[3]《机器学习西瓜书之集成学习》爱你的小魔仙 https://www.bilibili.com/video/BV1PK4y147VQ/

[4] 《集成学习 之【Adaboost】 —— 李航《统计学习方法》相关章节解读》老弓的学习日记 https://www.bilibili.com/video/BV1x44y1r7Zc

[5]《通俗易懂讲算法-Adaboost》青青草原灰太郎 https://www.bilibili.com/video/BV13S4y1t7aY/

[6]《Adaboost是如何训练弱分类器的》herain https://www.zhihu.com/question/443511497?utm_id=0

[7]《集成学习之Boosting —— AdaBoost原理》wdmad https://zhuanlan.zhihu.com/p/37358517

[8]《集成学习之Boosting —— AdaBoost实现》wdmad https://zhuanlan.zhihu.com/p/37357981

[9]《AdaBoost 算法》Rnan-prince https://blog.csdn.net/qq_19446965/article/details/104200720

[10]《集成学习(Ensemble learning)》张梓寒 https://www.cnblogs.com/ZihanZhang/p/16351469.html

[11]《Statistical-Learning-Method_Code》Dod-o https://github.com/Dod-o/Statistical-Learning-Method_Code

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

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

相关文章

视频通话实时换脸:支持训练面部模型 | 开源日报 No.235

iperov/DeepFaceLive Stars: 19.7k License: GPL-3.0 DeepFaceLive 是一个用于 PC 实时流媒体或视频通话的人脸换装工具。 可以使用训练好的人脸模型从网络摄像头或视频中交换面部。提供多个公共面部模型&#xff0c;包括 Keanu Reeves、Mr. Bean 等。支持自己训练面部模型以…

字符串类型漏洞之updatexml函数盲注

UPDATEXML 是 MySQL 数据库中的一个函数&#xff0c;它用于对 XML 文档数据进行修改和查询。然而&#xff0c;当它被不当地使用或与恶意输入结合时&#xff0c;它可能成为 SQL 注入攻击的一部分&#xff0c;从而暴露敏感信息或导致其他安全漏洞。 在 SQL 注入攻击中&#xff0…

【数值模型后处理系列】通风系数计算及垂直层插值

一、通风系数 1.1 通风系数简介 通风系数&#xff08;Ventilation Coefficient&#xff0c;VC&#xff09;可以用来表征扩散条件&#xff0c;其计算公式如下&#xff08;参考U S Iyer and P Ernest Raj的文章&#xff09;&#xff1a; 其中mixing depth选用WRF输出的边界层高…

如何我现在是本地的文件路径不是http,用html如何打开

--别给我BB 如何我现在是本地的文件架路径不是http&#xff0c;用html如何打开? 答&#xff1a; 如果你想在HTML中打开本地文件路径的视频&#xff0c;可以使用file://协议。假设你的视频文件在本地的路径为/path/to/your/video.mp4&#xff0c;那么你可以将src属性设置为file…

【Django】初识Django快速上手

Django简介 Django是一个高级的、开源的Python Web框架&#xff0c;旨在快速、高效地开发高质量的Web应用程序 https://developer.mozilla.org/zh-CN/docs/Learn/Server-side/Django/Introduction 安装Django pip install Django如果要知道安装的Django的版本&#xff0c;可…

锂电池SOH预测 | 基于CNN-GRU的锂电池SOH预测(matlab)

锂电池SOH预测 锂电池SOH预测完整代码锂电池SOH预测 锂电池的SOH(状态健康度)预测是一项重要的任务,它可以帮助确定电池的健康状况和剩余寿命,从而优化电池的使用和维护策略。 SOH预测可以通过多种方法实现,其中一些常用的方法包括: 容量衰减法:通过监测电池的容量衰减…

Qt/C++ 波形绘制双缓冲下改善PaintEvent连续绘制卡顿问题(完整代码解析)

音频波形可视化&#xff1a;该控件用于将音频样本数据可视化为波形&#xff0c;常用于音频处理软件中以展示音频信号的时间域特性。 动态数据绘制&#xff1a;控件能够响应外部数据的变化并重新绘制波形&#xff0c;适用于实时或动态的音频数据流。 自定义绘制逻辑&#xff1…

Android Studio gradle 默认sourceSets配置

一. AS默认的sourceSets配置 sourceSets在Android插件中如何使用的&#xff1a;android {sourceSets {main {manifest.srcFile AndroidManifest.xmljava.srcDirs [src]resources.srcDirs [src]aidl.srcDirs [src]renderscript.srcDirs [src]res.srcDirs [res]assets.srcD…

Pycharm新建工程时使用Python自带解释器的方法

Pycharm新建工程时使用Python自带解释器的方法 新建Project时最好不要新建Python解释器&#xff0c;实践证明&#xff0c;自己新建的Python解释器容易出现各种意想不到的问题。 那么怎样使用Python安装时自带的解释器呢&#xff1f; 看下面的三张截图大家就清楚了。 我的Pyth…

机器视觉系统-工业光源什么是同轴光

光路描述&#xff1a;反射光线与镜头平行&#xff0c;称为同轴光。 效果分析&#xff1a;光线经过平面反射后&#xff0c;与光轴平行地进入镜头。此时被测物相当于一面镜子&#xff0c;图像体现的是光源的信息&#xff0c;当“镜子“出现凹凸不平时&#xff0c;将格外地明显。 …

Linux异步io机制 io_uring

io_uring作为2019年的后起之秀&#xff0c;为linux异步网络编程新增一把倚天大剑&#xff0c;让我们简单学习一下&#xff01; 数据结构&#xff1a; a. sq (submition queue)&#xff1a;提交队列&#xff0c;一个存放待执行事件的环形队列 b. cq (completion queue): 完成…

Node.js -- 包管理工具

文章目录 1. 概念介绍2. npm2.1 npm 下载2.2 npm 初始化包2.3 npm 包(1) npm 搜索包(2) npm 下载安装包(3) require 导入npm 包的基本流程 2.4 开发依赖和生产依赖2.5 npm 全局安装(1) 修改windows 执行策略(2) 环境变量Path 2.6 安装包依赖2.7 安装指定版本的包2.8 删除依赖2.…

visual studio2022,开发CMake项目添加rabbitmq库,连接到远程计算机并进行开发于调试

1.打开visual studio installer 。安装“用于 Windows 的 C CMake 工具” 2.新建CMake项目 3.点击VS的“工具”—>"选项“—>“跨平台”—>”连接管理器“,添加远程计算机。用来将VS编辑的代码传到服务器进行编译–连接—运行&#xff08;调试&#xff09;。 …

java中的泛型(三)——通配符

在前面的文章中我们简要介绍了泛型的概念以及泛型类和泛型方法的使用。在介绍泛型时我们说过在在java中一般用E、T、K、V、N、?这几个字母和符号来表示泛型&#xff0c;对于前面的几个字符它们的使用没有区别&#xff0c;只要注意它们所代表的类型就好。而对于最后一个&#x…

优化大型语言模型交互:提升查询和提示效果的26条原则

推荐下arxiv挂的一个提示词教程&#xff1a; https://github.com/VILA-Lab/ATLAS https://arxiv.org/abs/2312.16171 它提出了一套26条指导原则&#xff0c;改善和优化与大型语言模型&#xff08;LLMs&#xff09;的交互过程。通过这些原则&#xff0c;旨在简化对LLMs的查询和…

E4980A是德科技E4980A精密LCR表

181/2461/8938产品概述&#xff1a; Keysight E4980A 精密 LCR 表为各种元件测量提供了精度、速度和多功能性的最佳组合。E4980A 在低阻抗和高阻抗范围内提供快速测量速度和出色的性能&#xff0c;是元件和材料的一般研发和制造测试的终极工具。LAN、USB 和 GPIB PC 连接可提高…

【氮化镓】p-GaN HEMTs空穴陷阱低温冻结效应

这篇文章是关于低温条件下p-GaN高电子迁移率晶体管&#xff08;HEMTs&#xff09;栅极漏电的研究。文章通过电容深能级瞬态谱&#xff08;C-DLTS&#xff09;测试和理论模型分析&#xff0c;探讨了空穴陷阱对栅极漏电电流的影响。以下是对文章的总结&#xff1a; 摘要&#xf…

本地认证的密码去哪了?怎么保证安全的?

1. windows登录的明文密码&#xff0c;存储过程是怎么样的&#xff1f;密文存在哪个文件下?该文件是否可以打开&#xff0c;并且查看到密文&#xff1f; 系统将输入的明文密码通过hash算法转为哈希值&#xff0c;且输入的值会在内存中立即删除无法查看。 然后将密文存放在C:…

基于Spring Boot的火车订票管理系统设计与实现

基于Spring Boot的火车订票管理系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 前台首页功能界面图&#xff0c;在系统首页可以查看…

ROS机器人小车建模仿真与SLAM(5)

目录 一、ROS中使用摄像头 1.1 验证摄像头设备可用 1.2 安装cheese 1.3 测试 二、获取摄像头驱动包 2.1 usb_cam 2.1.1 rosrun方式运行 2.1.2 roslaunch方式运行 三、摄像头标定(camera calibration) 3.2 标定前准备 3.2.1 标定板 3.2.2 摄像头调焦 3.3 标定摄像头…