支持向量机SM

支持向量机SVM

一.广义线性判别函数(本篇博文写的是非线性分类器)

1.非线性分类器

1.决策规则:

如果x<b或者x>a,则x属于 w 1 w_1 w1类;如果b<x<a,则x属于 w 2 w_2 w2类。

2.二次判别函数
g ( x ) = c 0 + c 1 x + c 2 x 2 g(x)=c_0+c_1x+c_2x^2 g(x)=c0+c1x+c2x2

如果适当选择x→y的映射,则可以吧二次函数化为y的线性函数

2.广义线性判别函数:

g ( x ) = a T y g(x)=\bf{a^Ty} g(x)=aTy

式中 y = [ y 1 y 2 y 3 ] , a = [ a 1 a 2 a 3 ] = [ c 0 c 1 c 2 ] y=\begin{bmatrix}y_1 \\y_2\\y_3\end{bmatrix},a=\begin{bmatrix}a_1 \\a_2\\a_3\end{bmatrix}=\begin{bmatrix}c_0 \\c_1\\c_2\end{bmatrix} y= y1y2y3 ,a= a1a2a3 = c0c1c2

(1) a T y \bf{a^Ty} aTy

1.广义线性判别函数, a \bf{a} a叫做广义权向量

2.不是x的线性函数,但是是y的线性函数。

  1. a T y = 0 \bf{a_Ty}=0 aTy=0在Y 空间确定了一个通过原点的超平面 ,这样就可以利用线性判别函数的简单性来解决复杂的问题。
(2)问题

维数大大增加,这将使问题很快陷入所谓的"维数灾难 "。

空间维数将是 N = n ( n + 3 ) / 2 N=n(n+3)/2 N=n(n+3)/2

(3)解决办法:核函数

特征进行变换,通过在新特征空间里求线性分类器来实现原特征空间里非线性分类器。

1.对特征x进行非线性变换 ,记新特征为 z = φ ( x ) z=\varphi(x) z=φ(x),则新特征空间里构造的支持向量机的决策函数发生变化。

2.无论变换的具体形式如何,变换对支持向量机的影响是把两个样本在原特征空间中的内积 ( x i , x j ) (x_i,x_j) (xi,xj)变成了在特征空间中的内积 ( φ ( x i ) , φ ( x j ) ) (\varphi(x_i),\varphi(x_j)) (φ(xi),φ(xj)) 。新空间中的内积也是原特征的函数,可以记作

3.核函数
K ( x i , x j ) = ( φ ( x i ) ⋅ φ ( x j ) ) K(x_i,x_j)=(\varphi(x_i)\cdot\varphi(x_j)) K(xi,xj)=(φ(xi)⋅φ(xj))

问题一:映射到三次多项式空间的维度是如何计算出来的?(这个主包也没有仔细看,反正主包不会,有没有人给我讲讲)

二.核函数与支持向量机

1.核函数

K ( x i , x j ) = ( φ ( x i ) ⋅ φ ( x j ) ) K(x_i,x_j)=(\varphi(x_i)\cdot\varphi(x_j)) K(xi,xj)=(φ(xi)⋅φ(xj))

新空间的内积也是原特征的函数。

物理意义:两个样本在高维特征空间中的相似度

条件:

(1)需要满足Mercer条件,这个条件主包就不在这里写了,自己看模式识别教材P141页,还有放松条件,是满足条件的正定核,自己看书。
(2)对于满足正定条件的核函数,肯定存在一个从X空间到内积空间H的变换,这样构成的空间是在泛函定义的所谓的可再生希尔伯特空间RKHS。

1)核矩阵

核矩阵

给定 N 个样本 X = { x 1 , . . . , x N } X=\{x_1,...,x_N\} X={x1,...,xN}核矩阵 K K K为
K = [ K ( x 1 , x 1 ) . . . K ( x 1 , x N ) . . . . . . K ( x N , x 1 ) . . . K ( x N , x N ) ] K=\begin{bmatrix}K(x_1,x_1)&...&K(x_1,x_N) \\...&&...\\K(x_N,x_1)&...&K(x_N,x_N)\end{bmatrix} K= K(x1,x1)...K(xN,x1)......K(x1,xN)...K(xN,xN)

是特征空间中样本的相对位置关系网

2)差别

线性支持向量机 与通过内积实现的非线性支持向量机 的差别:原来的内积运算 ( x i ⋅ x j ) (x_i\cdot x_j) (xi⋅xj)变成了核函数 K ( x i , x j ) = ( φ ( x i ) ⋅ φ ( x j ) ) K(x_i,x_j)=(\varphi(x_i)\cdot\varphi(x_j)) K(xi,xj)=(φ(xi)⋅φ(xj))

3)优点

1.不论 φ ( x ) \varphi(x) φ(x)所生成的变换空间维数有多高,这个空间里的线性支持向量机求解都可以在原空间中通过核函数进行,这样就避免了高维空间里的计算 。而且计算核函数的复杂度与计算内积并没有实质性的增加。

2.只要知道了核函数,实际上甚至没有必要知道 φ ( x ) \varphi(x) φ(x)的实际形式。

3.如果通过设计非线性变换 来求解非线性的支持向量机 ,能直接设计核函数而不用设计变换 φ ( x ) \varphi(x) φ(x)

4.支持向量机有唯一的最优解,但是多层感知机不一定有唯一最优解,而且问题的计算复杂度是由样本数目决定的,计算复杂度不取决于样本的特征维数和所采用的核函数形式。

4)在计算得到核矩阵后,是否直接将核矩阵中的向量作为原特征向量的高维映射进行接下来的运算核特征处理?

1.在计算得到核矩阵后,不能直接将核矩阵的行/列向量视为原始特征向量的高维映射进行后续运算。核矩阵提供的是样本在高维特征空间中的相似度关系,而非显式的特征表示。

2.

3.核方法通过重写算法 ,使得所有运算仅仅依赖内积 K ( x i , x j ) K(x_i,x_j) K(xi,xj),无需显式 φ ( x ) \varphi(x) φ(x)。

5)新样本处理方法

(1)对于新样本 x n e w x_{new} xnew,通过核函数计算其与训练样本的关系
K n e w = [ K ( x 1 , x n e w , . . . , K ( x N , x n e w ) ) ] T K_{new}=[K(x_1,x_{new},...,K(x_N,x_{new}))]^T Knew=[K(x1,xnew,...,K(xN,xnew))]T

再结合模型参数计算投影。

(2)在降维技术中,投影后得到的低维向量是原始样本的派生特征
⋅ \cdot ⋅投影特征虽然不再是原始特征,但承载了原始数据结构的结构信息 ,其意义取决于降维方法(线性降维(原始特征的线性重组),非线性降维(原始特征在高维空间结构的低维映射),监督降维)。
⋅ \cdot ⋅低维投影z的本质物理意义:通过全局关系网反推出的绝对坐标。

2.常用核函数形式

采用不同的核函数形式就得到不同形式的非线性支持向量机

1)多项式核函数

K ( x , x ′ ) = ( ( x ⋅ x ′ ) + 1 ) q K(x,x')=((x\cdot x')+1)^q K(x,x′)=((x⋅x′)+1)q

采用这种核函数的支持向量机实现的是q阶的多项式的判别函数。

2)径向基(RBF)核函数

K ( x , x ′ ) = e x p ( − ∣ ∣ x − x ′ ∣ ∣ 2 σ 2 ) K(x,x')={exp(- \frac{||x-x'||^2}{ \sigma^2}}) K(x,x′)=exp(−σ2∣∣x−x′∣∣2)

采用它的支持向量机实现与径向基网络形式相同的决策函数。

(1)采用径向基核函数时,支持向量机能够实现一个径向基函数神经网络,但是二者有很大不同。

(2)径向基函数神经网络 通常需要靠启发式的经验或规则 来选择径向基的个数、每个径向基的中心位置、径向基函数的宽度,只有权系数是通过学习算法得到的。

启发式经验或规则指的是通过数据特性、统计规律或领域知识而非严格数学优化来确定网络结构参数的方法

(3)在支持向量机中,每一个支持向量构成一个径向基函数的中心,其位置、宽度、个数以及连接权值都是可以通过训练过程确定的。

3)Sigmoid函数

K ( x , x ′ ) = t a n h ( v ( x ⋅ x ′ ) + c ) K(x,x')=tanh(v(x \cdot x')+c) K(x,x′)=tanh(v(x⋅x′)+c)

(1)采用这种核函数的支持向量机在 v v v和 c c c满足一定取值条件的情况下等价于包含一个隐层的多层感知器神经网络。

(2)采用Sigmoid核函数的支持向量机,实现的是一个三层神经网络,隐层节点个数就是支持向量的个数。所以支持向量机等价地实现了对神经网络节点数目地自动选择

3.核函数及其参数的选择

1)核函数选择

1.当核函数选为线性内积时就是线性支持向量机。

2.核函数需要针对具体问题来具体选择,很难有一个一般性的准则。

2)参数

1.多项式函数------多项式核地阶数q

2.RBF核函数------核函数地宽度

3.Sigmoid核函数------参数是v和c

3)基本经验

首先尝试简单的选择,例如首先尝试线性核,当结果不满意时才考虑非线性核;如果选择RBF核函数,则首先应该选择用宽度较大地核,即 σ \sigma σ比较大,宽度越大越接近线性,然后再尝试减小宽度,增加非线性程度。

4.核函数与相似性度量(决策过程)

1.基本思想:首先通过非线性变换将输入空间变换到一个高维空间变换到一个高维空间,然后在这个新空间中求最有分类面即最大间隔分类面,而这种非线性变换时通过定义适当的内几何函数实现的。

2.支持向量机地决策过程 :可以看作是相似性比较过程。

(1)首先 输入样本与一系列模板样本进行相似性比较,模板样本 就是训练过程中决定的支持向量 ,采用的相似性度量 就是核函数

(2)样本与各支持向量比较后的得分进行加权求和,权值就是训练时得到的支持向量系数 α \alpha α与类别标号的乘积。

3.采用不同的核函数,可以看作是选择不同的相似性度量,线性支持向量机就是采用欧氏空间中的内积作为相似性度量。

4.当选用新的核函数或自己定义的核函数时,需要考虑所定义的核函数是否满足Mercer条件。如果不满足,可能导致支持向量机的目标函数不再是凸函数。

三.注意事项(时刻补充)

1.SVM对特征向量尺度敏感。

四.多类支持向量机

1.两种做法

(1)用多个两类分类器实现多累分类(常用做法)

(2)直接设计多类SVM分类器,称作多类支持向量机(multicategory SVM)

2.正则化表示支持向量机

(1)设有训练集样本 { ( x i , y i ) , i = 1 , . . . , } , x i ∈ R d \{(x_i,y_i),i=1,...,\},x_i \in R^d {(xi,yi),i=1,...,},xi∈Rd是样本的特征, y i = { 1 , − 1 } y_i=\{1,-1\} yi={1,−1}是样本的类别符号。带球函数 f ( x ) = h ( x ) + b , h ∈ H k , H k 是 f(x)=h(x)+b,h \in H_k,H_k是 f(x)=h(x)+b,h∈Hk,Hk是由和函数K定义的可再生希尔伯特空间。

(2)决策规则 是给 g ( x ) = s g n ( f ( x ) ) g(x)=sgn(f(x)) g(x)=sgn(f(x))

支持向量机求解的是这样的 f f f,它最小化以下的目标函数
1 n ( ∑ i = 1 n 1 − y i f ( x i ) ) + + λ ∣ ∣ h ∣ ∣ H K 2 \frac{1}{n}(\sum_{i=1}^{n}{1-y_if(x_i)})++\lambda||h||{H^K}^{2} n1(i=1∑n1−yif(xi))++λ∣∣h∣∣HK2

其中第一项是支持向量机原来的目标函数中的松弛因子项 ,第二项是对函数复杂性的惩罚。
λ \lambda λ相当于C,它调节在函数复杂性和训练样本上的分类精度之间的平衡。

3. k k k类问题

如果样本的类别符号 y y y和待求函数 f ( x ) f(x) f(x)都从标量变为向量,则上述表述就可以用于多类分类问题。

(1)对于 k k k类问题, y i y_i yi是一个 k k k维向量,如果样本 x i x_i xi属于第 j j j类,则 y i y_i yi的第 j j j个分量为1,其余分量为 − 1 k − 1 -\frac{1}{k-1} −k−11,这样, y i y_i yi的各分量总和为0。

(2)待求函数为 f ( x ) = ( f i ( x ) , . . . , f k ( x ) ) f(x)=(f_i(x),...,f_k(x)) f(x)=(fi(x),...,fk(x)),它的各分量之和须为0,即 ∑ j = 1 k f j ( x ) = 0 \sum_{j=1}^kf_j(x)=0 ∑j=1kfj(x)=0,且每一个分量都定义在核函数可再生希尔伯特空间中。
f j ( x ) = h j ( x ) + b j , h j ∈ H k f_j(x)=h_j(x)+b_j,h_j \in H_k fj(x)=hj(x)+bj,hj∈Hk

把多个类别编码成这样的向量标签后,多类支持向量机就是求 f ( x ) = ( f 1 ( x ) , . . . , f k ( x ) ) f(x)=(f_1(x),...,f_k(x)) f(x)=(f1(x),...,fk(x)),使下列目标函数 达到最小
1 n ∑ i = 1 n L ( y i ) ⋅ ( f ( x i ) − y i ) + + λ 2 ∑ j = 1 k ∣ ∣ h j ∣ ∣ H k 2 \frac{1}{n} \sum_{i=1}^{n}L(y_i) \cdot (f(x_i)-y_i)++\frac{\lambda}{2}\sum{j=1}^k||h_j||^2_{H_k} n1i=1∑nL(yi)⋅(f(xi)−yi)++2λj=1∑k∣∣hj∣∣Hk2

其中, L ( y i ) L(y_i) L(yi)是损失矩阵 C C C与样本类别 y i y_i yi相对的行向量。损失矩阵C是一个k*k的矩阵,它的对角线上是0,其余元素均为1,例如k=3情况下损失函数矩阵是
C = [ 0 1 1 1 0 1 1 1 0 ] C=\begin{bmatrix}0&1&1\\1&0&1\\1&1&0\end{bmatrix} C= 011101110

得到函数 f ( x ) f(x) f(x)后,类别决策规则是 g ( x ) = a r g m a x f j ( x ) g(x)=arg max f_j(x) g(x)=argmaxfj(x),即决策为 f ( x ) f(x) f(x)为各分量中取值最大的分量对应的类别。

三.总结

支持向量机(SVM)是一种强大的监督学习算法,广泛应用于分类和回归任务。SVM的核心思想是通过在高维特征空间中找到一个最优超平面,将不同类别的数据分开,并最大化两类数据点之间的间隔。最优超平面由支持向量决定,支持向量是那些位于决策边界附近的样本,它们对分类结果起到了决定性作用。

然而,SVM在面对非线性可分的数据时遇到挑战。为了解决这一问题,核函数(Kernel)技术应运而生。核函数通过将原始数据映射到高维空间,使得在高维空间中,数据可以变得线性可分。核函数的引入使得我们可以避免显式计算高维映射,而是通过核技巧(Kernel Trick)计算数据在高维空间中的内积,从而高效地解决非线性分类问题。

常用的核函数包括线性核、多项式核和径向基函数(RBF)核等。通过选择合适的核函数,SVM能够处理各种复杂的非线性分类任务,并保持良好的泛化能力。核SVM的优点在于它不仅能够处理高维数据,还能够通过核函数在复杂的数据集上实现高效的分类。

总体而言,SVM和核函数的结合,使得这一算法在面对各种类型的分类问题时,表现出卓越的性能和灵活性。