统计学习方法 支持向量机(下)

文章目录

  • 统计学习方法 支持向量机(下)
    • 非线性支持向量机与和核函数
      • 核技巧
      • 正定核
      • 常用核函数
      • 非线性 SVM
    • 序列最小最优化算法
      • 两个变量二次规划的求解方法
      • 变量的选择方法
      • SMO 算法

统计学习方法 支持向量机(下)

学习李航的《统计学习方法》时,关于支持向量机的相关笔记。

非线性支持向量机与和核函数

核技巧

非线性分类问题:前面提到的两种 SVM 都是线性的。但有时分类问题是非线性的,需要 R n \R^n Rn 中的一个超曲面将正负类分开。此时我们可以使用核技巧,对训练实例进行非线性变换,映射过后变成了线性问题,就可以使用原来的方法求解:

请添加图片描述

希尔伯特空间:希尔伯特空间是一个向量空间,它具有内积结构、完备性,通常是无限维度的,用于处理向量、函数或序列的数学空间。

  • 内积结构允许定义向量之间的夹角和长度;
  • 完备性表示空间中的柯西序列都有极限;

核函数:设 X \mathcal{X} X 是输入空间(欧氏空间 R n \R^n Rn 的子集或离散集合),又设 H \mathcal{H} H 为特征空间(希尔伯特空间),如果存在一个从 X \mathcal{X} X H \mathcal{H} H 的映射:
ϕ ( x ) : X → H \phi(x): \, \mathcal{X}\to\mathcal{H} ϕ(x):XH
函数 K ( x , z ) K(x,z) K(x,z) 代表映射后的内积函数,即对所有的 x x x z ∈ X z\in\mathcal{X} zX ,满足条件:
K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z)=\phi(x)\cdot \phi(z) K(x,z)=ϕ(x)ϕ(z)
则称 K ( x , z ) K(x,z) K(x,z) 为核函数, ϕ ( x ) \phi(x) ϕ(x) 为映射函数。我们往往不需要直接定义 ϕ ( x ) \phi(x) ϕ(x) 核特征空间,只需要定义满足条件的 K ( x , z ) K(x,z) K(x,z) (满足线性性、对称性和正定性),就可以把训练实例映射到某一个高维空间,就有可能使得数据集变为线性的。

核函数在支持向量机中的应用:我们所要求解的对偶问题为:
W ( α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i W(\alpha)=\frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum\limits_{i=1}^{N}\alpha_i W(α)=21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi
并且最终得到的分离超平面为:
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i ( x i ⋅ x ) + b ∗ ) f(x)=\text{sign}\left(\sum\limits_{i=1}^{N}\alpha_i^{\ast}y_i(x_i\cdot x)+b^\ast\right) f(x)=sign(i=1Nαiyi(xix)+b)
也就是说,所有训练实例 x i x_i xi 在算法中都以内积的形式出现,因此我们可以直接定义核函数 K ( x , z ) K(x,z) K(x,z) ,将问题转化为:
W ( α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i W(\alpha)=\frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_i\alpha_jy_iy_jK(x_i, x_j)-\sum\limits_{i=1}^{N}\alpha_i W(α)=21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi
超平面的方程可以变为:
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i K ( x i , x ) + b ∗ ) f(x)=\text{sign}\left(\sum\limits_{i=1}^{N}\alpha_i^{\ast}y_iK(x_i, x)+b^\ast\right) f(x)=sign(i=1NαiyiK(xi,x)+b)
核函数的选择往往是基于领域知识、经验和实验验证的。

正定核

核函数代表内积运算,需要满足线性性、对称性和正定性。通常所说的核函数就是正定核函数。因此,对于一个函数 K ( x , z ) K(x,z) K(x,z) 是否能被用作核函数,需要满足以下条件:

Th 7.5(正定核函数的充要条件):设 K : X × X → R K:\,\mathcal{X}\times\mathcal{X}\to\R K:X×XR 是对称函数,则 K ( x , z ) K(x,z) K(x,z) 为正定核函数的充分必要条件是:对任意 x i ∈ X x_i\in \mathcal{X} xiX i = 1 , 2 , ⋯ , m i=1,2,\cdots,m i=1,2,,m) , K ( x , z ) K(x,z) K(x,z) 对应的 Gram 矩阵:
K = [ K ( x i , x j ) ] m × m K=[K(x_i,x_j)]_{m\times m} K=[K(xi,xj)]m×m
是半正定矩阵。

证明必要性:由于 K ( x , z ) K(x,z) K(x,z) X × X \mathcal{X}\times\mathcal{X} X×X 上的正定核,所以存在从 X \mathcal{X} X 到希尔伯特空间 H \mathcal{H} H 的映射 ϕ ( x ) \phi(x) ϕ(x) ,使得:
K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z)=\phi(x) \cdot \phi(z) K(x,z)=ϕ(x)ϕ(z)
于是,对于任意 x i ∈ X x_i\in \mathcal{X} xiX i = 1 , 2 , ⋯ , m i=1,2,\cdots,m i=1,2,,m)的 K ( x , z ) K(x,z) K(x,z) 的 Gram 矩阵 [ K ( x i , x j ) ] m × m [K(x_i,x_j)]_{m\times m} [K(xi,xj)]m×m ,我们要证明该 Gram 矩阵是半正定的,只需要证明其二次型是大于等于 0 的(因为 Gram 矩阵已经对称了)。

对于任意 c = [ c 1 , c 2 , ⋯ , c m ] T ∈ R m c=[c_1,c_2,\cdots,c_m]^\text{T} \in \R^m c=[c1,c2,,cm]TRm ,有:
c T K c = ∑ i , j = 1 m c i c j K ( x i , x j ) = ∑ i , j = 1 m c i c j ( ϕ ( x i ) ⋅ ϕ ( x j ) ) = ( ∑ i c i ϕ ( x i ) ) ⋅ ( ∑ j c j ϕ ( x j ) ) = ∥ ∑ i c i ϕ ( x i ) ∥ 2 ≥ 0 \begin{aligned} c^TKc =&\, \sum\limits_{i,j=1}^{m}c_ic_jK(x_i,x_j) \\ =&\, \sum\limits_{i,j=1}^{m}c_ic_j(\phi(x_i)\cdot \phi(x_j)) \\ =&\, \left(\sum\limits_{i}c_i\phi(x_i)\right)\cdot\left(\sum\limits_{j}c_j\phi(x_j)\right) \\ =&\, \left\| \sum\limits_{i}c_i\phi(x_i) \right\|^2 \geq 0 \end{aligned} cTKc====i,j=1mcicjK(xi,xj)i,j=1mcicj(ϕ(xi)ϕ(xj))(iciϕ(xi))(jcjϕ(xj)) iciϕ(xi) 20
因此该 Gram 矩阵是半正定的。

证明充分性:我们需要依照这样的 K ( x , z ) K(x,z) K(x,z) ,去构造一个希尔伯特空间。分为三步:

  1. 定义映射,构成向量空间:首先定义映射:

ϕ : x → K ( ⋅ , x ) \phi: x\to K(\cdot, x) ϕ:xK(,x)

这里 ⋅ \cdot 是一个占位符,表示一个参数。就是说 ϕ \phi ϕ x x x 映射成了一个函数 K ( ⋅ , x ) K(\cdot,x) K(,x) ,函数的参数为 ⋅ \cdot ;根据这个映射,我们定义线性组合:
f ( ⋅ ) = ∑ i = 1 m α i K ( ⋅ , x i ) f(\cdot)=\sum\limits_{i=1}^m \alpha_i K(\cdot, x_i) f()=i=1mαiK(,xi)
考虑由线性组合为元素构成的集合 S S S ,它对加法和数乘运算是封闭的,所以 S S S 构成一个向量空间。( S S S 中的每个元素都是函数)

  1. S S S 上定义内积,使其成为内积空间:对于任意 f f f g ∈ S g \,\in S gS

f ( ⋅ ) = ∑ i = 1 m α i K ( ⋅ , x i ) g ( ⋅ ) = ∑ j = 1 l β j K ( ⋅ , z j ) \begin{aligned} f(\cdot)=&\, \sum\limits_{i=1}^m \alpha_i K(\cdot, x_i) \\ g(\cdot)=&\, \sum\limits_{j=1}^l \beta_j K(\cdot, z_j) \end{aligned} f()=g()=i=1mαiK(,xi)j=1lβjK(,zj)

S S S 上定义二元运算 ∗ \ast
f ∗ g = ∑ i = 1 m ∑ j = 1 l α i β j K ( x i , z j ) f\ast g=\sum\limits_{i=1}^m\sum\limits_{j=1}^l \alpha_i\beta_jK(x_i,z_j) fg=i=1mj=1lαiβjK(xi,zj)
要证明 ∗ \ast 是空间 S S S 中的内积,需要证明线性性、对称性和正定性;线性性和对称性是挺明显的,现在证明正定性,即:
f ∗ f ≥ 0 ; f ∗ f = 0 ⟺ f = 0 f\ast f \geq 0;\quad f\ast f=0 \iff f=0 ff0;ff=0f=0
有:
f ∗ f = ∑ i , j = 1 m α i α j K ( x i , x j ) f\ast f=\sum\limits_{i,j=1}^m\alpha_i\alpha_j K(x_i,x_j) ff=i,j=1mαiαjK(xi,xj)
由 Gram 矩阵的半正定性得,这玩意儿 f ∗ f ≥ 0 f\ast f \geq 0 ff0 ;对于 f ∗ f = 0 ⟺ f = 0 f\ast f=0 \iff f=0 ff=0f=0 ,充分性显然,下面证明必要性。

首先证明 Cauchy-Shwarz 不等式,设 f f f g ∈ S g \,\in S gS λ ∈ R \lambda \in \R λR ,则 f + λ g ∈ S f+\lambda g \in S f+λgS ,有:
( f + λ g ) ∗ f + λ g ≥ 0 ⇒ f ∗ f + 2 λ ( f ∗ g ) + λ 2 ( g ∗ g ) ≥ 0 \begin{aligned} (f+\lambda g)\ast f+\lambda g \geq 0 \\ \Rightarrow f\ast f+2\lambda(f\ast g)+\lambda^2(g\ast g) \geq 0 \end{aligned} (f+λg)f+λg0ff+2λ(fg)+λ2(gg)0
由于非负,因此判别式小于等于零,有:
( f ∗ g ) 2 − ( f ∗ f ) ( g ∗ g ) ≤ 0 (f\ast g)^2-(f\ast f)(g\ast g) \leq 0 (fg)2(ff)(gg)0
于是得到柯西不等式:
∣ f ∗ g ∣ 2 ≤ ( f ∗ f ) ( g ∗ g ) |f\ast g|^2 \leq (f\ast f)(g\ast g) fg2(ff)(gg)
利用柯西不等式,我们可以得到,对于任意 x ∈ X x\in\mathcal{X} xX ,有:
K ( ⋅ , x ) ∗ f = ∑ i = 1 m α i K ( x , x i ) = f ( x ) K(\cdot,x)\ast f=\sum\limits_{i=1}^m \alpha_i K(x,x_i)=f(x) K(,x)f=i=1mαiK(x,xi)=f(x)
于是:
∣ f ( x ) ∣ 2 = ∣ K ( ⋅ , x ) ∗ f ∣ 2 ≤ ( K ( ⋅ , x ) ∗ K ( ⋅ , x ) ) ( f ∗ f ) = K ( x , x ) ( f ∗ f ) |f(x)|^2=|K(\cdot,x)\ast f|^2 \leq (K(\cdot,x)\ast K(\cdot,x))(f\ast f)=K(x,x)(f\ast f) f(x)2=K(,x)f2(K(,x)K(,x))(ff)=K(x,x)(ff)
即:
∣ f ( x ) ∣ 2 ≤ K ( x , x ) ( f ∗ f ) |f(x)|^2\leq K(x,x)(f\ast f) f(x)2K(x,x)(ff)
于是,当 f ∗ f = 0 f\ast f=0 ff=0 时,对于任意 x x x 都有 f ( x ) = 0 f(x)=0 f(x)=0 ,因此 f = 0 f=0 f=0

至此,我们证明了 ∗ \ast S S S 中的内积运算, S S S 是一个内积空间,我们以仍然以 ⋅ \mathcal{\cdot} 表示 ∗ \ast ,这是比较常用的内积符号(但是和前面的占位符不一样)。

  1. 将内积空间 S S S 完备为希尔伯特空间:由前面内积的定义可以得到范数:

∥ f ∥ = f ⋅ f \|f\|=\sqrt{f\cdot f} f=ff

因此, S S S 是一个赋范向量空间。由泛函分析的某些理论可得,对于不完备的赋范向量空间 S S S ,一定可以使之完备化(虽然我也不知道为啥),由此可以得到完备的赋范向量空间 H \mathcal{H} H ,就是希尔伯特空间。

至此,我们证明了正定核的充分条件。正定核的定义也可以写为:

正定核的等价定义:设 X ⊂ R n \mathcal{X}\subset \R^n XRn K ( x , z ) K(x,z) K(x,z) 是定义在 X × X \mathcal{X}\times\mathcal{X} X×X 上的对称函数,如果对任意 x i ∈ X x_i\in\mathcal{X} xiX i = 1 , 2 , ⋯ , m i=1,2,\cdots,m i=1,2,,m K ( x , z ) K(x,z) K(x,z) 对应的 Gram 矩阵:
K = [ K ( x i , x j ) ] m × m K=[K(x_i,x_j)]_{m\times m} K=[K(xi,xj)]m×m
是半正定矩阵,则称 K ( x , z ) K(x,z) K(x,z) 是正定核。

常用核函数

多项式核函数:对应的支持向量机是一个 p p p 此多项式分类器:
K ( x , z ) = ( x ⋅ z + 1 ) p K(x,z)=(x\cdot z+1)^p K(x,z)=(xz+1)p
分类决策函数为:
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i ( x i ⋅ x + 1 ) p + b ∗ ) f(x)=\text{sign}\left( \sum\limits_{i=1}^{N}\alpha_i^\ast y_i(x_i\cdot x+1)^p+b^\ast \right) f(x)=sign(i=1Nαiyi(xix+1)p+b)
高斯核函数:使用高斯径向函数(RBF):
K ( x , z ) = exp ( − ∥ x − z ∥ 2 2 σ 2 ) K(x,z)=\text{exp}\left(-\frac{\|x-z\|^2}{2\sigma^2} \right) K(x,z)=exp(2σ2xz2)
分类决策函数为:
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i exp ( − ∥ x − x i ∥ 2 2 σ 2 ) + b ∗ ) f(x)=\text{sign}\left( \sum\limits_{i=1}^{N}\alpha_i^\ast y_i\text{exp}\left(-\frac{\|x-x_i\|^2}{2\sigma^2} \right)+b^\ast \right) f(x)=sign(i=1Nαiyiexp(2σ2xxi2)+b)

字符串核函数:定义有限字符表 Σ \Sigma Σ

  • 字符串 s s s 是从 Σ \Sigma Σ 中取出有限个字符的序列,其长度表示为 ∣ s ∣ |s| s

  • 两个字符串 s s s t t t 的连接记为 s t st st

  • 所有长度为 n n n 的字符串集合记作 Σ n \Sigma^n Σn

  • 所有字符串的集合记作 Σ ∗ = ⋃ i = 1 ∞ Σ i \Sigma^\ast =\bigcup\limits_{i=1}^\infty \Sigma^i Σ=i=1Σi

给定一个下标序列 i = ( i 1 , i 2 , ⋯ , i ∣ u ∣ ) i=(i_1,i_2,\cdots,i_{|u|}) i=(i1,i2,,iu) ,其中 1 ≤ i 1 < i 2 < ⋯ < i ∣ u ∣ ≤ ∣ s ∣ 1\leq i_1\lt i_2 \lt \cdots \lt i_{|u|} \leq |s| 1i1<i2<<ius ,考虑 s s s 字符串的子串 u = s [ i ] u=s[i] u=s[i] ,定义 l ( i ) = i ∣ u ∣ − i 1 + 1 l(i)=i_{|u|}-i_1+1 l(i)=iui1+1 ,代表下标的跨度。若 i i i 是连续的,则 l ( i ) = ∣ u ∣ l(i)=|u| l(i)=u ,否则 l ( i ) > ∣ u ∣ l(i)\gt |u| l(i)>u

S S S 是长度大于等于 n n n 的字符串的集合,设 s ∈ S s\in S sS 。先建立字符串集合 S S S 到特征空间 H n = R ∣ Σ n ∣ \mathcal{H}_{n}=\R^{|\Sigma^n|} Hn=RΣn 的映射 ϕ n ( s ) \phi_n(s) ϕn(s) 。其中 ∣ Σ n ∣ |\Sigma^n| Σn 代表集合 Σ n \Sigma^n Σn 的基数, R ∣ Σ n ∣ \R^{|\Sigma^n|} RΣn 中向量的每一维对应某个字符串 u ∈ Σ n u\in \Sigma^n uΣn

定义 R ∣ Σ n ∣ \R^{|\Sigma^n|} RΣn 中向量在 u u u 维上的取值为:
[ ϕ n ( s ) ] u = ∑ i : s ( i ) = u λ l ( i ) [\phi_n(s)]_u=\sum\limits_{i:s(i)=u}\lambda^{l(i)} [ϕn(s)]u=i:s(i)=uλl(i)
这里 0 < λ ≤ 1 0\lt \lambda \leq 1 0<λ1 是一个衰减参数,求和表示在 s s s 中所有为 u u u 的子串上进行;

:对于英文字符串, n = 3 n=3 n=3 ,现将 S S S 映射到 H 3 \mathcal{H}_3 H3 。设 H 3 \mathcal{H}_3 H3 中的向量的第一维对应于字符串 asd ,则对于两个字符串 Nasdaqlass das ,它们在第一维上的取值分别为:

  • [ ϕ 3 ( Nasdaq ) ] asd = λ 3 [\phi_3(\text{Nasdaq})]_{\text{asd}}=\lambda^3 [ϕ3(Nasdaq)]asd=λ3 :因为 Nasdaq 只有一个子串为 asd ,下标为 ( 2 , 3 , 4 ) (2,3,4) (2,3,4) ,所以 l ( ( 2 , 3 , 4 ) ) = 3 l((2,3,4))=3 l((2,3,4))=3
  • [ ϕ 3 ( lass das ) ] asd = 2 λ 5 [\phi_3(\text{lass das})]_{\text{asd}}=2\lambda^5 [ϕ3(lass das)]asd=2λ5lass das 有两个子串为 asd ,且对应的 l(i) 均为 5;

我们定义字符串 s s s t t t 的核函数为:
K n ( s , t ) = ∑ u ∈ Σ n [ ϕ n ( s ) ] u [ ϕ n ( t ) ] u = ∑ u ∈ Σ n ∑ ( i , j ) : s ( i ) = t ( j ) = u λ l ( i ) λ l ( j ) \begin{aligned} K_n(s,t)=&\,\sum\limits_{u\in\Sigma^n}[\phi_n(s)]_u[\phi_n(t)]_u \\ =&\, \sum\limits_{u\in\Sigma^n}\sum\limits_{(i,j):s(i)=t(j)=u}\lambda^{l(i)}\lambda^{l(j)} \end{aligned} Kn(s,t)==uΣn[ϕn(s)]u[ϕn(t)]uuΣn(i,j):s(i)=t(j)=uλl(i)λl(j)
可以理解为,两个字符串共同子串越多,二者就越相似。字符串核函数可以由动态规划来快速计算。

非线性 SVM

非线性支持向量机:给定非线性分类训练集,通过核函数与软间隔最大化,或对应的对偶最优化问题,学习得到的分类决策函数:
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ ) f(x)=\text{sign}\left( \sum\limits_{i=1}^{N}\alpha_i^\ast y_iK(x,x_i)+b^\ast \right) f(x)=sign(i=1NαiyiK(x,xi)+b)
称为非线性支持向量机, K ( x , z ) K(x,z) K(x,z) 是正定核函数。

算法:非线性支持向量机学习算法

  • 输入:线性可分训练数据集 T = { ( x 1 , t 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T=\set{(x_1,t_1),(x_2,y_2),\cdots,(x_N,y_N)} T={(x1,t1),(x2,y2),,(xN,yN)} ,其中 x i ∈ X ⊆ R n x_i\in\mathcal{X}\subseteq \R^n xiXRn y i ∈ Y = { 1 , − 1 } y_i\in\mathcal{Y}=\set{1,\,-1} yiY={1,1}
  • 输出:分类决策函数
  1. 选取适当的核函数 K ( x , z ) K(x,z) K(x,z) 和超参数 C C C ,构造求解最优化问题:

min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 α i ≥ 0 , i = 1 , 2 , ⋯ , N \begin{aligned} \min_{\alpha}&\, \frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_i\alpha_jy_iy_jK(x_i, x_j)-\sum\limits_{i=1}^{N}\alpha_i \\ \text{s.t.}&\,\, \sum_{i=1}^{N}\alpha_iy_i=0 \\ &\,\, \alpha_i\geq 0,\quad i=1,2,\cdots,N \end{aligned} αmins.t.21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαii=1Nαiyi=0αi0,i=1,2,,N

得到最优解 α ∗ \alpha^\ast α

  1. 选择 α ∗ \alpha^\ast α 的一个正分量 α j ∗ \alpha_j^\ast αj ,计算:
    b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^\ast=y_j-\sum\limits_{i=1}^{N}\alpha_i^\ast y_i(x_i\cdot x_j) b=yji=1Nαiyi(xixj)

  2. 构造决策函数:

f ( x ) = sign ( ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ ) f(x)=\text{sign}\left( \sum\limits_{i=1}^{N}\alpha_i^\ast y_iK(x,x_i)+b^\ast \right) f(x)=sign(i=1NαiyiK(x,xi)+b)

K ( x , z ) K(x,z) K(x,z) 是正定核函数时,该问题是凸二次规划问题,解是存在的。

序列最小最优化算法

我们在求解对偶的凸二次规划问题时,当样本量很大时, 一般的最优化算法会变得很低效:
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , ⋯ , N \begin{aligned} \min_{\alpha}&\, \frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_i\alpha_jy_iy_jK(x_i, x_j)-\sum\limits_{i=1}^{N}\alpha_i \\ \text{s.t.}&\,\, \sum_{i=1}^{N}\alpha_iy_i=0 \\ &\,\, 0\leq\alpha_i\leq C,\quad i=1,2,\cdots,N \end{aligned} αmins.t.21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαii=1Nαiyi=00αiC,i=1,2,,N
SMO(序列最小最优化)算法是一种启发式算法,思路为:

  • 如果所有变量的解都满足 KKT 条件,则解就得到了;
  • 否则,选取两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。两个变量的二次规划问题可以直接通过解析方法求解。这个二次规划问题关于这两个变量的解应当比原来更接近原始二次规划问题的解;
  • 子问题有两个变量:一个是违反 KKT 条件最严重的那个,另一个由约束条件自动确定;
  • 通过不断地将原问题分解为子问题,并且求解子问题,从而迭代地达到求解原问题的目的。

注意,子问题的两个变量只有一个是自由变量,例如,假设 α 1 \alpha_1 α1 α 2 \alpha_2 α2 为变量,其余 α \alpha α 固定,则可以得到:
α 1 = − y 1 ∑ i = 2 N α i y i \alpha_1=-y_1\sum\limits_{i=2}^N\alpha_iy_i α1=y1i=2Nαiyi
如果 α 2 \alpha_2 α2 确定,则 α 1 \alpha_1 α1 也随之确定。

SMO 算法包含两个部分:两个变量二次规划问题的解析解和选择变量的启发式方法。

两个变量二次规划的求解方法

两个变量二次规划问题:同样地,假设 α 1 \alpha_1 α1 α 2 \alpha_2 α2 为变量,其余 α \alpha α 固定(我们将 α 2 \alpha_2 α2 看作自由变量),则可以得到(注意 y i 2 = 1 y_i^2=1 yi2=1):
min ⁡ α 1 , α 2 W ( α 1 , α 2 ) = 1 2 K 11 α 1 2 + 1 2 K 2 α 2 2 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 N y i α i K i 1 + y 2 α 2 ∑ i = 3 N y i α i K i 2 s.t. α 1 y 1 + α 2 y 2 = − ∑ i = 3 N y i α i = ζ 0 ≤ α i ≤ C , i = 1 , 2 \begin{aligned} \min_{\alpha_1,\alpha_2}&\, W(\alpha_1,\alpha_2) =\frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{2}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2 \\ &\quad\quad\quad\quad\quad-(\alpha_1+\alpha_2) +y_1\alpha_1\sum\limits_{i=3}^Ny_i\alpha_iK_{i1} +y_2\alpha_2\sum\limits_{i=3}^Ny_i\alpha_iK_{i2} \\ \text{s.t.}&\,\, \alpha_1y_1+\alpha_2y_2=-\sum\limits_{i=3}^{N}y_i\alpha_i=\zeta \\ &\,\, 0\leq\alpha_i\leq C,\quad i=1,2 \end{aligned} α1,α2mins.t.W(α1,α2)=21K11α12+21K2α22+y1y2K12α1α2(α1+α2)+y1α1i=3NyiαiKi1+y2α2i=3NyiαiKi2α1y1+α2y2=i=3Nyiαi=ζ0αiC,i=1,2
其中 K i j = K ( x i , x j ) K_{ij}=K(x_i,x_j) Kij=K(xi,xj) ζ \zeta ζ 为常数;

约束条件:注意到 y i y_i yi 只有 ± 1 \pm 1 ±1 的取值,因此约束有两种情况( α 2 \alpha_2 α2 是纵坐标, α 1 \alpha_1 α1 是横坐标):

请添加图片描述

约束是 [ 0 , C ] [0,\,C] [0,C] 的正方形内的一条对角线,方程为 α 2 − α 2 old + y 1 y 2 ( α 1 − α 1 old ) = 0 \alpha_2-\alpha_2^{\text{old}}+y_1y_2(\alpha_1-\alpha_1^{\text{old}})=0 α2α2old+y1y2(α1α1old)=0

假设初始可行解为 α 1 old \alpha_1^{\text{old}} α1old α 2 old \alpha_2^{\text{old}} α2old ,最优解为 α 1 new \alpha_1^{\text{new}} α1new α 2 new \alpha_2^{\text{new}} α2new ;并且假设在沿着约束方向未经 0 ≤ α i ≤ C 0\leq\alpha_i\leq C 0αiC 剪辑时 α 2 \alpha_2 α2 的最优解为 α 2 new unc \alpha_2^{\text{new unc}} α2new unc

最优解 α 2 new \alpha_2^{\text{new}} α2new 的取值范围需满足条件:
L ≤ α 2 new ≤ H L\leq\alpha_2^{\text{new}}\leq H Lα2newH
L L L H H H 就是对角线段的端点,如果 y 1 ≠ y 2 y_1\not=y_2 y1=y2 ,则直线的表达式为 α 2 = α 1 + α 2 old − α 1 old \alpha_2=\alpha_1+\alpha_2^{\text{old}}-\alpha_1^{\text{old}} α2=α1+α2oldα1old
L = max ⁡ ( 0 , α 2 old − α 1 old ) , H = min ⁡ ( C , C + α 2 old − α 1 old ) L=\max(0,\,\alpha_2^{\text{old}}-\alpha_1^{\text{old}}),\quad H=\min(C,\,C+\alpha_2^{\text{old}}-\alpha_1^{\text{old}}) L=max(0,α2oldα1old),H=min(C,C+α2oldα1old)
如果 y 1 = y 2 y_1=y_2 y1=y2 ,则直线的表达式为 α 2 = − α 1 + α 2 old + α 1 old \alpha_2=-\alpha_1+\alpha_2^{\text{old}}+\alpha_1^{\text{old}} α2=α1+α2old+α1old
L = max ⁡ ( 0 , α 2 old + α 1 old − C ) , H = min ⁡ ( C , α 2 old + α 1 old ) L=\max(0,\,\alpha_2^{\text{old}}+\alpha_1^{\text{old}}-C),\quad H=\min(C,\,\alpha_2^{\text{old}}+\alpha_1^{\text{old}}) L=max(0,α2old+α1oldC),H=min(C,α2old+α1old)
求解 α 2 new \alpha_2^{\text{new}} α2new:我们的思想是,先求得 α 2 new unc \alpha_2^{\text{new unc}} α2new unc ,再使用 [ L , H ] [L,\,H] [L,H] 剪辑得到 α 2 new \alpha_2^{\text{new}} α2new
α 2 new = { H , α 2 new unc > H α 2 new unc , L ≤ α 2 new unc ≤ H L , α 2 new unc < L \alpha_2^{\text{new}}=\left\{ \begin{array}{ll} H, & \alpha_2^{\text{new unc}} \gt H \\ \alpha_2^{\text{new unc}}, & L \leq \alpha_2^{\text{new unc}} \leq H \\ L, & \alpha_2^{\text{new unc}} \lt L \end{array} \right. α2new= H,α2new unc,L,α2new unc>HLα2new uncHα2new unc<L
α 1 new \alpha_1^{\text{new}} α1new 为:
α 1 new = α 1 old − y 1 y 2 ( α 2 new − α 2 old ) \alpha_1^{\text{new}}=\alpha_1^{\text{old}}-y_1y_2(\alpha_2^{\text{new}}-\alpha_2^{\text{old}}) α1new=α1oldy1y2(α2newα2old)
求解 α 2 new unc \alpha_2^{\text{new unc}} α2new unc:记:
g ( x ) = ∑ i = 1 N α i old y i K ( x i , x ) + b old g(x)=\sum\limits_{i=1}^N \alpha_i^{\text{old}}y_iK(x_i,x)+b^{\text{old}} g(x)=i=1NαioldyiK(xi,x)+bold
其中 b old b^{\text{old}} bold 是以当前迭代到的可行解 α old \alpha^{\text{old}} αold 计算得到的 b b b g ( x ) g(x) g(x) 其实就是以当前迭代到的可行解 α old \alpha^{\text{old}} αold 计算得到的去掉符号函数的决策函数;令:
E i = g ( x i ) − y i = ( ∑ j = 1 N α j old y j K ( x j , x i ) + b old ) − y i , i = 1 , 2 E_i=g(x_i)-y_i=\left( \sum\limits_{j=1}^N \alpha_j^{\text{old}}y_jK(x_j,x_i)+b^{\text{old}} \right)-y_i,\quad i=1,2 Ei=g(xi)yi=(j=1NαjoldyjK(xj,xi)+bold)yi,i=1,2
再引入记号( Φ \Phi Φ 为核函数 K ( x , z ) K(x,z) K(x,z) 所对应的输入空间到特征空间的映射):
η = K 11 + K 22 − 2 K 12 = ∥ Φ ( x 1 ) − Φ ( x 2 ) ∥ 2 \eta=K_{11}+K_{22}-2K_{12}=\|\Phi(x_1)-\Phi(x_2)\|^2 η=K11+K222K12=∥Φ(x1)Φ(x2)2
则可以得到两个变量二次规划问题在沿着约束方向未经剪辑时 α 2 \alpha_2 α2 的最优解为:
α 2 new unc = α 2 old + y 2 ( E 1 − E 2 ) η \alpha_2^{\text{new unc}}=\alpha_2^{\text{old}}+\frac{y_2(E_1-E_2)}{\eta} α2new unc=α2old+ηy2(E1E2)
证明:引进记号(为了方便书写,去掉了 old \text{old} old 上标。没有特殊说明都是 old \text{old} old):
v i = ∑ j = 3 N α j y j K ( x i , x j ) = g ( x i ) − ∑ j = 1 2 α j y j K ( x i , x j ) − b , i = 1 , 2 v_i=\sum\limits_{j=3}^N \alpha_jy_j K(x_i,x_j)=g(x_i)-\sum\limits_{j=1}^2 \alpha_jy_jK(x_i,x_j)-b,\quad i=1,2 vi=j=3NαjyjK(xi,xj)=g(xi)j=12αjyjK(xi,xj)b,i=1,2
则目标函数写成:
W ( α 1 , α 2 ) = 1 2 K 11 α 1 2 + 1 2 K 2 α 2 2 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 N y i α i K i 1 + y 2 α 2 ∑ i = 3 N y i α i K i 2 = 1 2 K 11 α 1 2 + 1 2 K 2 α 2 2 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 v 1 α 1 + y 2 v 2 α 2 \begin{aligned} W(\alpha_1,\alpha_2) =&\,\frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{2}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2 \\ -&\,(\alpha_1+\alpha_2) +y_1\alpha_1\sum\limits_{i=3}^Ny_i\alpha_iK_{i1} +y_2\alpha_2\sum\limits_{i=3}^Ny_i\alpha_iK_{i2} \\ =&\,\frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{2}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2 \\ -&\,(\alpha_1+\alpha_2)+y_1v_1\alpha_1+y_2v_2\alpha_2 \end{aligned} W(α1,α2)==21K11α12+21K2α22+y1y2K12α1α2(α1+α2)+y1α1i=3NyiαiKi1+y2α2i=3NyiαiKi221K11α12+21K2α22+y1y2K12α1α2(α1+α2)+y1v1α1+y2v2α2
现在这个目标函数同时含有 α 1 \alpha_1 α1 α 2 \alpha_2 α2 ,我们要计算 α 2 new unc \alpha_2^{\text{new unc}} α2new unc ,因此只保留约束条件 α 1 y 1 + α 2 y 2 = ζ \alpha_1y_1+\alpha_2y_2=\zeta α1y1+α2y2=ζ ,消去 α 1 \alpha_1 α1 ,仅保留 α 2 \alpha_2 α2
α 1 = y 1 ( ζ − α 2 y 2 ) \alpha_1=y_1(\zeta-\alpha_2y_2) α1=y1(ζα2y2)
将其带入目标函数,得到:
W ( α 2 ) = 1 2 K 11 ( ζ − α 2 y 2 ) 2 + 1 2 K 2 α 2 2 + y 2 K 12 ( ζ − α 2 y 2 ) α 2 − y 1 ( ζ − α 2 y 2 ) − α 2 + v 1 ( ζ − α 2 y 2 ) + y 2 v 2 α 2 \begin{aligned} W(\alpha_2)=&\,\frac{1}{2}K_{11}(\zeta-\alpha_2y_2)^2+\frac{1}{2}K_{2}\alpha_2^2+y_2K_{12}(\zeta-\alpha_2y_2)\alpha_2 \\ -&\,y_1(\zeta-\alpha_2y_2)-\alpha_2+v_1(\zeta-\alpha_2y_2)+y_2v_2\alpha_2 \end{aligned} W(α2)=21K11(ζα2y2)2+21K2α22+y2K12(ζα2y2)α2y1(ζα2y2)α2+v1(ζα2y2)+y2v2α2
现在只有一个变量了,FOC 为:
∂ W ∂ α 2 = K 11 α 2 − K 11 ζ y 2 + K 22 α 2 + K 12 ζ y 2 − 2 K 12 α 2 + y 1 y 2 − 1 − v 1 y 2 + v 2 y 2 = 0 \begin{aligned} \frac{\partial W}{\partial \alpha_2}=&\, K_{11}\alpha_2-K_{11}\zeta y_2+K_{22}\alpha_2+K_{12}\zeta y_2-2K_{12}\alpha_2+y_1y_2-1-v_1y_2+v_2y_2 \\ =&\, 0 \\ \end{aligned} α2W==K11α2K11ζy2+K22α2+K12ζy22K12α2+y1y21v1y2+v2y20
得到:
( K 11 + K 22 − 2 K 12 ) α 2 = y 2 ( K 11 ζ − K 12 ζ − y 1 + y 2 + v 1 − v 2 ) = y 2 [ K 11 ζ − K 12 ζ − y 1 + y 2 + ( g ( x 1 ) − ∑ j = 1 2 α j y j K 1 j − b ) − ( g ( x 2 ) − ∑ j = 1 2 α j y j K 2 j − b ) ] = y 2 ( K 11 ζ − K 12 ζ + E 1 − E 2 − ∑ j = 1 2 α j y j K 1 j + ∑ j = 1 2 α j y j K 2 j ) = y 2 ( E 1 − E 2 + α 2 y 2 ( K 11 + K 22 − 2 K 12 ) ) \begin{aligned} (K_{11}+K_{22}-2K_{12})\alpha_2=&\, y_2(K_{11}\zeta-K_{12}\zeta-y_1+y_2+v_1-v_2) \\ =&\, y_2[K_{11}\zeta-K_{12}\zeta-y_1+y_2 \\ +&\,\left( g(x_1)-\sum\limits_{j=1}^2\alpha_jy_jK_{1j}-b \right) \\ -&\,\left( g(x_2)-\sum\limits_{j=1}^2\alpha_jy_jK_{2j}-b \right) ] \\ =&\, y_2\left( K_{11}\zeta-K_{12}\zeta+E_1-E_2-\sum\limits_{j=1}^2\alpha_jy_jK_{1j}+\sum\limits_{j=1}^2\alpha_jy_jK_{2j} \right) \\ =&\, y_2(E_1-E_2+\alpha_2y_2(K_{11}+K_{22}-2K_{12})) \end{aligned} (K11+K222K12)α2==+==y2(K11ζK12ζy1+y2+v1v2)y2[K11ζK12ζy1+y2(g(x1)j=12αjyjK1jb)(g(x2)j=12αjyjK2jb)]y2(K11ζK12ζ+E1E2j=12αjyjK1j+j=12αjyjK2j)y2(E1E2+α2y2(K11+K222K12))

  • 中间带入了 E i = g ( x i ) − y i E_i=g(x_i)-y_i Ei=g(xi)yi ζ = α 1 old y 1 + α 2 old y 2 \zeta=\alpha_1^{\text{old}}y_1+\alpha_2^{\text{old}}y_2 ζ=α1oldy1+α2oldy2

  • 注意 K 12 = K 21 K_{12}=K_{21} K12=K21

再带入 η = K 11 + K 22 − 2 K 12 \eta=K_{11}+K_{22}-2K_{12} η=K11+K222K12 ,就能得到:
α 2 new unc = α 2 old + y 2 ( E 1 − E 2 ) η \alpha_2^{\text{new unc}}=\alpha_2^{\text{old}}+\frac{y_2(E_1-E_2)}{\eta} α2new unc=α2old+ηy2(E1E2)

变量的选择方法

SMO 算法在每个子问题中选择两个变量优化,其中至少一个变量时违反 KKT 条件的。

第一个变量的选择:该过程称为外层循环,选取所有训练样本中违反 KKT 条件最严重的样本点作为第一个变量 α 1 \alpha_1 α1 。KKT 条件为:
α i = 0 ⟺ y i g ( x 1 ) ≥ 1 0 < α i < C ⟺ y i g ( x 1 ) = 1 α i = C ⟺ y i g ( x 1 ) ≤ 1 \begin{aligned} \alpha_i=0 \iff y_ig(x_1) \geq 1 \\ 0\lt \alpha_i \lt C \iff y_ig(x_1) = 1 \\ \alpha_i=C \iff y_ig(x_1) \leq 1 \\ \end{aligned} αi=0yig(x1)10<αi<Cyig(x1)=1αi=Cyig(x1)1
SMO 算法往往有一个超参数为精度 ε \varepsilon ε ,该检查是在 ε \varepsilon ε 的误差范围内进行的。 外层循环先检查 0 < α i < C 0\lt \alpha_i \lt C 0<αi<C (间隔边界上)的样本点,再检验其他样本点;

第二个变量的选择:该过程称为内层循环,选择标准为能使得 α 2 \alpha_2 α2 有足够大的变化。

  • α 2 new \alpha_2^{\text{new}} α2new 是依赖于 ∣ E 1 − E 2 ∣ |E_1-E_2| E1E2 的,在 α 1 \alpha_1 α1 确定的情况下, E 1 E_1 E1 也随之确定了。所以选择一个使得 ∣ E 1 − E 2 ∣ |E_1-E_2| E1E2 最大的 α 2 \alpha_2 α2 即可;为了加速计算,可以在变量选择时提前算好所有的 E i E_i Ei
  • 有时上述方法得到的 α 2 \alpha_2 α2 不能使得目标函数有足够的下降,可以采用启发式规则继续选择 α 2 \alpha_2 α2 :首先检查间隔边界上( 0 < α i < C 0\lt \alpha_i \lt C 0<αi<C )的样本点作为 α 2 \alpha_2 α2 试用,使得目标函数有足够的下降;再试用其他样本点;最后都不行的话,放弃 α 1 \alpha_1 α1 并重新选择;

计算偏移量 b b b 和差值 E i E_i Ei :每次完成两个变量的优化后,就要用新的 α \alpha α 计算 b b b

0 < α 1 new < C 0\lt \alpha_1^{\text{new}}\lt C 0<α1new<C 时,由 KKT 条件可知:
b = y 1 − ∑ i = 1 N α i y i K 1 i = y 1 − ∑ i = 3 N α i y i K 1 i − α 1 new y 1 K 11 − α 2 new y 2 K 12 \begin{aligned} b=&\, y_1-\sum\limits_{i=1}^{N}\alpha_iy_iK_{1i} \\ =&\, y_1-\sum\limits_{i=3}^{N}\alpha_iy_iK_{1i}-\alpha_1^{\text{new}}y_1K_{11}-\alpha_2^{\text{new}}y_2K_{12} \end{aligned} b==y1i=1NαiyiK1iy1i=3NαiyiK1iα1newy1K11α2newy2K12
带入 E 1 E_1 E1 得到:
b 1 new = − E 1 − y 1 K 11 ( α 1 new − α 1 old ) − y 2 K 12 ( α 2 new − α 2 old ) + b old b_{1}^{\text{new}}=-E_1-y_1K_{11}(\alpha_{1}^{\text{new}}-\alpha_{1}^{\text{old}})-y_2K_{12}(\alpha_{2}^{\text{new}}-\alpha_{2}^{\text{old}})+b^{\text{old}} b1new=E1y1K11(α1newα1old)y2K12(α2newα2old)+bold
0 < α 2 new < C 0\lt\alpha_2^{\text{new}}\lt C 0<α2new<C ,则:
b 2 new = − E 2 − y 1 K 12 ( α 1 new − α 1 old ) − y 2 K 22 ( α 2 new − α 2 old ) + b old b_{2}^{\text{new}}=-E_2-y_1K_{12}(\alpha_{1}^{\text{new}}-\alpha_{1}^{\text{old}})-y_2K_{22}(\alpha_{2}^{\text{new}}-\alpha_{2}^{\text{old}})+b^{\text{old}} b2new=E2y1K12(α1newα1old)y2K22(α2newα2old)+bold
对于 E i E_i Ei 值的更新,直接按照定义式算就可以了,但是需要用到 b new b^{\text{new}} bnew
E i new = ∑ j = 1 N y j α i K ( x i , x j ) + b new − y i E_{i}^{\text{new}}=\sum\limits_{j=1}^{N}y_j\alpha_i K(x_i,x_j)+b^{\text{new}}-y_i Einew=j=1NyjαiK(xi,xj)+bnewyi
这里不一定需要从 j = 1 j=1 j=1 遍历到 N N N ,因为只有支持向量的 α j ≠ 0 \alpha_j\not=0 αj=0 ,所以可以维护一个支持向量的集合 S S S

SMO 算法

输入:线训练数据集 T = { ( x 1 , t 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T=\set{(x_1,t_1),(x_2,y_2),\cdots,(x_N,y_N)} T={(x1,t1),(x2,y2),,(xN,yN)} ,其中 x i ∈ X ⊆ R n x_i\in\mathcal{X}\subseteq \R^n xiXRn y i ∈ Y = { 1 , − 1 } y_i\in\mathcal{Y}=\set{1,\,-1} yiY={1,1} ;精度 ε \varepsilon ε

输出:近似解 α ^ \hat{\alpha} α^

  1. 选取初值 α ( 0 ) = 0 \alpha^{(0)}=0 α(0)=0 ,令计步数 k = 0 k=0 k=0
  2. 以上述选取变量方法选取优化变量 α 1 ( k ) \alpha_1^{(k)} α1(k) α 2 ( k ) \alpha_2^{(k)} α2(k) ,直接用解析方程得到二者最优解 α 1 ( k + 1 ) \alpha_1^{(k+1)} α1(k+1) α 2 ( k + 1 ) \alpha_2^{(k+1)} α2(k+1) ,此时 α \alpha α 更新为 α ( k + 1 ) \alpha^{(k+1)} α(k+1)
  3. 若在精度 ε \varepsilon ε 范围内满足停机条件(约束条件):

∑ i = 1 N α i y i = 0 , 0 ≤ α i ≤ C , i = 1 , 2 , ⋯ , N \sum\limits_{i=1}^{N}\alpha_iy_i=0,\quad 0\leq \alpha_i\leq C,\quad i=1,2,\cdots,N i=1Nαiyi=0,0αiC,i=1,2,,N

和:
y i g ( x i ) { ≥ 1 , { x i ∣ α i = 0 } = 1 , { x i ∣ 0 < α i < C } ≤ 1 , { x i ∣ α i = C } y_ig(x_i)\left\{ \begin{array}{ll} \geq 1, & \set{x_i|\alpha_i=0} \\ = 1, & \set{x_i|0\lt\alpha_i\lt C} \\ \leq 1, & \set{x_i|\alpha_i=C} \\ \end{array} \right. yig(xi) 1,=1,1,{xiαi=0}{xi0<αi<C}{xiαi=C}
其中:
g ( x i ) = ∑ j = 1 N α j y j K ( x i , x j ) + b g(x_i)=\sum\limits_{j=1}^{N}\alpha_jy_jK(x_i,x_j)+b g(xi)=j=1NαjyjK(xi,xj)+b

  1. 返回 α ^ = α ( k + 1 ) \hat\alpha=\alpha^{(k+1)} α^=α(k+1)

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

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

相关文章

操作系统:计算机系统概述

一战成硕 1.1 手工操作阶段1.2 批处理阶段1.3 分时操作系统1.4 实时操作系统1.5 中断和异常的概念1.6 系统调用 1.1 手工操作阶段 1.2 批处理阶段 单道批处理系统 自动性 顺序性 单道性多道批处理系统 多道 宏观上并行 微观上串行 优点&#xff1a;资源利用率高&#xff0c;多…

Postman —— 配置环境变量

PostMan是一套比较方便的接口测试工具&#xff0c;但我们在使用过程中&#xff0c;可能会出现创建了API请求&#xff0c;但API的URL会随着服务器IP地址的变化而改变。 这样的情况下&#xff0c;如果每一个API都重新修改URL的话那将是非常的麻烦&#xff0c;所以PostMan中也提供…

hive窗口函数记录

记录工作中和学习中的窗口函数&#xff0c;方便以后使用&#xff0c;本记持续更新和完善&#xff0c;版本&#xff1a;231019 文章目录 1.什么是窗口函数2.窗口函数的表达式3.窗口函数的类型1&#xff09; 排名函数2&#xff09; 聚合函数3&#xff09; 跨行取值函数 4.[frame…

如何实现前端实时通信(WebSocket、Socket.io等)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测(多指标,多图)

回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测&#xff08;多指标&#xff0c;多图&#…

【图解数据结构】手把手教你如何实现顺序表(超详细)

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、算法模板、汇编语言 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️线性表1.1 &#x1f514;线性表的定义1.2 &#x1f514;线性表的存储结构 二. ⛳️…

Premiere Pro(Pr)2023软件下载及安装教程

目录 一.简介 二.安装步骤 软件&#xff1a;Pr版本&#xff1a;2023语言&#xff1a;简体中文大小&#xff1a;8.30G安装环境&#xff1a;Win11/Win10&#xff08;1809版本以上&#xff09;硬件要求&#xff1a;CPU2.6GHz 内存8G(或更高&#xff0c;不支持7代以下CPU&#xf…

【微服务保护】初识 Sentinel —— 探索微服务雪崩问题的解决方案,Sentinel 的安装部署以及将 Sentinel 集成到微服务项目

文章目录 前言一、雪崩问题及其解决方案1.1 什么是雪崩问题1.2 雪崩问题的原因1.3 解决雪崩问题的方法1.4 总结 二、初识 Sentinel 框架2.1 什么是 Sentinel2.2 Sentinel 和 Hystrix 的对比 三、Sentinel 的安装部署四、集成 Sentinel 到微服务 前言 微服务架构在现代软件开发…

如何利用数字化转型升级,重塑企业核心竞争力?

工程机械行业是一个周期性明显的行业&#xff0c;企业经营受到宏观经济与国家基础设施建设的影响较大&#xff0c;例如企业经济上行时&#xff0c;加大投资扩大生产规模&#xff0c;以满足市场需求的增长&#xff0c;当经济下行时&#xff0c;企业可能面临减产和裁员等问题&…

Ubuntu 安装 npm 和 node

前言 最近学习VUE&#xff0c;在ubuntu 2204 上配置开发环境&#xff0c;涉及到npm node nodejs vue-Cli脚手架等内容&#xff0c;做以记录。 一、node nodejs npm nvm 区别 &#xff1f; node 是框架&#xff0c;类似python的解释器。nodejs 是编程语言&#xff0c;是js语言的…

手机游戏定制研发手机软件开发

手机游戏定制研发是一个多阶段的过程&#xff0c;它使开发者能够根据客户的需求和创意&#xff0c;构建独特的游戏体验。这个领域是一个蓬勃发展的市场&#xff0c;因为手机游戏在全球范围内都备受欢迎。在本文中&#xff0c;我们将深入探讨手机游戏定制研发的主要步骤以及关键…

Day22

1、分别占据栈底&#xff0c;共用栈顶&#xff0c;对着入栈 2、循环队列不预留一个空间 3、直接定址法线性探测&#xff08;可能占别人的位置&#xff09; 4、直接选择无关顺序&#xff0c;选出max/min

UGO+DRS评复之路

前言 针对数据库整体迁移方案&#xff0c;为解决异构平台数据库迁移&#xff0c;为减轻迁移人员的工作强度以及迁移周期。华为云GaussDB迁移UGO&DRS迁移工具应运而生。 UGO介绍 数据库和应用迁移&#xff08;Database and Application Migration UGO&#xff0c;简称为UG…

SparkSQL执行流程与Catalyst优化器

目录 一、SparkSQL运行流程与Catalyst优化器 &#xff08;1&#xff09;RDD运行流程 &#xff08;2&#xff09;SparkSQL自动优化 &#xff08;3&#xff09;Catalyst优化器流程 &#xff08;4&#xff09;Catalyst优化器总结 &#xff08;5&#xff09;Spark SQL执行流程 一、…

HttpClient远程使用大全

一 HttpClient简介 1.1 概述 HttpClient只能以编程的方式通过其API用于传输和接受HTTP消息。主要实现功能&#xff1a; 实现了所有 HTTP 的方法&#xff08;GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS 等&#xff09; 支持 HTTPS 协议 支持代理服务器&#xff08;Nginx…

【网络安全 --- xss-labs靶场通关(11-20关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻

如果需要安装各种系统&#xff0c;虚拟机&#xff0c;工具等等关注我&#xff0c;已经在出系统的课程了 一&#xff0c;靶场安装 超详细的靶场安装教程如下&#xff0c;提供工具&#xff0c;靶场&#xff0c;镜像等 【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程&…

前端跨域相关

注&#xff1a;前端配置跨域后服务器端&#xff08;Nginx&#xff09;也需要配置&#xff0c;否则接口无法访问 vue跨域 配置文件 /vue.config.js devServer: { port: 7100, proxy: { /api: { target: http://域名, changeOrigin: true, logLevel: debug, pathRewrite: { ^/…

程序员想要网上接单却不知道如何是好?那这篇文章你可得收藏好了!

作为一名程序员&#xff0c;想要网上接单赚赚零花钱&#xff0c;提高生活水平&#xff0c;这当然是无可厚非的&#xff0c;甚至有许多人已经将网上接单作为主业。 可是面对网上五花八门的接单平台&#xff0c;看着网上真真假假的信息&#xff0c;你真的清楚如何选择吗&#xf…

深度学习_6_实战_点集最优直线解_代码解析

问题描述&#xff1a; 上述题目的意思为&#xff0c;人工造出一些数据点&#xff0c;对我们的模型y Xw b ∈进行训练&#xff0c;其中标准模型如下&#xff1a; 其中W和X都为张量&#xff0c;我们训练的模型越接近题目给出的标准模型越好 训练过程如下&#xff1a; 人造数…

用傲梅分区软件分割分区重启系统蓝屏BAD_SYSTEM_CONFIG_INFO,八个解决参考方案

环境: Win11 专业版 HP 笔记本 傲梅分区软件 闪迪16G U盘 Win10 官方镜像文件 Win11PE 系统安装U盘 USB固态硬盘盒 问题描述: 起因 开始使用windows自动磁盘管理工具压缩不了磁盘,提示无法将卷压缩到超出任何不可移动的文件所在点,关闭系统保护还原,删除系统创建…