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

news/2024/7/5 3:37:17

文章目录

  • 统计学习方法 支持向量机(下)
    • 非线性支持向量机与和核函数
      • 核技巧
      • 正定核
      • 常用核函数
      • 非线性 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://lihuaxi.xjx100.cn/news/1717101.html

相关文章

如何将Python程序打包并保护源代码

导言: 在某些情况下,我们可能希望将Python程序打包成可执行文件,以便用户无法查看程序的源代码。这种需求通常出现在商业软件、数据分析工具或其他需要保护知识产权的场景中。本文将介绍如何使用PyInstaller工具来打包Python程序,并确保它可以执行和读取配置信息。 第一步…

纺织辅料经营小程序商城的作用是什么

数字化时代&#xff0c;各个行业都在通过线上转型实现新增长&#xff0c;纺织辅料厂商也一样&#xff0c;需要通过线上化实现与客户的面对面交流有利于打造品牌及构建私有化流量池&#xff0c;但无论入驻哪家电商平台及垂直行业平台&#xff0c;都有不少的佣金及入驻费。 可通过…

【人工智能Ⅰ】实验1:谓词表示法与产生式知识表示

实验1 谓词表示法与产生式知识表示 一、实验目的 1、熟悉谓词逻辑表示法&#xff1b; 2、理解和掌握产生式知识表示方法&#xff0c;实现产生式系统的规则库。 二、实验内容 要求通过C/C/python语言编程实现&#xff1a; 1、猴子摘香蕉问题 2、动物识别系统 &#xff08…

长城首款MPV上市,能否迎来「高山」时刻?

作者 | Amy 编辑 | 德新 去年下半年起&#xff0c;自主品牌接二连三抢占高端MPV市场&#xff0c;腾势D9、岚图梦想家、极氪009以及传祺E9等车型接连亮相。 国泰君安证券研究报告显示&#xff0c;新能源MPV 2021年、2022年年销量分别为4.4万和9.2万辆&#xff0c;今年上半年销…

命令行输入sns.countplot(data[‘marital‘])报错

代码sns.countplot(data[marital])是用于绘制柱状图来显示分类变量的频数分布。但是&#xff0c;根据警告信息&#xff0c;从Seaborn 0.12版本开始&#xff0c;只有一个有效的位置参数data&#xff0c;其他参数必须作为关键字参数传递。因此&#xff0c;你需要将参数data[marit…

IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘t_user‘ 中的标识列插入显式值

出现这个问题的原因 出现这个问题一般都是SQL server数据库&#xff0c;在创建表主键的时候双击修改标识规范默认自增&#xff0c;如果再插入显示的值就会出现这样的问题。这样的问题是非常常见的&#xff0c;通常会出现在大量数据插入表中&#xff0c;列如 解决的办法 在…

双非本两年经验,靠这套Java面试题拿下拿下阿里、百度、美团、滴滴、快手、拼多多等大厂offer

背景 博主是双非大学毕业&#xff0c;有两年的互联网经验 社招面试也是一样的流程&#xff1a;项目 八股 算法 项目&#xff1a; 公司项目&#xff0c;涉及的技术包括但不限&#xff1a; 管理域&#xff1a;DDD、CQRS、事件总线、命令总线 运行域&#xff1a;微内核、规则…

YOLO目标检测——行人数据集【含对应voc、coco和yolo三种格式标签+划分脚本】

实际项目应用&#xff1a;智能监控、人机交互、行为分析、安全防护数据集说明&#xff1a;行人检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(j…