⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

第7章 支持向量机 ​

习题7.1 ​

  比较感知机的对偶形式与线性可分支持向量机的对偶形式。

解答:

解答思路:

  1. 列出感知机的原始形式;
  2. 写出感知机的对偶形式;
  3. 列出线性可分支持向量机的原始形式;
  4. 写出线性可分支持向量机的对偶形式;
  5. 比较感知机和线性可分支持向量机的对偶形式。

解答步骤:

第1步:感知机的原始形式

  根据书中第2.3.1节的感知机学习算法的原始形式:

给定一个训练数据集

T={(x1,y1),(x2,y2),⋯,(xN,yN)}

其中,xi∈X=Rn,yi∈Y={−1,1},i=1,2,⋯,N,求参数w,b,使其为以下损失函数极小化问题的解

minw,bL(w,b)=−∑xi∈Myi(w⋅xi+b)

其中M为误分类点的集合。

  根据书中第2章的算法2.1:

算法2.1(感知机学习算法的原始形式)
输入:训练数据集T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中xi∈X=Rn,yi∈Y={−1,+1},i=1,2,⋯,N;学习率η(0<η⩽1);
输出:w,b;感知机模型f(x)=sign(w⋅x+b)
(1)选取初值w0,b0;
(2)在训练集中选取数据(xi,yi);
(3)如果yi(w⋅xi+b)⩽0,

w←w+ηyixib←b+ηyi

(4)转至步骤(2),直至训练集中没有误分类点。

第2步:感知机的对偶形式

  根据书中第2章的算法2.2:

算法2.2(感知机学习算法的对偶形式)
输入:线性可分的数据集T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中xi∈Rn,yi∈{−1,+1},i=1,2,⋯,N;学习率η(0<η⩽1); 输出:a,b;感知机模型f(x)=sign(∑j=1Nαjyjxj⋅x+b),其中α=(α1,α2,⋯,αN)T
(1)α←0,b←0;
(2)在训练集中选取数据(xi,yi);
(3)如果yi(∑j=1Nαjyjxj⋅x+b)⩽0,

αi←αi+ηb←b+ηyi

(4)转至(2),直至训练集中没有误分类数据。

  根据书中第2.3.3节对偶形式的基本思想

从学习过程不难看出,最后学习到的w,b可以分别表示为

w=∑i=1Nαiyixib=∑i=1Nαiyi

这里,αi⩾0,i=1,2,⋯,N

  综上所述:

  1. 感知机的原始形式中的损失函数:
minw,bL(w,b)=−∑xi∈Myi(w⋅xi+b)
  1. 感知机的对偶形式中的损失函数:可知w,b表示为⟨xi,yi⟩的线性组合形式,则
minw,bL(w,b)=minαL(α)=−∑xi∈M(yi(∑j=1Nαjyjxj⋅xi+∑j=1Nαjyj))

其中,α=(α1,α2,⋯,αN)T

第3步:线性可分支持向量机的原始形式

  根据书中第7.1.3节的线性可分支持向量机学习的最优化问题,可作为原始最优化问题(7.13)~(7.14):

(7.13)minw,b12∥w∥2(7.14)s.t.yi(w⋅xi+b)−1⩾0,i=1,2,⋯,N

第4步:线性可分支持向量机的对偶形式

  根据书中第7章的算法7.2:

算法7.2(线性可分支持向量机学习算法)
输入:线性可分训练集T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中xi∈X=Rn,yi∈Y={−1,+1},i=1,2,⋯,N;
输出:分离超平面和分类决策函数。
(1)构造并求解约束最优化问题

minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαis.t.∑i=1Nαiyi=0αi⩾0,i=1,2,⋯,N

求得最优解α∗=(α1∗,α2∗,⋯,αN∗)T。
(2)计算

w∗=∑i=1Nαi∗yjxi

并选择α∗的一个正分量αj∗>0,计算

b∗=yi−∑i=1Nαi∗yi(xi⋅xj)

(3)求得分离超平面

w∗⋅x+b∗=0

分类决策函数:

f(x)=sign(w∗⋅x+b∗)

综上所述:

  1. 线性可分支持向量机的原始形式中的损失函数:
minw,bL(w,b)=12∥w∥2
  1. 线性可分支持向量机的对偶形式中的损失函数:根据定理7.2,可知w,b表示为⟨xi,yi⟩的线性组合形式,则
minw,bL(w,b)=minαL(α)=12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi

其中,α=(α1,α2,⋯,αN)T

第5步:感知机和线性可分支持向量机对偶形式的比较

  1. 在两者的对偶形式中,w,b都可以表示为⟨xi,yi⟩的线性组合形式;
  2. 在两者的对偶形式中,都可以通过求解α=(α1,α2,⋯,αN)T,最后代入由xi,yi,αi表示的w和b公式中,从而求解最优化问题的解w∗和b∗;
  3. 感知机学习得到一个分隔超平面,而线性可分支持向量机学习得到所有分隔超平面中的间隔最大分隔超平面。

习题7.2 ​

  已知正例点x1=(1,2)T,x2=(2,3)T,x3=(3,3)T,负例点x4=(2,1)T,x5=(3,2)T,试求最大间隔分离平面和分类决策函数,并在图中画出分离超平面、间隔边界及支持向量。

解答:

解答思路:

  1. 通过调用sklearn.svm的SVC类构建模型,根据题目中的数据训练模型,得到w、b和支持向量;
  2. 调用matplotlib库,画出分离超平面、间隔边界和支持向量。

解答步骤:

第1步:训练模型,得到w、b和支持向量

python
%matplotlib inline
from sklearn.svm import SVC

# 加载数据
X = [[1, 2], [2, 3], [3, 3], [2, 1], [3, 2]]
y = [1, 1, 1, -1, -1]

# 训练SVM模型
clf = SVC(kernel='linear', C=10000)
clf.fit(X, y)

# 得到w、b和支持向量
print("w =", clf.coef_)
print("b =", clf.intercept_)
print("support vectors =", clf.support_vectors_)
w = [[-1.  2.]]
b = [-2.]
support vectors = [[3. 2.]
 [1. 2.]
 [3. 3.]]

可得:

  1. 最大间隔分离超平面:−x(1)+2x(2)−2=0
  2. 分类决策函数:f(x)=sign(−x(1)+2x(2)−2)
  3. 支持向量:x1=(3,2)T,x2=(1,2)T,x3=(3,3)T

第2步:在图中画出分离超平面、间隔边界和支持向量

python
import matplotlib.pyplot as plt
import numpy as np

# 绘制数据点
color_seq = ['red' if v==1 else 'blue' for v in y]
plt.scatter([i[0] for i in X], [i[1] for i in X], c=color_seq)

# 得到x轴的所有点
xaxis = np.linspace(0, 3.5)
w = clf.coef_[0]

# 计算斜率
a = -w[0] / w[1]

# 得到分离超平面
y_sep = a * xaxis - (clf.intercept_[0]) / w[1]

# 下边界超平面
b = clf.support_vectors_[0]
yy_down = a * xaxis + (b[1] - a * b[0])

# 上边界超平面
b = clf.support_vectors_[-1]
yy_up = a * xaxis + (b[1] - a * b[0])

# 绘制超平面
plt.plot(xaxis, y_sep, 'k-')
plt.plot(xaxis, yy_down, 'k--')
plt.plot(xaxis, yy_up, 'k--')

# 绘制支持向量
plt.xlabel('$x^{(1)}$')
plt.ylabel('$x^{(2)}$')
plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], 
            s=150, facecolors='none', edgecolors='k')

plt.show()

png

习题7.3 ​

  线性支持向量机还可以定义为以下形式:

minw,b,ξ12∥w∥2+C∑i=1Nξi2s.t.yi(w⋅xi+b)⩾1−ξi,i=1,2,⋯,Nξi⩾0,i=1,2,⋯,N

试求其对偶形式。

解答:

解答思路:

参考书中第7.2.2节“学习的对偶算法”内容`

  1. 根据附录C 拉格朗日对偶性,写出拉格朗日函数;
  2. 对 L(w,b,ξ,α,μ) 求 w,b,ξ 的极小;
  3. 对 minw,b,ξL(w,b,ξ,α,μ) 求 α 的极大;
  4. 整理得到对偶形式。

解答步骤:

第1步:原始问题的拉格朗日函数

  根据书中附录C 拉格朗日对偶性:

假设f(x),ci(x),hj(x)是定义在Rn上的连续可微函数。考虑约束最优化问题

(C.1)minx∈Rnf(x)(C.2)s.t.ci(x)⩽0,i=1,2,⋯,k(C.3)hj(x)=0,j=1,2,⋯,l

称此约束最优化问题为原始最优化问题,或原始问题。

引入广义拉格朗日函数

(C.4)L(x,α,β)=f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)

这里,x=(x(1),x(2),⋯,x(n))T∈Rn,αi,βj是拉格朗日乘子,αi⩾0。考虑x的函数:

(C.5)θP(x)=maxα,β:αi⩾0L(x,α,β)

这里,下标P表示原始问题。

  根据书中附录C的原始问题极小化:

如果考虑极小化问题

minxθP(x)=minxmaxα,β:αi⩾0L(x,α,β)

它是与原始最优化问题(C.1)~(C.3)等价的,即它们有相同的解。问题 minxmaxα,β:αi⩾0L(x,α,β) 称为广义拉格朗日函数的极小极大问题。

  根据题意,原始问题为

minw,b,ξ12∥w∥2+C∑i=1Nξi2s.t.yi(w⋅xi+b)⩾1−ξi,i=1,2,⋯,Nξi⩾0,i=1,2,⋯,N

  根据最优化函数的对应关系,可得

{f(x)=12∥w∥2+C∑i=1Nξi2ci(1)(x)=1−ξi−yi(w⋅xi+b),i=1,2,⋯,Nci(2)(x)=−ξi,i=1,2,⋯,N

  根据拉格朗日函数的定义,可得原始问题的拉格朗日函数为

L(w,b,ξ,α,μ)=12∥w∥2+C∑i=1Nξi2−∑i=1Nαi(yi(w⋅xi+b)−1+ξi)−∑i=1Nμiξi

其中,αi⩾0,μi⩾0

第2步:对L(w,b,ξ,α,μ)求w,b,ξ的极小

  根据拉格朗日对偶性,对偶问题是拉格朗日函数的极大极小问题,先对L(w,b,ξ,α,μ)求w,b,ξ的极小,分别对w,b,ξ求偏导,并令导数等于0,由

∇wL(w,b,ξ,α,μ)=w−∑i=1Nαiyixi=0∇bL(w,b,ξ,α,μ)=−∑i=1Nαiyi=0∇ξiL(w,b,ξ,α,μ)=2Cξi−αi−μi=0

  可得:

w=∑i=1Nαiyixi∑i=1Nαiyi=02Cξi−αi−μi=0

  将上式代入到原始问题的拉格朗日函数中,可得

L(w,b,ξ,α,μ)=12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+C∑i=1Nξi2−∑i=1Nαiyi((∑j=1Nαjyjxj)⋅xi+b)+∑i=1Nαi−∑i=1Nαiξi−∑i=1Nμiξi=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi+C∑i=1Nξi2−∑i=1Nαiξi−∑i=1Nμiξi=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi+C∑i=1Nξi2−∑i=1N(αi+μi)ξi=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi+C∑i=1Nξi2−∑i=1N(2Cξi)ξi=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi+C∑i=1Nξi2−2C∑i=1Nξi2=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi−C∑i=1Nξi2=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi−C∑i=1N(14C2(αi+μi)2)=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi−14C∑i=1N(αi+μi)2

第3步:对minw,b,ξL(w,b,ξ,α,μ)求α的极大

  根据第2步,对minw,b,ξL(w,b,ξ,α,μ)求α的极大,可得到对偶问题:

maxα−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi−14C∑i=1N(αi+μi)2s.t.∑i=1Nαiyi=02Cξi−αi−μi=0αi⩾0,μi⩾0,ξi⩾0,i=1,2,⋯,N

第4步:进行公式变换,得到对偶形式

  再将对目标函数求极大转换为求极小,于是得到原始问题的对偶形式

minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi+14C∑i=1N(αi+μi)2s.t.∑i=1Nαiyi=02Cξi−αi−μi=0αi⩾0,μi⩾0,ξi⩾0,i=1,2,⋯,N

习题7.4 ​

  证明内积的正整数幂函数:$$K(x,z)=(x \bullet z)^p$$是正定核函数,这里p是正整数,x,z∈Rn。

解答:

解答思路:

  1. 写出正定核函数的判定依据
  2. 使用数学归纳法,证明
  3. 当p=1时,根据定理7.5,证明K(x,z)=x∙z是正定核函数
  4. 假设当p=k且k>1时,K(x,z)=(x∙z)k是正定核函数
  5. 证明当p=k+1时,K(x,z)=(x∙z)k+1是正定核函数

解答步骤:

第1步:列出正定核函数的判定依据

根据书中第7章的定理7.5(正定核的充要条件):

定理7.5(正定核的充要条件) 设K:X×X→R是对称函数,则K(x,z)为正定核函数的充要条件是对任意xi∈X,i=1,2,⋯,m,K(x,z)对应的Gram矩阵:

K=[K(xi,xj)]m×m

是半正定矩阵。

第2步:使用数学归纳法,证明K(x,z)=(x∙z)p是正定核函数

  1. 当p=1时,K(x,z)=x∙z,对任意c1,c2,⋯,cn∈R,有
∑i,j=1ncicjK(xi,xj)=∑i,j=1ncicj(xi∙xj)=(∑i=1mcixi)∙(∑j=1mcjxj)=‖(∑i=1mcixi)‖2⩾0

可得,当p=1时,K(x,z)=x∙z对应的Gram矩阵是半正定的,根据定理7.5,可知K(x,z)=x∙z是正定核函数。

  1. 假设p=k且k是大于1的正整数时,K(x,z)=(x∙z)k是正定核函数

根据书中第7章的定义7.6的(核函数):

定义7.6(核函数) 设X是输入空间(欧式空间Rn的子集或离散集合),又设H为特征空间(希尔伯特空间),如果存在一个从X到H的映射

ϕ(x):X→H

使得对所有x,z∈X,函数K(x,z)满足条件

K(x,z)=ϕ(x)∙ϕ(z)

则称K(x,z)为核函数,ϕ(x)为映射函数,式中ϕ(x)∙ϕ(z)为ϕ(x)和ϕ(z)的内积。

故存在一个输入空间为Rn,Rn到H的映射

ϕ(x):Rn→H

使得对所有x,z∈Rn,函数K(x,z)=(x∙z)k满足条件

K(x,z)=ϕ(x)∙ϕ(z)

可假设ϕ(x)=(f1(x),f2(x),⋯,fm(x))T,其中x=(x(1),x(2),⋯,x(n))T

  1. 当p=k+1时
K(x,z)=(x∙z)k+1=(x∙z)k(x∙z)=(ϕ(x)∙ϕ(z))(x∙z)=(f1(x)f1(z)+f2(x)f2(z)+⋯+fm(x)fm(z))(x(1)z(1)+x(2)z(2)+⋯+x(n)z(n))=f1(x)f1(z)(x(1)z(1)+x(2)z(2)+⋯+x(n)z(n))+f2(x)f2(z)(x(1)z(1)+x(2)z(2)+⋯+x(n)z(n))+⋯+fm(x)fm(z)(x(1)z(1)+x(2)z(2)+⋯+x(n)z(n))=(f1(x)x(1))(f1(z)z(1))+(f1(x)x(2))(f1(z)z(2))+⋯+(f1(x)x(n))(f1(z)z(n))+(f2(x)x(1))(f2(z)z(1))+(f2(x)x(2))(f2(z)z(2))+⋯+(f2(x)x(n))(f2(z)z(n))+⋯+(fm(x)x(1))(fm(z)z(1))+(fm(x)x(2))(fm(z)z(2))+⋯+(fm(x)x(n))(fm(z)z(n))

  可得

ϕ′(x)=(f1(x)x(1),f1(x)x(2),⋯,f1(x)x(n),f2(x)x(1),f2(x)x(2),⋯,f2(x)x(n),fm(x)x(1),⋯,fm(x)x(n))T

  故存在从Rn到希尔伯特空间H的映射ϕ′(x),使得

K(x,z)=(x∙z)k+1=ϕ′(x)∙ϕ′(z)

  根据《矩阵分析》书中定理7.5.3:

7.5.3定理 如果A,B∈Mn是半正定矩阵,则A∙B也是半正定矩阵,此外如果A和B都是正定矩阵,则A∙B也是正定矩阵。
其中,A∙B称为A和B的Hadamard乘积。

  由根据书中定理7.5,可得K(x,z)=(x∙z)k+1是正定核函数。

  根据数学归纳法可得:
  当p是正整数,x,z∈Rn时,内积的正整数幂函数:$$K(x,z)=(x \bullet z)^p$$是正定核函数。

参考文献 ​

【1】Roger A.Horn, Charles R.Johnson, 杨奇(译). 矩阵分析[M]. 2005(1):324