当前位置: 首页 > news >正文

Boosting【文献精读、翻译】

Boosting

Bühlmann, P., & Yu, B. (2009). Boosting. Wiley Interdisciplinary Reviews: Computational Statistics, 2(1), 69–74. doi:10.1002/wics.55

摘要

在本文中,我们回顾了Boost方法,这是分类和回归中最有效的机器学习方法之一。虽然我们也讨论了边际观点(margin point of view),但主要采用梯度下降的视角。文章特别介绍了分类中的 AdaBoost 和回归中的各种 L2Boosting 版本。同时,我们还为实践者提供了如何选择基础(弱)学习器和损失函数的建议,并给出了相关软件的使用指引。


Boosting 是一种现代统计方法,起源于20世纪90年代中期的机器学习,用于分类和回归。在过去几年中,Boosting 在理解和建模实际数据方面取得了显著进展。Boosting 被成功应用于许多领域,包括文本挖掘、图像分割、语言翻译、生物信息学、神经科学和金融等。

Boosting 具有以下几个特点:

  1. 集成方法:通过线性组合多个“弱学习器”形成的集成方法。
  2. 优化相关:与优化(通常是凸的)梯度下降(迭代)算法密切相关。这个特性与其他机器学习方法如 bagging 和随机森林共享。
  3. 提前停止:通过提前停止来实现正则化,这将正则化与数值优化结合,使得 Boosting 非常独特。
  4. 数据加权:Boosting 会根据前一次迭代的结果重新加权数据样本,这是因为损失函数梯度的形式导致的,尽管这一特点并非所有 Boosting 变体都具有,但在原始的 AdaBoost 算法中是非常重要的。

Kearns 和 Valiant 在“可能近似正确”(probably approximately correct,PAC)学习的框架中提出了一个猜想,即 一个成功率稍高于50%的弱分类器可以通过 Boosting 转化为一个强分类器 ,使得新的分类器训练误差趋于零,并且在多项式时间内完成计算。

在他的获奖麻省理工学院计算机科学论文中,回答了这一问题,并且 Freund 和 Schapire 设计了第一个实用的 Boosting 算法 AdaBoost,用于二分类问题。

Breiman 通过从 梯度下降 的角度重新推导出 AdaBoost,将 AdaBoost 与优化紧密联系起来。他基于边际(即真实标签 y ∈ { − 1 , 1 } y \in \{-1, 1\} y{1,1} 与预测值 f f f 的乘积 y f yf yf)的指数损失函数进行了推导。这一联系进一步被 Friedman 等人和 Mason 等人发展。

在统计学界,通过对不同损失函数的广义 AdaBoost 和通过不同的梯度下降方法,衍生出了许多 Boosting 变体。最著名的包括分类中的 LogitBoost 和回归中的 L2Boosting。

机器学习社区的另一研究方向则集中在边际视角(the margin view point)下的 AdaBoost,最近的研究强调了 AdaBoost 的集成和重新加权方面。

Boosting 的理论分析由理论统计学和理论机器学习社区共同发展。统计学家研究了如贝叶斯一致性和模型选择一致性,以及提前停止时各种 Boosting 方法的 Minimax 收敛率;而机器学习学者则研究了 Boosting 的算法收敛性和通过边际分布和模型类的复杂性测量及样本大小对 AdaBoost 泛化误差的上界。

这些理论分析的一个重要见解是,Boosting 过程的复杂性并不是迭代次数的简单线性函数。例如,在一个简单的回归案例中,复杂性随着迭代次数的增加而以指数递减的方式增长—— 复杂性上界由噪声方差决定,并且随着迭代次数增加,增加的复杂量变得极小 。这部分解释了 AdaBoost 的 抗过拟合特性

最终,AdaBoost 和其他所有 Boosting 方法都会过拟合,但在分类问题中,由于评估0-1损失函数的鲁棒性以及 Boosting 复杂性的缓慢增加,这个过程可能会持续很长时间。大多数理论研究都是在独立同分布(i.i.d.)假设下进行的,但也有一些研究对平稳数据源(stationary data sources)进行了推广。

本文主要从梯度下降的角度回顾 Boosting 算法。我们将特别介绍 AdaBoost、LogitBoost 和 L2Boosting 算法。在简要讨论边际视角之后,我们将讨论损失函数、基础学习器和停止规则的选择。

梯度下降的角度

我们从梯度下降的角度描述 Boosting 算法,特别是介绍用于分类的 AdaBoost 和 LogitBoost(对应于不同的损失函数 L L L )以及用于回归的各种版本的 L2Boosting(对应于 L 2 L2 L2 损失函数)。最后,我们简要提及从经验损失(empirical loss)到惩罚经验损失(penalized empirical loss)如回归中的 Lasso 的 Boosting 泛化。

L 2 L2 L2 损失函数,也叫均方误差 (Mean Squared Error, MSE),是机器学习和统计中常用的一种衡量模型预测误差的方法。它通过计算预测值与实际值之间差值的平方,然后取这些平方误差的平均值来表示。具体公式如下:
L 2 损失 = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 L2 \text{ 损失} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 L2 损失=n1i=1n(yiy^i)2
其中:

  • y i y_i yi 是第 i i i 个实际值
  • y ^ i \hat{y}_i y^i 是第 i i i 个预测值
  • n n n 是样本数量

L 2 L2 L2 损失函数惩罚大的误差,使得模型更关注较大的偏差。

假设我们观察到 ( X 1 , Y 1 ) , … , ( X n , Y n ) (X1, Y1), \ldots, (Xn, Yn) (X1,Y1),,(Xn,Yn),其中 X i ∈ R p Xi \in \mathbb{R}^p XiRp 表示一个 p p p 维预测变量, Y i Y_i Yi 表示一个单变量响应(univariate response),例如在回归中取值于 R \mathbb{R} R 或在二分类中取值于 { − 1 , + 1 } \{-1, +1\} {1,+1}

接下来,我们用 X ( j ) X^{(j)} X(j) 表示向量 X ∈ R p X \in \mathbb{R}^p XRp 的第 j j j 个分量。我们通常假设对 ( X i , Y i ) (Xi, Yi) (Xi,Yi) 是独立同分布(i.i.d.)或来自平稳过程(stationary process)。目标是估计回归函数 F ( x ) = E [ Y ∣ X = x ] F(x) = \mathbb{E}[Y|X = x] F(x)=E[YX=x] 或找到分类器 sign ( F ( x ) ) \text{sign}(F(x)) sign(F(x)),其中 F ( x ) : R p → R F(x): \mathbb{R}^p \rightarrow \mathbb{R} F(x):RpR

通过实值损失函数(real-valued loss function)评估估计性能,意思是我们想最小化期望损失或风险:

E [ L ( Y , F ( X ) ) ] , (2) \mathbb{E}[L(Y, F(X))], \tag{2} E[L(Y,F(X))](2)

基于数据 ( X i , Y i ) ( i = 1 , . . . , n ) (Xi, Yi)(i = 1, ..., n) (Xi,Yi)(i=1,...,n)。假设损失函数 L L L 在第二个参数上是平滑和凸的,因此可以应用梯度方法。

通过在基础学习器上的函数梯度下降最小化经验损失函数可以得到 Boosting 算法。

n − 1 ∑ i = 1 n L ( Y i , F ( X i ) ) , (3) n^{-1} {\textstyle \sum_{i = 1}^{n}} L(Y_i , F(X_i)), \tag{3} n1i=1nL(Yi,F(Xi)),(3)

基础学习器的形式为 h ( x , θ ^ ) ( x ∈ R p ) h(x, \hat{\theta})(x \in \mathbb{R}^p) h(x,θ^)(xRp) ,其中 θ ^ \hat{\theta} θ^ 是有限或无限维度的估计参数。

例如,基础学习器可以是树桩, θ ^ \hat{\theta} θ^ 描述分裂的轴、分裂点和两个终端节点的拟合值。基于数据拟合基础学习器是基础学习器的一部分。

Boosting 方法论通常基于用户确定的基础过程或弱学习器,并在修改后的数据上反复使用它们,这些数据通常是先前迭代的输出。最终的 Boosting 过程采用基础过程的线性组合的形式。具体来说,给定一个基础学习器 h ( x , θ ) h(x, \theta) h(x,θ),Boosting 可以作为损失函数 L L L 上的函数梯度下降来推导。

Boosting(梯度下降视角)

  1. F 0 ( x ) = 0 F_0(x) = 0 F0(x)=0 开始。
  2. 给定 F m − 1 ( x ) F_{m−1}(x) Fm1(x),设

( β m , h ( x , θ ^ m ) ) ) = arg min ⁡ β ∈ R , θ ∑ i = 1 n L ( Y i , F m − 1 ( X i ) + β h ( x , θ ) ) 。 (\beta_m, h(x, \hat{\theta}_m))) = \argmin_{\beta \in \mathbb{R}, \theta} \sum_{i=1}^n L(Y_i, F_{m−1}(X_i) + \beta h(x, \theta))。 (βm,h(x,θ^m)))=βR,θargmini=1nL(Yi,Fm1(Xi)+βh(x,θ))

F m ( x ) = F m − 1 ( x ) + β m h ( x , θ ^ m ) 。 F_m(x) = F_{m−1}(x) + \beta_m h(x, \hat{\theta}_m)。 Fm(x)=Fm1(x)+βmh(x,θ^m)

  1. m = M m = M m=M 时停止。

AdaBoost 分类器为 sign ( F M ( x ) ) \text{sign}(F_M(x)) sign(FM(x))

分类

在二分类中, y ∈ { − 1 , + 1 } y \in \{-1, +1\} y{1,+1} ,最常用的损失是 0-1 损失。即,对于分类器 sign ( F ( x ) ) ∈ { − 1 , + 1 } \text{sign}(F(x)) \in \{-1, +1\} sign(F(x)){1,+1} ,如果 x x x 的标签是 y ∈ { − 1 , + 1 } y \in \{-1, +1\} y{1,+1},则 0-1 损失可以写成边际(margin) y F ( x ) yF(x) yF(x) 的函数:

0-1 损失是一种简单的损失函数,主要用于分类问题。它表示预测是否正确的损失,即当预测错误时损失为1,预测正确时损失为0。具体公式如下:
0 − 1 损失 = { 1 , 如果预测错误 0 , 如果预测正确 0-1 \text{ 损失} = \begin{cases} 1, & \text{如果预测错误} \\ 0, & \text{如果预测正确} \end{cases} 01 损失={1,0,如果预测错误如果预测正确
例如,如果模型预测结果与实际结果不一致,损失为1;如果一致,损失为0。

L 01 ( y , F ( x ) ) = I { y F ( x ) < 0 } 。 L_{01}(y, F(x)) = I \{yF(x) < 0\}。 L01(y,F(x))=I{yF(x)<0}

很容易看出,指数损失函数

L exp ( y , F ( x ) ) = exp ⁡ ( − y F ( x ) ) L_{\text{exp}}(y, F(x)) = \exp (-yF(x)) Lexp(y,F(x))=exp(yF(x))

L 01 L_{01} L01 的上界,其总体最小化器是对数几率比的一半:

F ( x ) = 1 2 log ⁡ P ( Y = 1 ∣ X = x ) P ( Y = − 1 ∣ X = x ) 。 F(x) = \frac{1}{2} \log \frac{P(Y = 1|X = x)}{P(Y =−1|X = x)}。 F(x)=21logP(Y=1∣X=x)P(Y=1∣X=x)

例如,在 AdaBoost 中,弱或基础学习器是一个将给定训练数据集映射到训练误差低于随机猜测(小于50%)的分类器的过程。常用的是基于树的分类器。AdaBoost 通过以加法方式改进当前拟合,以最小化基础学习器上的经验指数损失函数(作用于修改后的数据集)和乘数。

AdaBoost

  1. F 0 ( x ) = 0 F_0(x) = 0 F0(x)=0 开始;
  2. 给定 F m − 1 ( x ) F_{m−1}(x) Fm1(x),设

w i ( m ) = exp ⁡ ( − Y i F m − 1 ( X i ) ) , (9) w_i^{(m)} = \exp(-Y_i F_{m−1}(X_i)), \tag{9} wi(m)=exp(YiFm1(Xi))(9)

h ( x , θ ^ m ) = arg min ⁡ θ ∑ i = 1 n w i ( m ) I { Y i ≠ h ( X i , θ ) } , (10) h(x, \hat{\theta}_m) = \argmin_{\theta} \sum_{i=1}^n w_i^{(m)} I \{Y_i \ne h(X_i, \theta)\}, \tag{10} h(x,θ^m)=θargmini=1nwi(m)I{Yi=h(Xi,θ)}(10)

并记 h ( ⋅ , θ ^ m ) h(\cdot, \hat{\theta}_m) h(,θ^m) 的关联误差为

err m = ∑ i = 1 w i ( m ) I { Y i ≠ h ( X i , θ ^ m ) } ∑ i = 1 w i ( m ) 。 \text{err}_m = \frac{\sum_{i=1} w_i^{(m)} I \{Y_i \ne h(X_i, \hat{\theta}_m)\}}{\sum_{i=1} w_i^{(m)}}。 errm=i=1wi(m)i=1wi(m)I{Yi=h(Xi,θ^m)}

进一步设

β m = 1 2 log ⁡ 1 − err m err m 。 \beta_m = \frac{1}{2} \log \frac{1 - \text{err}_m}{\text{err}_m}。 βm=21logerrm1errm

F m ( x ) = F m − 1 ( x ) + β m h ( x , θ ^ m ) 。 F_m(x) = F_{m−1}(x) + \beta_m h(x, \hat{\theta}_m)。 Fm(x)=Fm1(x)+βmh(x,θ^m)

  1. m = M m = M m=M 时停止。
  2. AdaBoost 分类器为 y = sign ( F M ( x ) ) y = \text{sign}(F_M(x)) y=sign(FM(x))

显然,AdaBoost 算法的两个关键输入是基础学习器 h ( ⋅ , θ ) h(\cdot, \theta) h(,θ) 的选择和 M 的停止规则。在许多实证研究中,已经有效地使用了树桩或八节点树(eight-node trees)作为基础学习器。停止迭代 M 作为正则化参数。当数据集较大时,可以使用测试数据集或交叉验证来找到这样的 M。当 M 趋于无穷大时,已证明 AdaBoost 估计器收敛于线性组合基础学习器集合上经验指数损失的最小化。

换句话说,AdaBoost 算法通过不断调整和组合基础学习器,使得最终的组合模型在训练数据上的指数损失最小化。也就是说,当算法的迭代次数足够多时,AdaBoost 找到的模型是所有可能的基础学习器线性组合中,使经验指数损失(在训练数据上的损失)最小的那个模型。

八节点树是一种决策树,每个树最多有八个终端节点(或叶子节点)。决策树是一种基于树结构的模型,用于分类或回归任务。每个节点根据特定特征对数据进行分割,直到到达叶子节点,叶子节点代表最终的分类或预测值。八节点树具体指最多有八个这样的叶子节点。

正则化参数是一种控制模型复杂度的参数,用于防止模型过拟合。过拟合是指模型在训练数据上表现很好,但在新数据上表现不佳。正则化通过在损失函数中添加额外的惩罚项来限制模型的复杂度,惩罚项通常是模型参数的大小。
常见的正则化方法包括:

  • L1 正则化(Lasso):惩罚模型参数的绝对值之和。
  • L2 正则化(Ridge):惩罚模型参数的平方和。

正则化参数决定了惩罚项的权重。例如,在 L2 正则化中,损失函数变为:
L 2 损失 = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 + λ ∑ j = 1 p θ j 2 L2 \text{ 损失} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 + \lambda \sum_{j=1}^p \theta_j^2 L2 损失=n1i=1n(yiy^i)2+λj=1pθj2
其中 λ \lambda λ 就是正则化参数, θ j \theta_j θj 是模型的参数。通过调整 λ \lambda λ 的值,我们可以控制正则化的强度,从而平衡模型的拟合能力和复杂度。

我们将进一步讨论基础过程的选择和一些 M 的停止规则。

LogitBoost

如果损失函数是具有逻辑链函数(log-likelihood)的逻辑模型的负对数似然函数,我们得到损失函数

log ⁡ ( 1 + exp ⁡ ( − y F ) ) , \log(1 + \exp(-yF)), log(1+exp(yF))

  • y F ≤ 0 yF \leq 0 yF0 时, exp ⁡ ( − y F ) ≥ 1 \exp(-yF) \geq 1 exp(yF)1,因此 1 + exp ⁡ ( − y F ) ≥ 2 1 + \exp(-yF) \geq 2 1+exp(yF)2 ,所以:
    log ⁡ 2 ( 1 + exp ⁡ ( − y F ) ) ≥ log ⁡ 2 ( 2 ) = 1 \log_2(1 + \exp(-yF)) \geq \log_2(2) = 1 log2(1+exp(yF))log2(2)=1

或等效地

L logit ( y , F ) = log ⁡ 2 ( 1 + exp ⁡ ( − y F ) ) , L_{\text{logit}}(y, F) = \log_2(1 + \exp(-yF)), Llogit(y,F)=log2(1+exp(yF))

它作为边际 y F yF yF 的 0-1 损失函数的上界。此外, L logit L_{\text{logit}} Llogit 的期望损失由与指数损失函数中相同的函数最小化。

在多类情况下,可以使用多项式模型中的对数似然函数应用梯度下降算法,以获得多类 Boosting 算法。然而,通常在实践中,使用一对多的方法将多类问题转化为多个二分类问题,这样就可以应用 AdaBoost 或 LogitBoost。

回归:平方误差损失下的 Boosting

在回归中,一个自然的损失函数是平方误差损失。使用这个损失函数时,我们得到 L2Boosting。应用带平方损失的梯度下降 Boosting 算法时,最终会重复拟合基础学习器的残差。同样地,L2Boosting 是经验平方误差风险 1 n ∑ i = 1 n ( Y i − F ( X i ) ) 2 \frac{1}{n} \sum_{i=1}^{n}(Y_i - F(X_i))^2 n1i=1n(YiF(Xi))2(相对于 F ( ⋅ ) F(\cdot) F() )的“受约束”最小化过程,得到一个估计器 F ^ ( ⋅ \hat{F}(\cdot F^( )。

经验风险最小化的正则化再次隐含地通过基础程序的选择和算法约束(如早停或某些惩罚边界)实现。

L2Boosting(使用基础程序 h ( ⋅ , θ ) h(\cdot, \theta) h(,θ)

  1. F 0 = 0 F_0 = 0 F0=0 开始。
  2. 给定 F m − 1 ( x ) F_{m-1}(x) Fm1(x),计算残差 U i = Y i − F m − 1 ( X i ) U_i = Y_i - F_{m-1}(X_i) Ui=YiFm1(Xi) i = 1 , . . . , n i = 1, ..., n i=1,...,n )。将基础程序拟合到当前残差:
    h ( x , θ ^ m ) = arg ⁡ min ⁡ θ ∑ i = 1 n ( U i − h ( X i , θ ) ) 2 , h(x, \hat{\theta}_m) = \arg\min_{\theta} \sum_{i=1}^{n} (U_i - h(X_i, \theta))^2, h(x,θ^m)=argθmini=1n(Uih(Xi,θ))2,
  3. F m ( x ) = F m − 1 ( x ) + β m h ( x , θ ^ m ) , F_m(x) = F_{m-1}(x) + \beta_m h(x, \hat{\theta}_m), Fm(x)=Fm1(x)+βmh(x,θ^m),
    其中线搜索(line search)结果给出 β m ≡ 1 \beta_m \equiv 1 βm1
  4. m = M m = M m=M 时停止, F M ( x ) F_M(x) FM(x) 是回归函数的最终估计器。

如前所述,除了基础学习器 B B B 外,迭代次数 M M M 是 L2Boosting 的主要调优参数。可以通过交叉验证来估计 Boosting 迭代次数。或者,也可以使用某些模型选择标准来绕过交叉验证,从而节省计算时间。

当基础程序只选择所有 p p p 个变量中的一个预测变量(特征)时,梯度下降变成坐标方向梯度下降(coordinatewise gradient descent)。例如,对于逐步平滑样条(component-wise smoothing spline)基础程序,它拟合最小化残差平方和的预测变量,Boosting 估计器得到了一个加性模型拟合。另一个广泛使用的程序是逐步线性最小二乘法,得到线性模型拟合。

L2Boosting:线性模型的坐标方向下降

  1. F 0 = 0 F_0 = 0 F0=0 开始。
  2. 给定 F m − 1 ( x ) F_{m-1}(x) Fm1(x),计算残差 U i = Y i − F m − 1 ( X i ) U_i = Y_i - F_{m-1}(X_i) Ui=YiFm1(Xi) i = 1 , . . . , n i = 1, ..., n i=1,...,n)。令 X i ( j ) X_i^{(j)} Xi(j) X i ∈ R p X_i \in \mathbb{R}^p XiRp 的第 j j j 个分量,
    j ^ m = arg ⁡ min ⁡ j = 1 , . . . , p ∑ i = 1 n ( U i − β ^ m X i ( j ) ) 2 , (18) \hat{j}_m = \arg\min_{j=1,...,p} \sum_{i=1}^{n} (U_i - \hat{\beta}_m X_i^{(j)})^2, \tag{18} j^m=argj=1,...,pmini=1n(Uiβ^mXi(j))2,(18)
    β ^ m = arg ⁡ min ⁡ β ∑ i = 1 n ( U i − β X i ( j ^ m ) ) 2 , (19) \hat{\beta}_m = \arg\min_{\beta} \sum_{i=1}^{n} (U_i - \beta X_i^{(\hat{j}_m)})^2, \tag{19} β^m=argβmini=1n(UiβXi(j^m))2,(19)
  3. F m ( x ) = F m − 1 ( x ) + β ^ m x ( j ^ m ) , F_m(x) = F_{m-1}(x) + \hat{\beta}_m x^{(\hat{j}_m)}, Fm(x)=Fm1(x)+β^mx(j^m),
  4. m = M m = M m=M 时停止, F M ( x ) F_M(x) FM(x) 是线性回归函数的最终估计器。

Friedman 通过使用 ν ⋅ h ( ⋅ , θ ) \nu \cdot h(\cdot, \theta) νh(,θ)(其中 0 < ν ≤ 1 0 < \nu \leq 1 0<ν1 )缩减基础学习器来引入 L2Boosting 的收缩。经验表明,只要 ν \nu ν 较小,步长 ν \nu ν 的选择并不重要;我们通常使用 ν = 0.1 \nu = 0.1 ν=0.1

文献中将 L2Boosting 的一个相关版本称为 e-L2Boosting:

e-L2Boosting

将所有预测变量归一化到相同的尺度,并令 β ^ m \hat{\beta}_m β^m 具有固定的“步长” ν > 0 \nu > 0 ν>0,但其符号取决于所选 X ( j ^ m ) X^{(\hat{j}_m)} X(j^m) 与当前残差向量 U U U 之间的相关性,即,
β ^ m ≡ ν ⋅ sign ( corr ( U , X ( j ^ m ) ) ) . (21) \hat{\beta}_m \equiv \nu \cdot \text{sign}(\text{corr}(U, X^{(\hat{j}_m)})). \tag{21} β^mνsign(corr(U,X(j^m))).(21)

m = 2 m = 2 m=2 ν = 1 \nu = 1 ν=1 时,L2Boosting 已经由 Tukey 提出,名为“twicing”。在参考文献中,e-L2Boosting 也称为前向逐步拟合。研究表明,它与 L1 惩罚最小二乘法 Lasso 相连,并且通常具有 Lasso 的稀疏性。实际上,Lasso 和 e-L2Boosting 通过 Blasso 算法相连,该算法包含 e-L2Boosting 步骤(前向步骤)和适当选择的后向步骤,其中预测变量可以从拟合函数中移除。

除了 L1 惩罚最小二乘法外,还可以采用 L0 惩罚最小二乘法,尽管后者在计算上不便且难以求解。这与 SparseBoosting 相关,后者使用 AIC、BIC 或 gMDL 等信息准则,而文献推荐 gMDL 以实现整体预测性能和稀疏性。最近,Zhang 结合前向和后向步骤来最小化 L0 惩罚最小二乘法,而 Friedman 和 Popescu 设计了一种梯度方向正则化算法,该算法不一定来自显式的惩罚函数。

分类中的边际观点(MARGIN POINT)

Schapire 等人[9] 提出了通过提升边际分布来解释 AdaBoost 有效性的新方法。值得注意的是,边际(margin)是支持向量机方法和理论中的一个关键概念。这项工作引发了机器学习社区对 AdaBoost 的一系列推广,通过最大化不同版本的边际,例如,产生了 LPBoost[32]、SoftBoost[33] 和熵正则化的 LPBoost[14]。

9. Schapire R, Freund Y, Bartlett P, Lee W. Boosting the margin: a new explanation for the effectiveness of voting methods. Ann Stat 1998, 26:1651–1686.

32. Demiriz A, Bennett K, Shawe-Taylor J. Linear programming boosting via column generation. JMach Learn Res 2002, 46:225–254

33. Warmuth M, Glocer K, R ̈ atsch G. (2008a), Boosting algorithms for maximizing the soft margin. In: Platt J, Koller D, Singer Y, Roweis S, eds. Advances in Neural Information Processing Systems 20. Boston: MIT Press; 2000, 1585–1592.

14. Warmuth M, Glocer K, Vishwanathan S. Entropy regularized LP Boost. In: Freund Y, Gy ̈ orfi L, Tur ́ an G, Zeugmann T, eds. Advanced Lectures on Machine Learning, Lecture Notes in Computer Science. NewYork: Springer; 2008b, 256–271.

在这些基于边际的算法中,有些算法被认为是“修正性的”,因为它们仅根据前一次迭代的结果进行重新加权,而另一些算法是“完全修正性的”,因为它们在重新加权时考虑了所有先前迭代的结果。

一些研究(使用 C4.5 或径向基函数作为基础学习器)表明,这些基于边际的方法在分类准确性方面与 AdaBoost 相似或略有提高(也可能比 LogitBoost 更好)。在参考文献[14] 的计算速度比较研究中,发现 LPBoost 是最快的,熵正则化(entropy regularized)的 LPBoost 略慢,而 SoftBoost 最慢。这些算法依赖于凸优化中的原对偶公式,其中已知 SoftBoost 和熵正则化的 LPBoost 有一些收敛速度分析。

实际应用中的 Boosting 问题

目前我们所知道的 Boosting 方法包含三个要素:损失函数、基础学习器和停止规则。要在实际中应用 Boosting,需要对这三个组件进行选择。类似于应用任何其他方法,这些选择通常是主观的,取决于实践者的熟悉程度、软件的可用性或计算实施的时间。然而,根据我们和他人在各种问题中使用 Boosting 的经验,以下是一些关于这些选择的经验法则建议。

损失函数

在分类中,AdaBoost 和 LogitBoost 是最受欢迎的损失函数选择,其中 LogitBoost 的表现略好于 AdaBoost。

在基于边际(margin-based)的 AdaBoost 变形中,LPBoost 似乎是一个不错的选择[14]。

  1. Warmuth M, Glocer K, Vishwanathan S. Entropy regularized LP Boost. In: Freund Y, Gy ̈ orfi L, Tur ́ an G, Zeugmann T, eds. Advanced Lectures on Machine Learning, Lecture Notes in Computer Science. NewYork: Springer; 2008b, 256–271.

在回归中,L2Boosting 和其收缩版本 e-L2Boosting 经常被使用。可以说,更稳健的损失函数和基础程序应该被使用[34],但在实践中,它们并不常见,可能是由于可用软件的原因。

基础学习器

从高层次来看,关于基础学习器选择的传统智慧是应该使用“弱”学习器或在复杂性(complexity)方面简单的程序。这使得 Boosting 方法能够通过迭代拟合过程自适应地建立起适合特定问题的 Boosting 复杂性(complexity)。

例如,在 L2Boosting 中,如果从强学习器如投影追逐(projection pursuit)开始,即使在第二步 Boosting 也无法纠正早期迭代的过拟合。

在分类中,使用 Boosting(AdaBoost 或其推广)的最常用基学习器是 CART 或 C4.5(即基于树的分类器)。在许多问题中使用了树桩(stumps),稍强一些的学习器是具有适中节点数的树,例如八节点树。

在回归中,使用小步长的坐标下降版本 L2Boosting 和 e-L2Boosting 已经变得流行,用于高维线性和加性建模(additive modeling)。

提前停止规则

如果目标是预测,通常选择在测试集上表现或交叉验证作为提前停止规则。

如果样本量相对于拟合复杂度较大,单个测试集通常就足够了。相反,如果样本量相对于拟合复杂度较小,单个测试集的想法就不准确,应该使用交叉验证。

然而,交叉验证的预测误差具有很大的方差,因此可能不可靠。基于模型选择标准如 AIC(或 AICc)、BIC 或 gMDL 的一些替代方法存在。其想法是使用一个可能有偏的估计预测误差,其方差比交叉验证误差更小。

此外,与交叉验证相比,计算成本可能减少很多倍,因此对于非常大的数据集,由于计算节省,这些基于模型的预测误差估计也很理想。

R 中的软件

R 包 mboost 提供了许多具体版本的梯度下降 Boosting 算法,包括停止规则的选择。此外,mboost 允许使用者特定的损失函数 L 进行 Boosting 拟合。参考文献[35] 提供了关于 Boosting 的综述,包括使用 mboost 的示例。

  1. B ̈ uhlmann P, Hothorn T. Boosting algorithms: regularization, prediction and model fitting (with discussion). Stat Sci 2007, 22:477–505

相关文章:

Boosting【文献精读、翻译】

Boosting Bhlmann, P., & Yu, B. (2009). Boosting. Wiley Interdisciplinary Reviews: Computational Statistics, 2(1), 69–74. doi:10.1002/wics.55 摘要 在本文中&#xff0c;我们回顾了Boost方法&#xff0c;这是分类和回归中最有效的机器学习方法之一。虽然我们也讨…...

保姆级教程|如何配置ROS1主从机

在机器人开发经常遇到使用两个板子通信问题&#xff0c;比如一个板子跑底层的运动控制&#xff0c;一个板子跑定位导航。为了确保两个板子之间的ROS通信流畅&#xff0c;我们需要在两个板子的.bashrc文件中添加必要的环境变量配置。首先&#xff0c;确保你的 /etc/hosts 文件中…...

贝叶斯优化算法(Bayesian Optimization)及其Python 和 MATLAB 实现

贝叶斯优化算法&#xff08;Bayesian Optimization&#xff09;是一种基于贝叶斯统计理论的优化方法&#xff0c;通常用于在复杂搜索空间中寻找最优解。该算法能够有效地在未知黑盒函数上进行优化&#xff0c;并在相对较少的迭代次数内找到较优解&#xff0c;因此在许多领域如超…...

NLP - 基于bert预训练模型的文本多分类示例

项目说明 项目名称 基于DistilBERT的标题多分类任务 项目概述 本项目旨在使用DistilBERT模型对给定的标题文本进行多分类任务。项目包括从数据处理、模型训练、模型评估到最终的API部署。该项目采用模块化设计&#xff0c;以便于理解和维护。 项目结构 . ├── bert_dat…...

数据库备份和还原

一、备份 备份类型 1.完全备份 全备份是指对整个数据集进行完整备份。每次备份都会复制所有选定的数据&#xff0c;无论这些数据是否发生了变化。 2.增量备份 增量备份是指仅备份自上次备份&#xff08;无论是全备份还是增量备份&#xff09;以来发生变化的数据。它记录了…...

谷粒商城-个人笔记(集群部署篇一)

前言 ​学习视频&#xff1a;​Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强​学习文档&#xff1a; 谷粒商城-个人笔记(基础篇一)谷粒商城-个人笔记(基础篇二)谷粒商城-个人笔记(基础篇三)谷粒商城-个人笔记(高级篇一)谷粒商城-个…...

Linux环境下的字节对齐现象

在Linux环境下&#xff0c;字节对齐是指数据在内存中的存储方式。字节对齐是为了提高内存访问的效率和性能。 在Linux中&#xff0c;默认情况下&#xff0c;结构体和数组的成员会进行字节对齐。具体的对齐方式可以通过编译器选项来控制。 在使用C语言编写程序时&#xff0c;可…...

没有调用memcpy却报了undefined reference to memcpy错误

现象 在第5行出现了&#xff0c;undefined reference to memcpy’ 1 static void printf_x(unsigned int val) 2{ 3 char buffer[32]; 4 const char lut[]{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}; 5 char *p buffer; 6 while (val || p buffer) { 7 *(p) …...

import和require的区别

import是ES6标准中的模块化解决方案&#xff0c;require是node中遵循CommonJS规范的模块化解决方案。 后者支持动态引入&#xff0c;也就是require(${path}/xx.js)&#xff0c;前者目前不支持&#xff0c;但是已有提案。 前者是关键词&#xff0c;后者不是。 前者是编译时加…...

白骑士的Python教学高级篇 3.3 数据库编程

系列目录 上一篇&#xff1a;白骑士的Python教学高级篇 3.2 网络编程 SQL基础 Structured Query Language (SQL) 是一种用于管理和操作关系型数据库的标准语言。SQL能够执行各种操作&#xff0c;如创建、读取、更新和删除数据库中的数据&#xff08;即CRUD操作&#xff09;&a…...

macOS 安装redis

安装Redis在macOS上通常通过Homebrew进行&#xff0c;Homebrew是macOS上一个流行的包管理器。以下是安装Redis的步骤&#xff1a; 一 使用Homebrew安装Redis 1、安装Homebrew&#xff08;如果尚未安装&#xff09;&#xff1a; 打开终端&#xff08;Terminal&#xff09;并执…...

【AIGC评测体系】大模型评测指标集

大模型评测指标集 &#xff08;☆&#xff09;SuperCLUE&#xff08;1&#xff09;SuperCLUE-V&#xff08;中文原生多模态理解测评基准&#xff09;&#xff08;2&#xff09;SuperCLUE-Auto&#xff08;汽车大模型测评基准&#xff09;&#xff08;3&#xff09;AIGVBench-T2…...

工厂模式之简单工厂模式

文章目录 工厂模式工厂模式分为工厂模式的角色简单工厂模式案例代码定义一个父类&#xff0c;三个子类定义简单工厂客户端使用输出结果 工厂模式 工厂模式属于创造型的模式&#xff0c;用于创建对象。 工厂模式分为 简单工厂模式&#xff1a;定义一个简单工厂类&#xff0c;根…...

2.(vue3.x+vite)调用iframe的方法(vue编码)

1、效果预览 2.编写代码 (1)主页面 <template><div><button @click="sendMessage">调用iframe,并发送信息...

实战项目——用Java实现图书管理系统

前言 首先既然是管理系统&#xff0c;那咱们就要实现以下这几个功能了--> 分析 1.首先是用户分为两种&#xff0c;一个是管理员&#xff0c;另一个是普通用户&#xff0c;既如此&#xff0c;可以定义一个用户类&#xff08;user&#xff09;&#xff0c;在定义管理员类&am…...

利用DeepFlow解决APISIX故障诊断中的方向偏差问题

概要&#xff1a;随着APISIX作为IT应用系统入口的普及&#xff0c;其故障定位能力的不足导致了在业务故障诊断中&#xff0c;APISIX常常成为首要的“嫌疑对象”。这不仅导致了“兴师动众”式的资源投入&#xff0c;还可能使诊断方向“背道而驰”&#xff0c;从而导致业务故障“…...

sqlalchemy获取数据条数

1、sqlalchemy获取数据条数 在SQLAlchemy中,你可以使用count()函数来获取数据表中的记录条数。 from sqlalchemy import create_engine, MetaData, Table# 数据库连接字符串 DATABASE_URI = dialect+driver://username:password@host:port/database# 创建引擎 engine = crea…...

SpringBoot的自动配置核心原理及拓展点

Spring Boot 的核心原理几个关键点 约定优于配置&#xff1a; Spring Boot 遵循约定优于配置的理念&#xff0c;通过预定义的约定&#xff0c;大大简化了 Spring 应用程序的配置和部署。例如&#xff0c;它自动配置了许多常见的开发任务&#xff08;如数据库连接、Web 服务器配…...

用随机森林算法进行的一次故障预测

本案例将带大家使用一份开源的S.M.A.R.T.数据集和机器学习中的随机森林算法&#xff0c;来训练一个硬盘故障预测模型&#xff0c;并测试效果。 实验目标 掌握使用机器学习方法训练模型的基本流程&#xff1b;掌握使用pandas做数据分析的基本方法&#xff1b;掌握使用scikit-l…...

24位DAC转换的FPGA设计及将其封装成自定义IP核的方法

在vivado设计中,为了方便的使用Block Desgin进行设计,可以使用vivado软件把自己编写的代码封装成IP核,封装后的IP核和原来的代码具有相同的功能。本文以实现24位DA转换(含并串转换,使用的数模转换器为CL4660)为例,介绍VIVADO封装IP核的方法及调用方法,以及DAC转换的详细…...

【大模型LLM面试合集】大语言模型基础_llm概念

1.llm概念 1.目前 主流的开源模型体系 有哪些&#xff1f; 目前主流的开源LLM&#xff08;语言模型&#xff09;模型体系包括以下几个&#xff1a; GPT&#xff08;Generative Pre-trained Transformer&#xff09;系列&#xff1a;由OpenAI发布的一系列基于Transformer架构…...

Qt时间日期处理与定时器使用总结

一、日期时间数据 1.QTime 用于存储和操作时间数据的类&#xff0c;其中包括小时(h)、分钟(m)、秒(s)、毫秒(ms)。函数定义如下&#xff1a; //注&#xff1a;秒(s)和毫秒(ms)有默认值0 QTime::QTime(int h, int m, int s 0, int ms 0) 若无须初始化时间数据&#xff0c;可…...

数据结构——Hash Map

1. Hash Map简介 Hash Map是一种基于键值对的数据结构&#xff0c;通过散列函数将键映射到存储位置&#xff0c;实现快速的数据查找和存储。它可以在常数时间内完成查找、插入和删除操作&#xff0c;因此在需要频繁进行这些操作时非常高效。 2. Hash Map的定义 散列表&#xff…...

剪画小程序:视频剪辑-视频播放倍数的调整与应用

在这个快节奏的时代&#xff0c;时间变得越来越宝贵&#xff0c;而视频倍数播放功能就像是我们的时间管理小助手&#xff0c;为我们的视频观看带来了极大的便利。你是否好奇它到底能在哪些地方发挥作用呢&#xff1f;让我们一起来看看&#xff01; 只要使用小程序【剪画】的里…...

使用 Java Swing 和 XChart 创建多种图表

在现代应用程序开发中&#xff0c;数据可视化是一个关键部分。本文将介绍如何使用 Java Swing 和 XChart 库创建各种类型的图表。XChart 是一个轻量级的图表库&#xff0c;支持多种类型的图表&#xff0c;非常适合在 Java 应用中进行快速的图表绘制。 1、环境配置 在开始之前&…...

信息系统运维管理:实践与发展

信息系统运维管理&#xff1a;实践与发展 信息系统运维管理在现代企业中扮演着至关重要的角色&#xff0c;确保信息系统的高效、安全和稳定运行。本文结合《信息系统运维管理》文档内容&#xff0c;探讨了服务设计阶段、服务转换阶段、委托系统维护管理三个主要章节&#xff0…...

html+js+css登录注册界面

拥有向服务器发送登录或注册数据并接收返回数据的功能 点赞关注 界面 源代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>Login and Registration Form</title> <style> * …...

英伟达(NVIDIA)数据中心GPU介绍

英伟达&#xff08;NVIDIA&#xff09;数据中心GPU按性能由高到低排行&#xff1a; 1. NVIDIA H100 架构&#xff1a;Hopper 核心数量&#xff1a;18352 CUDA Cores, 1456 Tensor Cores 显存&#xff1a;80 GB HBM3 峰值性能&#xff1a; 单精度&#xff08;FP32&#xff09…...

Leetcode 3202. Find the Maximum Length of Valid Subsequence II

Leetcode 3202. Find the Maximum Length of Valid Subsequence II 1. 解题思路2. 代码实现 题目链接&#xff1a;3202. Find the Maximum Length of Valid Subsequence II 1. 解题思路 这一题的话是上一题3201. Find the Maximum Length of Valid Subsequence I的升级版&am…...

通过Spring Boot结合实时流媒体技术对考试过程进行实时监控

本章将深入探讨考试系统中常见的复杂技术问题&#xff0c;并提供基于Spring Boot 3.x的解决方案。涵盖屏幕切换检测与防护、接打电话识别处理、行为监控摄像头使用、网络不稳定应对等&#xff0c;每篇文章详细剖析问题并提供实际案例与代码示例&#xff0c;帮助开发者应对挑战&…...

智能扫地机器人避障与防跌落问题解决方案

智能扫地机器人出现避障与防跌落问题时&#xff0c;可以通过以下几种方式来解决&#xff1a; 一、避障问题的解决方案 1.升级避障技术&#xff1a; ① 激光雷达避障&#xff1a;激光雷达通过发射和接收激光信号来判断与障碍物的距离&#xff0c;具有延迟低、效果稳定、准确度…...

德旺训练营称重问题

这是考小学的分治策略&#xff0c;小学的分治策略几乎都是分三组。本着这个策略&#xff0c;我们做看看。 第一次称重&#xff1a; 分三组&#xff0c;16,16,17&#xff0c;拿两个16称&#xff0c;得到A情况&#xff0c;一样重&#xff0c;那么假铜钱在那组17个里面。B情况不…...

数据决策系统详解

文章目录 数据决策系统的核心组成部分&#xff1a;1. **数据收集与整合**&#xff1a;2. **数据处理与分析**&#xff1a;3. **数据可视化**&#xff1a;4. **决策支持**&#xff1a; 数据决策系统的功能&#xff1a;决策类型&#xff1a;数据决策系统对企业的重要性&#xff1…...

JSON 简述与应用

1. JSON 简述 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;常用于客户端与服务器之间的数据传递。它基于JavaScript对象表示法&#xff0c;但独立于语言&#xff0c;可以被多种编程语言解析和生成。 1.1 特点 轻量级&#…...

ResNet50V2

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、ResNetV1和ResNetV2的区别 ResNetV2 和 ResNetV1 都是深度残差网络&#xff08;ResNet&#xff09;的变体&#xff0c;它们的主要区别在于残差块的设计和…...

基于深度学习的虚拟换装

基于深度学习的虚拟换装技术旨在通过计算机视觉和图像处理技术&#xff0c;将不同的服装虚拟地穿在用户身上&#xff0c;实现快速的试穿和展示。这项技术在电商、时尚和虚拟现实领域具有广泛的应用&#xff0c;能够提升用户体验&#xff0c;增加互动性。以下是关于这一领域的系…...

单段时间最优S型速度规划算法

一&#xff0c;背景 在做机械臂轨迹规划的单段路径的速度规划时&#xff0c;除了参考《Trajectory Planning for Automatic Machines and Robots》等文献之外&#xff0c;还在知乎找到了这位大佬 韩冰 写的在线规划方法&#xff1a; https://zhuanlan.zhihu.com/p/585253101/e…...

pom文件-微服务项目结构

一、微服务项目结构 my-microservices-project/ ├── pom.xml <!-- 父模块的pom.xml --> ├── ry-system/ │ ├── pom.xml <!-- 子模块ry-system的pom.xml --> │ └── src/main/java/com/example/rysystem/ │ └── RySystemApplication.…...

解析Kotlin中的Nothing【笔记摘要】

1.Nothing的本质 Nothing 的源码很简单&#xff1a; public class Nothing private constructor()可以看到它是个class&#xff0c;但它的构造函数是 private 的&#xff0c;这就导致我们没法创建它的实例&#xff0c;并且在源码里 Kotlin 也没有帮我们创建它的实例。 基于这…...

toRefs 和 toRef

文章目录 toRefs 和 toReftoRefstoRef toRefs 和 toRef toRefs toRefs 把一个由reactive对象的值变为一个一个ref的响应式的值 import { ref, reactive, toRefs, toRef } from vue; let person reactive({name: 张三,age: 18, }); // toRefs 把一个由reactive对象的值变为一…...

Vision Transformer论文阅读笔记

目录 An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale -- Vision Transformer摘要Introduction—简介RELATED WORK—相关工作METHOD—方法VISION TRANSFORMER (VIT)—视觉Transformer(ViT) 分析与评估PRE-TRAINING DATA REQUIREMENTS—预训练数据…...

MapReduce的执行流程排序

MapReduce 是一种用于处理大规模数据集的分布式计算模型。它将作业分成多个阶段&#xff0c;以并行处理和分布式存储的方式来提高计算效率。以下是 MapReduce 的执行流程以及各个阶段的详细解释&#xff1a; 1. 作业提交&#xff08;Job Submission&#xff09; 用户通过客户端…...

雅思词汇及发音积累 2024.7.3

银行 check &#xff08;美&#xff09;支票 cheque /tʃek/ &#xff08;英&#xff09;支票 ATM 自动取款机 cashier 收银员 teller /ˈtelə(r)/ &#xff08;银行&#xff09;出纳员 loan 贷款 draw/withdraw money 提款 pin number/passsword/code …...

Vue2和Vue3的区别Vue3的组合式API

一、Vue2和Vue3的区别 1、创建方式的不同&#xff1a; &#xff08;1&#xff09;、vue2:是一个构造函数&#xff0c;通过该构造函数创建一个Vue实例 new Vue({})&#xff08;2&#xff09;、Vue3:是一个对象。并通过该对象的createApp()方法&#xff0c;创建一个vue实例。 Vue…...

ML307R OpenCPU HTTP使用

一、函数介绍 二、示例代码 三、代码下载地址 一、函数介绍 具体函数可以参考cm_http.h文件,这里给出几个我用到的函数 1、创建客户端实例 /*** @brief 创建客户端实例** @param [in] url 服务器地址(服务器地址url需要填写完整,例如(服务器url仅为格式示…...

【状态估计】线性高斯系统的状态估计——离散时间的递归滤波

前两篇文章介绍了离散时间的批量估计、离散时间的递归平滑&#xff0c;本文着重介绍离散时间的递归滤波。 前两篇位置&#xff1a;【状态估计】线性高斯系统的状态估计——离散时间的批量估计、【状态估计】线性高斯系统的状态估计——离散时间的递归平滑。 离散时间的递归滤波…...

架构设计上中的master三种架构,单节点,主从节点,多节点分析

文章目录 背景单节点优点缺点 主从节点优点缺点 多节点优点缺点 多节点&#xff0c;多backup设计优点缺点 总结 背景 在很多分布式系统里会有master,work这种结构。 master 节点负责管理资源&#xff0c;分发任务。下面着重讨论下master 数量不同带来的影响 单节点 优点 1.设…...

如何在 SQL 中删除一条记录?

如何在 SQL 中删除一条记录&#xff1f; 在 SQL 中&#xff0c;您可以使用DELETE查询和WHERE子句删除表中的一条记录。在本文中&#xff0c;我将向您介绍如何使用DELETE查询和WHERE子句删除记录。我还将向您展示如何一次从表中删除多条记录 如何在 SQL 中使用 DELETE 这是使…...

JavaSE (Java基础):面向对象(上)

8 面向对象 面向对象编程的本质就是&#xff1a;以类的方法组织代码&#xff0c;以对象的组织&#xff08;封装&#xff09;数据。 8.1 方法的回顾 package com.oop.demo01;// Demo01 类 public class Demo01 {// main方法public static void main(String[] args) {int c 10…...

flink使用StatementSet降低资源浪费

背景 项目中有很多ods层&#xff08;mysql 通过cannal&#xff09;kafka&#xff0c;需要对这些ods kakfa做一些etl操作后写入下一层的kafka&#xff08;dwd层&#xff09;。 一开始采用的是executeSql方式来执行每个ods→dwd层操作&#xff0c;即类似&#xff1a; def main(…...

Apache tika 实现各种文档内容解析

Apache tika 实现各种文档内容解析 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/XMLSchema-instance"xsi:schemaLocation=&…...

【JavaEE精炼宝库】文件操作(1)——基本知识 | 操作文件——打开实用性编程的大门

目录 一、文件的基本知识1.1 文件的基本概念&#xff1a;1.2 树型结构组织和目录&#xff1a;1.3 文件路径&#xff08;Path&#xff09;&#xff1a;1.4 二进制文件 VS 文本文件&#xff1a;1.5 其它&#xff1a; 二、Java 操作文件2.1 方法说明&#xff1a;2.2 使用演示&…...

html+js+css在线倒计时

代码在图片后面 点赞加关注 谢谢大佬照顾&#x1f61c; 图例 时间到前 时间到后 源代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width,…...

大力出奇迹:大语言模型的崛起与挑战

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现与应用&#xff0c;彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…...

opencascade AIS_InteractiveContext源码学习7 debug visualization

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…...

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(一)大题思路

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 计划集成lowflow开源项目的仿钉钉流程&#xff0c;刚好也是宁波的网友。 大概界面如下&#xff0c;以后直接就导入到流程模型里&#xff1a; 人员操作 整体放在一个目录里了...

飞凡第三款车定名RC7:比理想L6好看,还比它便宜?

“今年年中,飞凡汽车全新的重磅车型将与广大用户见面,敬请期待。”这是今年年初,飞凡汽车在一封致合作伙伴的公开信中披露的内容。不料想时间刚刚来到5月中旬,飞凡就马不停蹄兑现了自己的诺言,将品牌第三款车型带到了工信部新车公示目录。根据公开信息显示,飞凡第三款车型…...

入境游复苏拉动旅游消费,免税、餐饮、酒店等行业迎来利好

随着疫情防控常态化,中国入境旅游市场正逐步回暖,跨境游消费呈现复苏态势。有分析预测,入境游景气复苏将与消费内生增长动力恢复形成合力,对服务消费相关的多业态产生正向辐射效应。免税、餐饮、酒店作为旅游消费三大支柱行业,有望受益于入境游复苏带来的红利。免税行业迎…...

美国电动汽车电力需求跃升至新高

盖世汽车讯 据外媒报道,随着美国电动汽车保有量的持续提升,此类车型的电力消耗也迎来了提升。2024年前两个月中,美国电动汽车的用电量同比跃升了50%以上。美国能源信息署发布的数据显示,今年前2个月,美国电动汽车总用电量为158万MWh,而2023年同期为104万MWh。与2023年同期…...

“霸总雷军”发财报,又赢了

朋友们,5月23日,小米发布2024年Q1业绩公告。小米第一季度营收人民币755亿元,同比增长27%。雷军想必对今年的业绩是满意的。从2020年提出高端战略后,这是小米首次在财报中将其形容为“取得显著成效”。与之相对的是,2024年第一季度小米经调整净利润达人民币65亿元,同比增长…...

部署Prometheus + Grafana实现监控数据指标

1.1 Prometheus安装部署 Prometheus监控服务 主机名IP地址系统配置作用Prometheus192.168.110.27/24CentOS 7.94颗CPU 8G内存 100G硬盘Prometheus服务器grafana192.168.110.28/24CentOS 7.94颗CPU 8G内存 100G硬盘grafana服务器 监控机器 主机名IP地址系统配置k8s-master-0…...

TypeScript类型体操练习

历史小剧场 这个世界上&#xff0c;有两种人最痛苦&#xff0c;第一种是身居高位者&#xff0c;第二种是身居底层者&#xff0c;第一种人很少&#xff0c;第二种人很多。第一种人叫崇祯&#xff0c;第二种人叫百姓。 而最幸福的&#xff0c;就是中间那拨人&#xff0c;主要工作…...