机器学习周志华学习笔记-第6章<支持向量机>

机器学习周志华学习笔记-第6章<支持向量机>

卷王,请看目录

  • 6支持向量机
    • 6.1 函数间隔与几何间隔
        • 6.1.1 函数间隔
        • 6.1.2 几何间隔
    • 6.2 最大间隔与支持向量
    • 6.3 对偶问题
    • 6.4 核函数
    • 6.5 软间隔支持向量机
    • 6.6 支持向量机
    • 6.7核方法

6支持向量机

支持向量机是一种经典的二分类模型,是一种监督学习算法。基本模型定义为特征空间中最大间隔的线性分类器,其学习的优化目标便是间隔最大化,因此支持向量机本身可以转化为一个凸二次规划求解的问题。

6.1 函数间隔与几何间隔

对于二分类学习,假设现在的数据是线性可分的,这时分类学习最基本的想法就是找到一个合适的超平面,该超平面能够将不同类别的样本分开,类似二维平面使用 a x + b y + c = 0 ax+by+c=0 ax+by+c=0来表示,超平面实际上表示的就是高维的平面,如下图所示:
在这里插入图片描述对数据点进行划分时,易知:当超平面距离与它最近的数据点的间隔越大,分类的鲁棒性越好,即当新的数据点加入时,超平面对这些点的适应性最强,出错的可能性最小。因此需要让所选择的超平面能够最大化这个间隔Gap(如下图所示), 常用的间隔定义有两种,一种称之为函数间隔,一种为几何间隔,下面将分别介绍这两种间隔,并对SVM为什么会选用几何间隔做了一些阐述。
在这里插入图片描述

6.1.1 函数间隔

在超平面 ω ’ x + b = 0 \omega’x+b=0 ωx+b=0确定的情况下, ∣ ω ’ x ∗ + b ∣ |\omega’x^*+b| ωx+b能够代表点 x ∗ x^* x距离超平面的远近,易知:当 ω ’ x ∗ + b > 0 \omega’x^*+b>0 ωx+b>0时,表示 x ∗ x^* x在超平面的一侧(正类,类标为1),而当 ω ’ x ∗ + b < 0 \omega’x^*+b<0 ωx+b<0时,则表示 x ∗ x^* x在超平面的另外一侧(负类,类别为-1)。因此 ( ω ’ x ∗ + b ) y ∗ (\omega’x^*+b)y^* ωx+by的正负性恰能表示数据点 x ∗ x^* x是否被分类正确。于是便引出了函数间隔的定义(functional margin):
γ ^ = y ( ω T x + b ) = y f ( x ) \hat{\gamma}=y\left(\omega^{T} x+b\right)=y f(x) γ^=y(ωTx+b)=yf(x)
而超平面 ( ω , b ) (\omega,b) ω,b关于所有样本点 ( X i , Y i ) (X_i,Y_i) XiYi的函数间隔最小值则为超平面在训练数据集T上的函数间隔:
γ ^ = min ⁡ γ ^ i , ( i = 1 , … , n ) \hat{\gamma}=\min \hat{\gamma}_{i},(i=1, \ldots, n) γ^=minγ^i,(i=1,,n)
可以看出:这样定义的函数间隔在处理SVM上会有问题,当超平面的两个参数 ω \omega ω b b b同比例改变时,函数间隔也会跟着改变,但是实际上超平面还是原来的超平面,并没有变化。例如: ω 1 x 1 + ω 2 x 2 + ω 3 x 3 + b = 0 \omega_1x_1+\omega_2x_2+\omega_3x_3+b=0 ω1x1+ω2x2+ω3x3+b=0其实等价于 2 ω 1 x 1 + 2 ω 2 x 2 + 2 ω 3 x 3 + 2 b = 0 2\omega_1x_1+2\omega_2x_2+2\omega_3x_3+2b=0 2ω1x1+2ω2x2+2ω3x3+2b=0,但计算的函数间隔却翻了一倍。从而引出了能真正度量点到超平面距离的概念–几何间隔(geometrical margin)。

6.1.2 几何间隔

几何间隔代表的则是数据点到超平面的真实距离,对于超平面 ω ’ x + b = 0 \omega’x+b=0 ωx+b=0 ω \omega ω代表的是该超平面的法向量,设 x ∗ x^* x为超平面外一点 x x x在法向量 ω \omega ω方向上的投影点, x x x与超平面的距离为 γ \gamma γ,则有 x ∗ = x − γ ( ω / ∣ ∣ ω ∣ ∣ ) x^*=x-\gamma(\omega/||\omega||) x=xγ(ω/∣∣ω∣∣),又 x ∗ x^* x在超平面上,即 ω ’ x ∗ + b = 0 \omega’x^*+b=0 ωx+b=0,代入即可得:

γ = ω T x + b ∥ ω ∥ = f ( x ) ∥ ω ∥ \gamma=\frac{\omega^{T} x+b}{\|\omega\|}=\frac{f(x)}{\|\omega\|} γ=ωωTx+b=ωf(x)
为了得到 γ \gamma γ的绝对值,令 γ \gamma γ乘上其对应的类别 y y y,即可得到几何间隔的定义:
γ ~ = y γ = γ ^ ∥ ω ∥ \tilde{\gamma}=y \gamma=\frac{\hat{\gamma}}{\|\omega\|} γ~=yγ=ωγ^
从上述函数间隔与几何间隔的定义可以看出:实质上函数间隔就是 ∣ ω ’ x + b ∣ |\omega’x+b| ωx+b,而几何间隔就是点到超平面的距离。

6.2 最大间隔与支持向量

通过前面的分析可知:函数间隔不适合用来最大化间隔,因此这里我们要找的最大间隔指的是几何间隔,于是最大间隔分类器的目标函数定义为:

max ⁡ γ ~ y i ( ω T x i + b ) = γ ^ i ≥ γ ^ , i = 1 , … , n \begin{array}{l} \max \tilde{\gamma} \\ y_{i}\left(\omega^{T} x_{i}+b\right)=\hat{\gamma}_{i} \geq \hat{\gamma}, \quad i=1, \ldots, n \end{array} maxγ~yi(ωTxi+b)=γ^iγ^,i=1,,n
在这里插入图片描述
一般地,我们令 γ ^ \hat{\gamma} γ^为1(这样做的目的是为了方便推导和目标函数的优化),从而上述目标函数转化为:
max ⁡ 1 ∥ ω ∥ ,  s.t.  y i ( ω T x i + b ) ≥ 1 , i = 1 , … , n \max \frac{1}{\|\omega\|}, \quad \text { s.t. } \quad y_{i}\left(\omega^{T} x_{i}+b\right) \geq 1, i=1, \ldots, n maxω1, s.t. yi(ωTxi+b)1,i=1,,n
对于 y ( ω ’ x + b ) = 1 y(\omega’x+b)=1 y(ωx+b)=1的数据点,即右图中位于 ω ’ x + b = 1 \omega’x+b=1 ωx+b=1 ω ’ x + b = − 1 \omega’x+b=-1 ωx+b=1上的数据点,我们称之为支持向量(support vector),易知:对于所有的支持向量,它们恰好满足 y ∗ ( ω ’ x ∗ + b ) = 1 y^*(\omega’x^*+b)=1 y(ωx+b)=1,而所有不是支持向量的点,有 y ∗ ( ω ’ x ∗ + b ) > 1 y^*(\omega’x^*+b)>1 y(ωx+b)>1

6.3 对偶问题

对于上述得到的目标函数,求 1 / ∣ ∣ ω ∣ ∣ 1/||\omega|| 1/∣∣ω∣∣的最大值相当于求 ∣ ∣ ω ∣ ∣ 2 ||\omega||^2 ∣∣ω2的最小值,因此很容易将原来的目标函数转化为:
min ⁡ 1 2 ∥ ω ∥ 2 ,  s.t.  y i ( ω T x i + b ) ≥ 1 , i = 1 , … . , n \min \frac{1}{2}\|\omega\|^{2}, \quad \text { s.t. } \quad y_{i}\left(\omega^{T} x_{i}+b\right) \geq 1, i=1, \ldots ., n min21ω2, s.t. yi(ωTxi+b)1,i=1,.,n
即变为了一个带约束的凸二次规划问题,按书上所说可以使用现成的优化计算包(QP优化包)求解,但由于SVM的特殊性,一般我们将原问题变换为它的对偶问题,接着再对其对偶问题进行求解。为什么通过对偶问题进行求解,有下面两个原因:

  • 一是因为使用对偶问题更容易求解
  • 二是因为通过对偶问题求解出现了向量内积的形式,从而能更加自然地引出核函数

对偶问题,顾名思义,可以理解成优化等价的问题,更一般地,是将一个原始目标函数的最小化转化为它的对偶函数最大化的问题。对于当前的优化问题,首先我们写出它的朗格朗日函数:
在这里插入图片描述
上式很容易验证:当其中有一个约束条件不满足时,L的最大值为 ∞(只需令其对应的 α \alpha α为 ∞即可);当所有约束条件都满足时,L的最大值为 1 / 2 ∣ ∣ ω ∣ ∣ 2 1/2||\omega||^2 1/2∣∣ω2(此时令所有的 α \alpha α为0),因此实际上原问题等价于:
min ⁡ ω , b θ ( ω ) = min ⁡ ω , b max ⁡ α i ≥ 0 L ( ω , b , α ) = p ∗ \min _{\omega, b} \theta(\omega)=\min _{\omega, b} \max _{\alpha_{i} \geq 0} L(\omega, b, \alpha)=p^{*} ω,bminθ(ω)=ω,bminαi0maxL(ω,b,α)=p
由于这个的求解问题不好做, 因此一般我们将最小和最大的位置交换一下(需满足 KKT 条件),变成原问题的对偶问题:
max ⁡ α i ≥ 0 min ⁡ ω , b L ( ω , b , α ) = d ∗ \max _{\alpha_{i} \geq 0} \min _{\omega, b} L(\omega, b, \alpha)=d^{*} αi0maxω,bminL(ω,b,α)=d

这样就将原问题的求最小变成了对偶问题求最大 (用对偶这个词还是很形象), 接下来便可先求 L 对 ω \omega ω b b b 的极小, 再求 L 对 α \alpha α 的极大。

  1. 首先求 L 对 ω \omega ω b b b 的极小, 分别求 L 关于 ω \omega ω b b b 的偏导, 可以得出:

∂ L ∂ ω = 0 ⇒ ω = ∑ i = 1 n α i y i x i ∂ L ∂ b = 0 ⇒ ∑ i = 1 n α i y i = 0 \begin{array}{l} \frac{\partial L}{\partial \omega}=0 \Rightarrow \omega=\sum_{i=1}^{n} \alpha_{i} y_{i} x_{i} \\ \\ \frac{\partial L}{\partial b}=0 \Rightarrow \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \end{array} ωL=0ω=i=1nαiyixibL=0i=1nαiyi=0
将上述结果代入 L 得到:
L ( ω , b , α ) = 1 2 ∑ i , j = 1 n α i α j y i y j x i T x j − ∑ i , j = 1 n α i α j y i y j x i T x j − b ∑ i = 1 n α i y i + ∑ i = 1 n α i = ∑ i = 1 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j x i T x j →  现在只包含  α \begin{aligned} L(\omega, b, \alpha) & =\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{j}-\sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{j}-b \sum_{i=1}^{n} \alpha_{i} y_{i}+\sum_{i=1}^{n} \alpha_{i} \\ & =\sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{j} \rightarrow \text { 现在只包含 } \alpha \end{aligned} L(ω,b,α)=21i,j=1nαiαjyiyjxiTxji,j=1nαiαjyiyjxiTxjbi=1nαiyi+i=1nαi=i=1nαi21i,j=1nαiαjyiyjxiTxj 现在只包含 α

  1. 接着 L 关于 α \alpha α 极大求解 α \alpha α (通过 SMO 算法求解,此处不做深入)。
    max ⁡ α ∑ i = 1 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j x i T x j  s.t.  α i ≥ 0 , i = 1 , … , n ∑ i = 1 n α i y i = 0 \begin{aligned} \max _{\alpha} & \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i}^{T} x_{j} \\ \text { s.t. } & \alpha_{i} \geq 0, i=1, \ldots, n \\ & \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \end{aligned} αmax s.t. i=1nαi21i,j=1nαiαjyiyjxiTxjαi0,i=1,,ni=1nαiyi=0

  2. 最后便可以根据求解出的 , 计算出 ω \omega ω b b b , 从而得到分类超平面函数。
    ω ∗ = ∑ i = 1 n α i y i x i b ∗ = − max ⁡ i : y i = − 1 ω ∗ T x i + min ⁡ i : y i = 1 ω ∗ T x i 2 \begin{aligned} \omega^{*} & =\sum_{i=1}^{n} \alpha_{i} y_{i} x_{i} \\ b^{*} & =-\frac{\max _{i: y_{i}=-1} \omega^{* T} x_{i}+\min _{i: y_{i}=1} \omega^{* T} x_{i}}{2} \end{aligned} ωb=i=1nαiyixi=2maxi:yi=1ωTxi+mini:yi=1ωTxi
    在对新的点进行预测时, 实际上就是将数据点 x ∗ x^* x 代入分类函数 f ( x ) = ω ′ x + b f(x)=\omega^{\prime} x+b f(x)=ωx+b 中, 若 f ( x ) > 0 f(x)>0 f(x)>0 ,则为正类, f ( x ) < 0 f(x)<0 f(x)<0 , 则为负类, 根据前面推导得出的 ω \omega ω b b b , 分类函数如下所示, 此时便出现了上面所提到的内积形式。
    f ( x ) = ( ∑ i = 1 n α i y i x i ) T x + b = ∑ i = 1 n α i y i ⟨ x i , x ⟩ + b \begin{aligned} f(x) & =\left(\sum_{i=1}^{n} \alpha_{i} y_{i} x_{i}\right)^{T} x+b \\ & =\sum_{i=1}^{n} \alpha_{i} y_{i}\left\langle x_{i}, x\right\rangle+b \end{aligned} f(x)=(i=1nαiyixi)Tx+b=i=1nαiyixi,x+b

这里实际上只需计算新样本与支持向量的内积, 因为对于非支持向量的数据点, 其对应的拉格朗日乘子一定为 0 , 根据最优化理论( K-T 条件),对于不等式约束 y ( ω ′ x + b ) − 1 ⩾ 0 \mathrm{y}\left(\mathrm{\omega}^{\prime} \mathrm{x}+\mathrm{b}\right)-1 \geqslant 0 y(ωx+b)10 ,满足:

∂ i ( y i ( ω T x i + b ) − 1 ) = 0 ⇒  即总有一个为  0 \partial_{i}\left(\mathrm{y}_{i}\left(\omega^{T} \mathrm{x}_{i}+\mathrm{b}\right)-1\right)=0 \Rightarrow \text { 即总有一个为 } 0 i(yi(ωTxi+b)1)=0 即总有一个为 0

6.4 核函数

由于上述的超平面只能解决线性可分的问题, 对于线性不可分的问题, 例如: 异或问题, 我们需要使用核函数将其进行推广。一般地, 解决线性不可分问题时, 常常采用咉射的方式, 将低维原始空间映射到高维特征空间, 使得数据集在高维空间中变得线性可分, 从而再使用线性学习器分类。如果原始空间为有限维, 即属性数有限, 那么总是存在一个高维特征空间使得样本线性可分。若 ∅ \varnothing 代表一个映射, 则在特征空间中的划分函数变为:

f ( x ) = ω T ϕ ( x ) + b f(\boldsymbol{x})=\boldsymbol{\omega}^{\mathrm{T}} \phi(\boldsymbol{x})+b f(x)=ωTϕ(x)+b

按照同样的方法, 先写出新目标函数的拉格朗日函数, 接着写出其对偶问题, 求 L 关于 ω \omega ω 和 b的极大, 最后运用 SOM 求解 α \alpha α 。可以得出:
(1) 原对偶问题变为:
max ⁡ α ∑ i = 1 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩  s.t.  α i ≥ 0 , i = 1 , … , n ∑ i = 1 n α i y i = 0 \begin{aligned} \max _{\alpha} & \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} \left\langle\phi\left(x_{i}\right), \phi\left(x_{j}\right)\right\rangle \\ \text { s.t. } & \alpha_{i} \geq 0, i=1, \ldots, n \\ & \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \end{aligned} αmax s.t. i=1nαi21i,j=1nαiαjyiyjϕ(xi),ϕ(xj)αi0,i=1,,ni=1nαiyi=0
等价于:
在这里插入图片描述
(2) 原分类函数变为:
f ( x ) = ∑ i n α i y i ⟨ ϕ ( x i ) , ϕ ( x ) ⟩ + b \begin{aligned} f(x)=\sum_{i}^{n} \alpha_{i}y_{i} \left\langle\phi\left(x_{i}\right), \phi\left(x\right)\right\rangle + b \end{aligned} f(x)=inαiyiϕ(xi),ϕ(x)+b
等价于:
在这里插入图片描述

求解的过程中,只涉及到了高维特征空间中的内积运算,由于特征空间的维数可能会非常大,例如:若原始空间为二维,映射后的特征空间为5维,若原始空间为三维,映射后的特征空间将是19维,之后甚至可能出现无穷维,根本无法进行内积运算了,此时便引出了核函数(Kernel)的概念

在这里插入图片描述
因此,核函数可以直接计算隐式映射到高维特征空间后的向量内积,而不需要显式地写出映射后的结果,它虽然完成了将特征从低维到高维的转换,但最终却是在低维空间中完成向量内积计算,与高维特征空间中的计算等效(低维计算,高维表现),从而避免了直接在高维空间无法计算的问题。引入核函数后,原来的对偶问题与分类函数则变为:
(1) 对偶问题:
max ⁡ α ∑ i = 1 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j K ( x i , x j )  s.t.  α i ≥ 0 , i = 1 , … , n ∑ i = 1 n α i y i = 0 \begin{array}{ll} \max _{\alpha} & \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} \red{K\left(x_{i}, x_{j}\right) }\\ \text { s.t. } & \alpha_{i} \geq 0, i=1, \ldots, n \\ & \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \end{array} maxα s.t. i=1nαi21i,j=1nαiαjyiyjK(xi,xj)αi0,i=1,,ni=1nαiyi=0

(2) 分类函数:
f ( x ) = ∑ i = 1 n α i y i K ( x i , x ) + b f(x)=\sum_{i=1}^{n} \alpha_{i} y_{i} \red{K\left(x_{i}, x\right)}+b f(x)=i=1nαiyiK(xi,x)+b
因此,在线性不可分问题中,核函数的选择成了支持向量机的最大变数,若选择了不合适的核函数,则意味着将样本映射到了一个不合适的特征空间,则极可能导致性能不佳。同时,核函数需要满足以下这个必要条件:
在这里插入图片描述
由于核函数的构造十分困难,通常我们都是从一些常用的核函数中选择,下面列出了几种常用的核函数:
在这里插入图片描述

6.5 软间隔支持向量机

前面的讨论中,我们主要解决了两个问题:当数据线性可分时,直接使用最大间隔的超平面划分当数据线性不可分时,则通过核函数将数据映射到高维特征空间,使之线性可分。然而在现实问题中,对于某些情形还是很难处理,例如数据中有噪声的情形,噪声数据(outlier)本身就偏离了正常位置,但是在前面的SVM模型中,我们要求所有的样本数据都必须满足约束,如果不要这些噪声数据还好,当加入这些outlier后导致划分超平面被挤歪了,如下图所示,对支持向量机的泛化性能造成很大的影响。
在这里插入图片描述

为了解决这一问题,我们需要允许某一些数据点不满足约束,即可以在一定程度上偏移超平面,同时使得不满足约束的数据点尽可能少,这便引出了“软间隔”支持向量机的概念

  • 允许某些数据点不满足约束 y ( ω ′ x + b ) ≥ 1 y(\omega'x+b)≥1 y(ωx+b)1
  • 同时又使得不满足约束的样本尽可能少。

在这里插入图片描述
这样优化目标变为:
在这里插入图片描述
如同阶跃函数,0/1损失函数虽然表示效果最好,但是数学性质不佳。因此常用其它函数作为“替代损失函数”。
在这里插入图片描述
图像如下所示:
在这里插入图片描述
支持向量机中的损失函数为hinge损失,引入“松弛变量”,目标函数与约束条件可以写为:
在这里插入图片描述
书中描述如下:
在这里插入图片描述

其中C为一个参数,控制着目标函数与新引入正则项之间的权重,这样显然每个样本数据都有一个对应的松弛变量,用以表示该样本不满足约束的程度,将新的目标函数转化为拉格朗日函数得到:
在这里插入图片描述
按照与之前相同的方法,先让L求关于 ω , b \omega,b ωb以及松弛变量的极小,再使用SMO求出 α \alpha α,有:

在这里插入图片描述
ω \omega ω代入 L L L化简,便得到其对偶问题:
在这里插入图片描述
将“软间隔”下产生的对偶问题与原对偶问题对比可以发现:新的对偶问题只是约束条件中的 α \alpha α多出了一个上限C,其它的完全相同,因此在引入核函数处理线性不可分问题时,便能使用与“硬间隔”支持向量机完全相同的方法。

6.6 支持向量机

对样本 ( x , y ) (\boldsymbol{x}, y) (x,y) , 传统回归模型通常直接基于模型输出 $f(\boldsymbol{x}) $ 与真实输出 $y $ 之间的差别来计算损失, 当且仅当 f ( x ) f(\boldsymbol{x}) f(x) y y y 完全相同时, 损失才为零. 与此不同,支持向量回归(Support Vector Regression, 简称 SVR) 假设我们能容忍 f ( x ) f(\boldsymbol{x}) f(x) y y y之间最多有 ϵ \epsilon ϵ的偏差, 即仅当 f ( x ) f(\boldsymbol{x}) f(x) y y y 之间的差别绝对值大于 ϵ \epsilon ϵ 时才计算损失. 如下图所示, 这相当于以 f ( x ) f(x) f(x) 为中心, 构建了一个宽度为 2 ϵ \epsilon ϵ 的间隔带, 若训练样本落入此间隔带, 则认为是被预测正确的。
在这里插入图片描述
在这里插入图片描述
与之前类似,根据拉格朗日与对偶问题的最终转换可得:
在这里插入图片描述

6.7核方法

在这里插入图片描述
表示定理对损失函数没有限制,对正则化项Ω仅要求单调递增,甚至不要求几是凸函数,意味着对于一般的损失函数和正则化项,优化问题(6.57)的最优解 h ∗ ( x ) h*(x) h(x)都可表示为核函数 κ ( x , x i ) κ(x,x_i) κ(xxi)的线性组合;这显示出核函数的巨大威力。人们发展出一系列基于核函数的学习方法,统称为“核方法”(内核
方法)。最常见的,是通过“核化”(即引入核函数)来将线性学习器拓展为非线性学习器

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

111. UE5 GAS RPG 实现角色技能和场景状态保存到存档

实现角色的技能存档保存和加载 首先&#xff0c;我们在LoadScreenSaveGame.h文件里&#xff0c;增加一个结构体&#xff0c;用于存储技能相关的所有信息 //存储技能的相关信息结构体 USTRUCT(BlueprintType) struct FSavedAbility {GENERATED_BODY()//需要存储的技能UPROPERT…

ArcGIS pro中的回归分析浅析(加更)关于广义线性回归工具的补充内容

在回归分析浅析中篇的文章中&#xff0c; 有人问了一个问题&#xff1a; 案例里的calls数据貌似离散&#xff0c;更符合泊松模型&#xff0c;为啥不采用泊松而采用高斯呢&#xff1f; 确实&#xff0c;在中篇中写道&#xff1a; 在这个例子中我们为了更好地解释变量&#x…

从 HTML 到 CSS:开启网页样式之旅(二)—— 深入探索 CSS 选择器的奥秘

从 HTML 到 CSS&#xff1a;开启网页样式之旅&#xff08;二&#xff09;—— 深入探索 CSS 选择器的奥秘 前言一、CSS基本选择器1. 通配选择器2. 元素选择器3. 类选择器4. id选择器5.基本选择器总结 二、CSS复合选择器1. 后代选择器2. 子选择器3. 相邻兄弟选择器4.交集选择器5…

【机器学习chp7】SVM

参考1&#xff0c;笔记 SVM笔记.pdf 参考2&#xff1a;王木头视频 什么是SVM&#xff0c;如何理解软间隔&#xff1f;什么是合叶损失函数、铰链损失函数&#xff1f;SVM与感知机横向对比&#xff0c;挖掘机器学习本质_哔哩哔哩_bilibili 目录 一、SVM模型 二、构建决策函…

【C++】读取数量不定的输入数据

读取数量不定的输入数据 似乎是一个很实用的东西&#xff1f; 问题&#xff1a; 我们如何对用户输入的一组数&#xff08;事先不知道具体有多少个数&#xff09;求和&#xff1f; 这需要不断读取数据直至没有新的输入为止。&#xff08;所以我们的代码就是这样设计的&#x…

HarmonyOS4+NEXT星河版入门与项目实战(20)------状态管理@ObjectLink @Observed

文章目录 1、用法图解2、案例实现1、任务类改造2、参数改造变量3、完整代码4、运行效果4、总结1、用法图解 2、案例实现 上一节的案例中,一直有一个功能没有生效,就是任务完成后对应的任务行变灰,任务字体出现中划线删除的效果。而该功能一直不生效的原因就是要改变的数据值…

2024年工信部大数据分析师证书报考条件是怎样的?有什么用

大数据分析师&#xff0c;乃是这样一类专业人才&#xff0c;他们凭借着先进且高效的数据分析技术以及各类实用工具&#xff0c;对规模庞大、纷繁复杂的海量数据展开全面而细致的清洗、处理、分析以及解读工作。其工作的核心目标在于为企业的决策制定提供有力依据&#xff0c;推…

基于vite创建的react18项目的单元测试

题外话 最近一个小伙伴进了字节外包&#xff0c;第一个活就是让他写一个单元测试。 嗯&#xff0c;说实话&#xff0c;在今天之前我只知道一些理论&#xff0c;但是并没有实操过&#xff0c;于是我就试验了一下。 通过查询资料&#xff0c;大拿们基本都说基于vite的项目&…

探秘嵌入式位运算:基础与高级技巧

目录 一、位运算基础知识 1.1. 位运算符 1.1.1. 与运算&#xff08;&&#xff09; 1.1.2. 或运算&#xff08;|&#xff09; 1.1.3. 异或运算&#xff08;^&#xff09; 1.1.4. 取反运算&#xff08;~&#xff09; 1.1.5. 双重按位取反运算符&#xff08;~~&#xf…

SpringBoot - 优雅的实现【账号登录错误次数的限制和锁定】

文章目录 Pre需求实现步骤简易实现1. 添加依赖2. 配置文件3. 自定义注解4. AOP切面5. 使用自定义注解&#xff1a;6. 测试 附总结 Pre SpringBoot - 优雅的实现【流控】 需求 需求描述&#xff1a; 登录错误次数限制&#xff1a;在用户登录时&#xff0c;记录每个账号的登录错…

SRIO DRP动态速率配置说明(详细讲解)

目录 一、SRIO IP时钟结构 1、时钟内部结构 2、时钟直接的关系 3、时钟计算原理 ​二、SRIO DRP介绍 ​1、MMCM DRP配置(xapp888) 2、CPLL DRP配置(ug476) 关于CPLL DRP配置详细介绍&#xff1a; GTX中CPLL、QPLL DRP动态配置方法&#xff08;详解&#xff09;-CSDN博客…

动态规划之背包问题

0/1背包问题 1.二维数组解法 题目描述&#xff1a;有一个容量为m的背包&#xff0c;还有n个物品&#xff0c;他们的重量分别为w1、w2、w3.....wn&#xff0c;他们的价值分别为v1、v2、v3......vn。每个物品只能使用一次&#xff0c;求可以放进背包物品的最大价值。 输入样例…

推荐一款龙迅HDMI2.0转LVDS芯片 LT6211UX LT6211UXC

龙迅的HDMI2.0转LVDS芯片LT6211UX和LT6211UXC是两款高性能的转换器芯片&#xff0c;它们在功能和应用上有所差异&#xff0c;同时也存在一些共同点。以下是对这两款芯片的详细比较和分析&#xff1a; 一、LT6211UX 主要特性&#xff1a; HDMI2.0至LVDS和MIPI转换器。HDMI2.0输…

深度学习模型:循环神经网络(RNN)

一、引言 在深度学习的浩瀚海洋里&#xff0c;循环神经网络&#xff08;RNN&#xff09;宛如一颗独特的明珠&#xff0c;专门用于剖析序列数据&#xff0c;如文本、语音、时间序列等。无论是预测股票走势&#xff0c;还是理解自然语言&#xff0c;RNN 都发挥着举足轻重的作用。…

[STM32]从零开始的STM32 FreeRTOS移植教程

一、前言 如果能看到这个教程的话&#xff0c;说明大家已经学习嵌入式有一段时间了。还记得嵌入式在大多数时候指的是什么吗&#xff1f;是的&#xff0c;我们所说的学习嵌入式大部分时候都是在学习嵌入式操作系统。从简单的一些任务状态机再到复杂一些的RTOS&#xff0c;再到最…

《操作系统 - 清华大学》5 -4:虚拟技术

文章目录 0. 虚拟存储的定义1. 目标2.局部性原理3. 虚拟存储的思路与规则4. 虚拟存储的基本特征5. 虚拟页式存储管理5.1 页表表项5.2 示例 0. 虚拟存储的定义 1. 目标 虚拟内存管理技术&#xff0c;简称虚存技术。那为什么要虚存技术&#xff1f;在于前面覆盖和交换技术&#…

2024APMCM亚太杯数学建模C题【宠物行业】原创论文分享

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024 年APMCM亚太地区大学生数学建模竞赛C题的成品论文。 给大家看一下目录吧&#xff1a; 目录 摘 要&#xff1a; 10 一、问题重述 14 二&#xff0e;问题分析 15 2.1问题一 15 2.2问题二 15 2.3问题三…

YOLOv8模型pytorch格式转为onnx格式

一、YOLOv8的Pytorch网络结构 model DetectionModel((model): Sequential((0): Conv((conv): Conv2d(3, 64, kernel_size(3, 3), stride(2, 2), padding(1, 1))(act): SiLU(inplaceTrue))(1): Conv((conv): Conv2d(64, 128, kernel_size(3, 3), stride(2, 2), padding(1, 1))(a…

零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu

1.为啥使用Linux做嵌入式开发 能广泛支持硬件 内核比较高效稳定 原码开放、软件丰富 能够完善网络通信与文件管理机制 优秀的开发工具 2.什么是Ubuntu 是一个以桌面应用为主的Linux的操作系统&#xff0c; 内核是Linux操作系统&#xff0c; 具有Ubuntu特色的可视…

VScode 连不上远程云服务器

今天下午写代码&#xff0c;打开 VScode 突然发现连不上云服务器了&#xff0c;一开始以为自己密码输错了&#xff0c;试了好多次&#xff0c;依然是这样的 经过查资料发现&#xff0c;应该是版本的自动升级导致的&#xff01;解决方案如下&#xff1a; 1、删除 windows 端的 …