【现代信号处理】08 - Kernal Method

Kernal Method

1. 问题引入

  我们这个部分要研究的是信号分类问题。

  有这样的一组数据

( x 1 , y 1 ) , . . . , ( x n , y n ) x k ∈ R n , y k ∈ { − 1 , 1 } (x_1,y_1),...,(x_n,y_n) \\ x_k \in R^n, y_k \in \{-1,1 \} \\ (x1,y1),...,(xn,yn)xkRn,yk{1,1}

  x是实数,而y只有1和-1两种情况。实际上这些数据可以看做是训练集。我们希望通过这些数据,找到x和y的依赖关系。从而判断,x是什么情况的时候y=1。以及x是什么情况的时候y=-1

( x , y ) , y = f ( x ) m i n ∑ k = 1 n ( y k − f ( x k ) ) 2 ⇒ m i n ∑ k = 1 n ( y k − ω T x k ) 2 (x,y), y= f(x) \\ min \sum_{k=1}^n(y_k - f(x_k))^2 \Rightarrow min \sum_{k=1}^n(y_k - \omega^Tx_k)^2 (x,y),y=f(x)mink=1n(ykf(xk))2mink=1n(ykωTxk)2

  然后,当来了一个新的x的时候,我们要预测他对应的y是什么。这与前面的预测问题是一样的。也就是,我们希望找到x和y之间的最小关系,使得我们的估计误差最小。

  如果我们限定这个问题是线性的关系,那么这就是个最小二乘问题。

  但是,如果我们使用最小二乘的方法来拟合模型,是非常不合适的。因为y只有两个值。因此,下面我们介绍一些求解的思路

2. 分类问题求解思路

  我们假设问题是这样的,有一些红色的点,和一些黄色的点,红色的点对应y=-1,而白色的点对应于y=1,然后我们需要判断新来的一个数据点是属于哪一类。

在这里插入图片描述

2.1 朴素求解方法

  我们最简单的思路是在两类数据中间画一条线,然后把信号分开,我们怎么画这条线呢?

在这里插入图片描述

  我们有个非常朴素的方法,就是在红色的点中找一个非常有代表性的点,叫做X+,而黄色的点中找到一个非常有代表性的点叫做X-。我们把这个两个点进行连接,会得到一个矢量,我们找到这个连线的中点Xm。假设新的数据点是x,那我们只要计算向量XmX与X+X-的内积,如果内积的符号是+1,那么说明新来的x对应的y是1,如果内积的符号是-1,对应的y就是-1。

X + , X − ⇒ X + − X − ⇒ 1 2 ( X + − X − ) = X m ⇒ X − X m X_+,X_- \Rightarrow X_+ -X_- \Rightarrow \frac{1}{2}(X_+ -X_-) = X_m \Rightarrow X- X_m X+,XX+X21(X+X)=XmXXm

s g n < X − X m , X + − X − > = { 1 y=1  − 1 y=-1  sgn<X-X_m,X_+-X_-> = \begin{cases} 1 &\text{y=1 } \\ -1 &\text{y=-1 } \end{cases} sgn<XXm,X+X>={11y=1 y=-1 

  我们要选择的这群数据的平均位置作为代表性的点

X + = 1 m + ∑ y k = 1 X k X − = 1 m − ∑ y k = − 1 X k X_+ = \frac{1}{m_+}\sum_{y_k=1}X_k \\ X_- = \frac{1}{m_-}\sum_{y_k=-1}X_k X+=m+1yk=1XkX=m1yk=1Xk

  我们计算一下这个内积

< X − X m , X + − X − > = < X − 1 2 ( X + + X − ) , X + − X − > = < X , X + − X − > − 1 2 < X + − X − , X + − X − > = ∑ k = 1 n α k < X , X k > − 1 2 ( ∣ ∣ X + ∣ ∣ 2 − ∣ ∣ X − ∣ ∣ 2 ) <X - X_m,X_+ - X_-> = <X - \frac{1}{2}(X_+ + X_-),X_+ - X_-> \\ =<X,X_+ - X_->- \frac{1}{2} <X_+ - X_-,X_+ - X_-> \\ = \sum_{k=1}^n \alpha_k<X,X_k> - \frac{1}{2}(||X_+||^2 - ||X_-||^2) <XXm,X+X>=<X21(X++X),X+X>=<X,X+X>21<X+X,X+X>=k=1nαk<X,Xk>21(X+2X2)

α k = { 1 m + y=1  − 1 m − y=-1  \alpha_k = \begin{cases} \frac{1}{m_+}&\text{y=1 } \\ -\frac{1}{m_-} &\text{y=-1 } \end{cases} αk={m+1m1y=1 y=-1 

  后面就是一个常数,我们更应该关注前面的部分

< X − X m , X + − X − > = ∑ k = 1 n α k X k T X + b <X - X_m,X_+ - X_-> = \sum_{k=1}^n \alpha_k X_k^TX +b <XXm,X+X>=k=1nαkXkTX+b

  我们发现得到的东西是一个超平面,如果把x看做自变量的话。如果这个值是0,就在平面上,大于0在平面的一侧,小于0,在平面的另外一侧。

  对于高维空间,要画的不是线,而是要做超平面。但是必须要有一个前提,就是这个分类问题是个线性可分的问题。

2.2 支持向量机 SVM

2.2.1 朴素法存在的问题

  其实我们对这个问题并不满意,关键在于,我们代表点选取的方法有问题,因为代表点是在数据堆里面的,而不是在边缘上。实际上,做数据分类,更加需要关注的是边缘点,我们应该做一个平面,让两堆点靠平面最近的点,到平面的距离最远。

  因为在数据分类的时候,我们需要保留一定的裕度,也就是偏离数据集比较远的点也能正常分类。

在这里插入图片描述

  比如上面两个分割平面,第二个图明显分类是错误的。因此平面划分的错误,会产生过拟合的问题。我们希望我们的分割平面margin足够大,overfit足够小。

  下面我们来做这个平面。我们需要针对点到平面的距离进行优化。

2.2.2 计算点到平面的距离

  我们首先解决点到平面的距离怎么计算的问题。超平面定义如下

ω T x + b = 0 ⇔ ∑ k = 1 n ω k x k + b = 0 \omega^T x + b = 0 \Leftrightarrow \sum_{k=1}^n \omega_k x_k +b = 0 ωTx+b=0k=1nωkxk+b=0

  其中ω是平面的法向量

  我们假设要计算x0到平面的距离,就要在平面上找一个投影点x1,x0与x1之间的距离就是点到平面的距离。

x 0 , x 1 ⇒ x 1 = P r o j ω T x + b = 0 x 0 x_0,x_1 \Rightarrow x_1 = Proj_{\omega^Tx+b=0}x_0 \\ x0,x1x1=ProjωTx+b=0x0
  把这个矢量表示出来,并求这个矢量的长度
x 0 x 1 = x 0 − x 1 x_0x_1 = x_0 - x_1 x0x1=x0x1

  构造一下

∣ ω T ( x 0 − x 1 ) ∣ = ∣ ω T x 0 − ω T x 1 ∣ = ∣ b + ω T x 1 ∣ |\omega^T(x_0 - x_1)| = |\omega^T x_0 - \omega^T x_1| = |b+\omega^T x_1| ωT(x0x1)=ωTx0ωTx1=b+ωTx1

  另外,法向量一定是与x0x1这个向量平行的,因此他们的乘积可以表示为

∣ ω T ( x 0 − x 1 ) ∣ = ∣ ∣ ω ∣ ∣ ∗ ∣ ∣ x 0 − x 1 ∣ ∣ |\omega^T(x_0 - x_1)| = ||\omega|| * ||x_0 - x_1|| ωT(x0x1)=ωx0x1

  两个式子相等

∣ ∣ ω ∣ ∣ ∗ ∣ ∣ x 0 − x 1 ∣ ∣ = ∣ b + ω T x 1 ∣ ∣ ∣ x 0 − x 1 ∣ ∣ = ∣ b + ω T x 1 ∣ ∣ ∣ ω ∣ ∣ ||\omega|| * ||x_0 - x_1|| = |b+\omega^T x_1| \\ ||x_0 - x_1|| = \frac{|b+\omega^T x_1|}{||\omega|| } ωx0x1=b+ωTx1x0x1=ωb+ωTx1

2.2.3 超平面优化

  现在知道了如何求点到平面的距离之后,我们就可以进行平面优化了

  优化目标
m a x ∣ ω T x 0 + b ∣ ∣ ∣ ω ∣ ∣ max \frac{|\omega^Tx_0+b|}{||\omega||} maxωωTx0+b

  分子部分其实很麻烦,我们想做优化,希望上面能够进行放缩,我们假设我们的数据点有这样的特征

{ ω T x k + b ≤ − 1 y k = − 1 ω T x k + b ≥ 1 y k = 1 \begin{cases} \omega^Tx_k+b \leq -1 & y_k = -1 \\ \omega^Tx_k+b \geq 1 & y_k=1 \end{cases} {ωTxk+b1ωTxk+b1yk=1yk=1

  这样的话,其实这个数据的边缘点到超平面的距离就是1和-1

在这里插入图片描述

  这样的话,分子就是1,优化条件变成了

m a x 1 ∣ ∣ ω ∣ ∣ max \frac{1}{||\omega||} maxω1

  有这样的约束条件成立

y k ∗ ( ω T x k + b ) ≥ 1 1 − y k ∗ ( ω T x k + b ) ≤ 0 y_k*(\omega^Tx_k+b) \geq 1 \\ 1- y_k*(\omega^Tx_k+b) \leq 0 yk(ωTxk+b)11yk(ωTxk+b)0

  解释一下,后面小于1的时候,y是-1,后面大于1的时候,y是+1,所以这个条件恒大于1,是个约束条件。

  我们可以把优化目标进行变形

m a x 1 ∣ ∣ ω ∣ ∣ ⇔ m i n ∣ ∣ ω ∣ ∣ ⇔ 1 2 ∣ ∣ ω ∣ ∣ 2 max \frac{1}{||\omega||} \Leftrightarrow min ||\omega|| \Leftrightarrow \frac{1}{2} ||\omega||^2 maxω1minω21ω2

  约束条件

1 − y k ∗ ( ω T x k + b ) ≤ 0 1- y_k*(\omega^Tx_k+b) \leq 0 1yk(ωTxk+b)0
  条件极值问题就用拉格朗日数乘法

L ( ω , α , b ) = 1 2 ω T ω + ∑ k = 1 n α k ( 1 − y k ∗ ( ω T x k + b ) ) L(\omega,\alpha,b) = \frac{1}{2} \omega^T\omega + \sum_{k=1}^n \alpha_k(1- y_k*(\omega^Tx_k+b)) L(ω,α,b)=21ωTω+k=1nαk(1yk(ωTxk+b))

  这个条件极值就是有名的支持向量机

Support Vector Machine(SVM) \text{Support Vector Machine(SVM)} Support Vector Machine(SVM)

  求梯度,这个目标函数是α,ω和b的函数,就相当于有三个约束条件
∇ ω L ( ω , α , b ) = ω − ∑ k = 1 n α k y k x k = 0 ω = ∑ k = 1 n α k y k x k ( i ) \nabla_\omega L(\omega,\alpha,b) = \omega - \sum_{k=1}^n \alpha_k y_k x_k = 0 \\ \omega = \sum_{k=1}^n \alpha_k y_k x_k \quad\quad(i) ωL(ω,α,b)=ωk=1nαkykxk=0ω=k=1nαkykxk(i)

∇ α L ( ω , α , b ) = 1 − y k ∗ ( ω T x k + b ) = 0 ( i i ) \nabla_\alpha L(\omega,\alpha,b) = 1- y_k*(\omega^Tx_k+b) = 0 \quad\quad(ii)\\ αL(ω,α,b)=1yk(ωTxk+b)=0(ii)
∇ b L ( ω , α , b ) = ∑ k = 1 n α k y k = 0 ( i i i ) \nabla_b L(\omega,\alpha,b) = \sum_{k=1}^n\alpha_k y_k = 0 \quad\quad(iii)\\ bL(ω,α,b)=k=1nαkyk=0(iii)

  求极值

1 2 ω T ω = 1 2 ( ∑ i = 1 n α i y i x i ) T ( ∑ j = 1 n α j y j x j ) = 1 2 ∑ i ∑ j α i α j y i y j x i T x j ( i v ) \frac{1}{2}\omega^T\omega = \frac{1}{2}(\sum_{i=1}^n \alpha_i y_i x_i)^T(\sum_{j=1}^n \alpha_j y_j x_j) \\ = \frac{1}{2} \sum_i \sum_j \alpha_i \alpha_j y_i y_j x_i^T x_j \quad\quad(iv) 21ωTω=21(i=1nαiyixi)T(j=1nαjyjxj)=21ijαiαjyiyjxiTxj(iv)

  假设使用量各种解法求出了最优解

ω o p t = ∑ k = 1 n α { o p t , k } y k x k \omega_{opt} = \sum_{k=1}^n \alpha_{\{opt,k\}} y_k x_k ωopt=k=1nα{opt,k}ykxk

s g n ( ω o p t T x + b ) = s g n ( ∑ k = 1 n α { o p t , k } y k x k T x + b ) sgn(\omega_{opt}^Tx +b) = sgn( \sum_{k=1}^n \alpha_{\{opt,k\}} y_k x_k^Tx+b) sgn(ωoptTx+b)=sgn(k=1nα{opt,k}ykxkTx+b)

3. Kernal

3.1 非线性分类问题

  在刚才我们提到的两种分类方法中,我们都有一个使用前提,就是数据必须是线性可分的。那就意味了,我们一定可以找到一条直线,或者找到一个超平面将数据分割开。但是现实中问题往往没有这么简单,我们可以看一个例子。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V16nV5sH-1631604240576)(59D11DE9B28C46798716372BC25062EF)]

  假设我们有如图所示的数据,我们希望对黄色数据和红色数据进行分类,我们是无法通过画线或者画超平面的方法将他们分开的。我们只能通过球或者圆的方式进行数据分类。这里面都有非线性的因素。

  我们假定数据是二维的,我们可以建立这样的方程

( x 1 , x 2 ) ∈ R 2 → x 1 2 + x 2 2 ≤ r (x_1,x_2) \in R^2 \rightarrow x_1^2 + x_2^2 \leq r (x1,x2)R2x12+x22r`
  圆内的就是黄色数据,圆外的就是红色数据。这是个非线性分类问题。我们有没有什么方法,能够把这个问题看做是线性的呢?事实上,我们可以把x1和x2看做是一个整体,而不是平方。

( x 1 , x 2 ) ∈ R 2 ⇒ ( y 1 , y 2 ) ∈ R 2 y 1 = x 1 2 , y 2 = x 2 2 y 1 + y 2 ≤ r (x_1,x_2) \in R^2 \Rightarrow (y_1,y_2) \in R^2 \\ y_1 = x_1^2,\quad y_2 = x_2^2 \\ y_1 +y_2 \leq r (x1,x2)R2(y1,y2)R2y1=x12,y2=x22y1+y2r
  经过这样的变换之后,我们又变成了研究线性问题。

  我们把问题变得稍微复杂一些,我们假设我们是以椭圆方程来进行数据分类的

( x − 2 2 y ) 2 + y 2 2 ≤ r x 2 − 2 x y + y 2 ≤ r (x-\frac{\sqrt2}{2}y)^2 + \frac{y^2}{2} \leq r \\ x^2 - \sqrt2xy + y^2 \leq r (x22 y)2+2y2rx22 xy+y2r

  我们如何把这个问题看做是个线性问题呢?

  我们依旧可以把非线性元素看做是一个整体

x 2 − 2 x y + y 2 ≤ r ( x 1 , x 2 ) ⇒ ( y 1 , y 2 , y 3 ) = ( x 1 2 , 2 x 1 x 2 , x 2 2 ) ∈ R 3 x^2 - \sqrt2xy + y^2 \leq r \\ (x_1,x_2) \Rightarrow (y_1,y_2,y_3) = (x_1^2,\sqrt2 x_1x_2,x_2^2) \in R^3 x22 xy+y2r(x1,x2)(y1,y2,y3)=(x12,2 x1x2,x22)R3

  这其实是一套完整的方法论。也就是我们本来有一个数据空间,然后,我们试图在现有的数据空间的基础上做一个提升,让数据进入一个新的空间,这个新的空间叫做特征空间,新空间能够吸收旧空间的特性,然后新空间是一个维度更高的空间,在这个空间里面,就没有非线性的因素存在了。

M e t h o d o l o g y : Data Space ⇒ Feature Space Methodology: \text{Data Space} \Rightarrow \text{Feature Space} Methodology:Data SpaceFeature Space

  所以,现在的问题其实发生了一些改变。我们本来要解决的,是一个分类问题,而现在,我们把分类问题推到了特征提取上。就像神经网络一样。我们知道,神经网络是一个全连接,能够构造任何一种分类器,但是知道深度学习之前,神经网络并没有得到广泛的关注。这其中的主要原因,就是神经网络虽然能够构造分类器,但是他需要输入的是特征。也就是把分类问题踢给了特征提取问题。而不论是模式识别还是机器学习,对特征的提取并不好用。而深度学习的高明之处在于,前面增加了若干个比如卷积层之类的东西,使得能够让计算机自己学习如何从数据中寻找特征,然后分类。机器学习中的特征提取方法,本质上是给人看的,而不是给机器看的。比如提取角点,那是人感觉角点有什么特性,然后定义特征,进行计算,但是机器不一定认为这个特征很好。要让机器觉得好,最好的方法就是让他从数据中自己进行寻找,但是找出来的特征人大概率是看不懂的。因此深度神经网络人看不懂是什么意思,但是效果就是好用。因此,提取特征是非常关键的问题。

3.2 核化 kernalization

  我们的问题其实仍然没有得到解决,这个时候,我们回到我们的问题上。我们发现,不管是在朴素分类方法,还是SVM分类方法中,都使用到了内积运算。我们从数据空间提升到特征空间的时候,有一点是不变的,就是只要是线性分类,即使是在新空间中,也要做内积。

x 1 , x 2 , . . . , x n L i f t i n g → ϕ ( x 1 ) , ϕ ( x 2 ) , . . . , ϕ ( x n ) s g n ( ∑ k = 1 n α k x k T x + b ) ⇒ s g n ( ∑ k = 1 n α k ϕ T ( x k ) ϕ ( x ) + b ) x_1,x_2,...,x_n \quad \underrightarrow{Lifting} \quad \phi(x_1),\phi(x_2),...,\phi(x_n) \\ sgn(\sum_{k=1}^n \alpha_k x_k^T x +b) \Rightarrow sgn(\sum_{k=1}^n \alpha_k \phi ^T(x_k) \phi(x) +b) x1,x2,...,xn Liftingϕ(x1),ϕ(x2),...,ϕ(xn)sgn(k=1nαkxkTx+b)sgn(k=1nαkϕT(xk)ϕ(x)+b)

  因此,其实我们并不需要关心新的空间长什么样子,我们只需要关心内积就行。这个内积就是我们的kernal。我们做如下定义

k ( x , y ) = < ϕ ( x ) , ϕ ( y ) > k(x,y) = <\phi(x),\phi(y)> k(x,y)=<ϕ(x),ϕ(y)>

  k(x,y)被称为核函数。

  现在,我们想通过椭圆的例子,看看我们的特征空间是怎么构造起来的,他又与内积之间是怎么联系起来的。假设我们有两个点(x1,x2)和(y1,y2)我们来看这两个点在数据空间和特征空间的内积是怎么样的

x 2 − 2 x y + y 2 ≤ r x^2 - \sqrt2xy + y^2 \leq r x22 xy+y2r

ϕ ( x 1 , x 2 ) = ( x 1 2 , 2 x 1 x 2 , x 2 2 ) < ϕ ( x 1 , x 2 ) , ϕ ( y 1 , y 2 ) > = ϕ T ( x 1 , x 2 ) ∗ ϕ ( y 1 , y 2 ) = x 1 2 y 1 2 + 2 x 1 x 2 y 1 y 2 + x 2 2 y 2 2 = ( x 1 y 1 + x 2 y 2 ) 2 = < ( x 1 , x 2 ) , ( y 1 , y 2 ) > 2 \phi(x_1,x_2) = (x_1^2,\sqrt{2}x_1 x_2,x_2^2) \\ <\phi(x_1,x_2) ,\phi(y_1,y_2)>=\phi^T(x_1,x_2) *\phi(y_1,y_2) = x_1^2y_1^2 +2 x_1x_2 y_1 y_2 + x_2^2 y_2^2 \\ =(x_1y_1 + x_2 y_2)^2 = <(x_1,x_2),(y_1,y_2)>^2 ϕ(x1,x2)=(x12,2 x1x2,x22)<ϕ(x1,x2),ϕ(y1,y2)>=ϕT(x1,x2)ϕ(y1,y2)=x12y12+2x1x2y1y2+x22y22=(x1y1+x2y2)2=<(x1,x2),(y1,y2)>2

  因此,我们需要定义的核就是

k ( ( x 1 , x 2 ) , ( y 1 , y 2 ) ) = < ( x 1 , x 2 ) , ( y 1 , y 2 ) > 2 k((x_1,x_2),(y_1,y_2)) = <(x_1,x_2),(y_1,y_2)>^2 k((x1,x2),(y1,y2))=<(x1,x2),(y1,y2)>2

k ( x , y ) = < ϕ ( x ) , ϕ ( y ) > k(x,y) = <\phi(x),\phi(y)> k(x,y)=<ϕ(x),ϕ(y)>

  有了这个核函数之后,其实我们就可以不去管,我们到底要建立一个怎么样的特征空间来描述数据了。事实上,这个例子只是个特例,我们能够建立新的特征空间去把他线性化。很多时候,我们并不能够找到这样的高维空间。但是只要我们选择了合适的核,我们就可以不关心特征空间建立这件事情了。

  这套方法出现在1970年左右。但是当时没有火爆,因为人们没有理解kernal tricks。就是我们对新空间可以完全不了解。

  现在,我们只需要计算低维空间的情况就可以了,然后把内积换到高维空间即可

3.3 核化需要关注的两个问题

3.3.1 如何选择kernal

  本来从数据空间提升到特征空间是件很复杂的事情,现在我们使用一个kernal就可以什么都不用关心了。那么我们究竟应该怎么样选择kernal呢?事实上,kernal的选择,对我们的工作具有重要影响

  这里介绍一些比较常用的核,第一个核是多项式核,第二个核叫做镜像机。

Polynomial Kernal : k ( x , y ) = < x , y > b Radial Basis Kernal ( G a u s s i a n ) : k ( x , y ) = e x p ( − ∣ ∣ x − y ∣ 2 ∣ 2 σ 2 ) \text{Polynomial Kernal}: k(x,y) = <x,y>^b \\ \text{Radial Basis Kernal}(Gaussian): k(x,y) = exp(-\frac{||x-y|^2|}{2\sigma^2}) Polynomial Kernal:k(x,y)=<x,y>bRadial Basis Kernal(Gaussian):k(x,y)=exp(2σ2xy2)

  这两种用的最多,尤其是第二个,可以通过调整σ来进行优化调整。我们并不知道提升空间与kernal的直接联系,我们寄希望于我们的kernal可以把我们所想象的空间涵盖进来即可。

3.3.2 kernalization的条件

  处理kernal的选择问题以外,我们还要关注一个问题,如果要把一个问题进行kernalization,其条件是什么?

  我们如果想对一个模型进行核化,我们要求,在这个模型中,所有对数据的依赖,都是通过内积产生的,并且这个内积,必须产生与数据空间,而不能是数据得到转置以后的空间。意思就是,如果数据是列向量,内积必须是这个列向量进行内积。而不能是这个数据矩阵转置了,然后数据变成了行向量,我们继续计算列向量的内积,这样就不是在数据空间内进行内积了。

3.4 kernalization的例子

  我们回顾一下我们以前学过的一些方法,思考一下那些可以进行核化。

3.4.1 线性回归

  首先是线性回归(Linear Regression),就是最小二乘(Least Square)

  我们假设有这样的模型

y ∈ R n , ω = R N Z = ( z 1 T . . . z n T ) , Z ∈ R n ∗ N Data Dimension:N Data Size:n y \in R^n , \omega = R^N\\ Z = \begin{pmatrix} z_1^T \\ ... \\ z_n^T \end{pmatrix}, Z\in R^{n*N} \\ \text{Data Dimension:N} \\ \text{Data Size:n} yRn,ω=RNZ=z1T...znT,ZRnNData Dimension:NData Size:n

  目标方程与拟合结果为

m i n ( y − Z ω ) T ( y − Z ω ) ⇒ ω = ( Z T Z ) − 1 Z T y min(y-Z\omega)^T(y-Z\omega) \\ \Rightarrow \omega = (Z^TZ)^{-1}Z^{T}y min(yZω)T(yZω)ω=(ZTZ)1ZTy

  这里需要注意一下,最小二乘的数据,其实都是行向量。回忆一下,如果我们要进行参数估计,我们会这样做

f ( x ) = ∑ k = 1 N ω k x k f(x) = \sum_{k=1}^N\omega_k x_k f(x)=k=1Nωkxk

  写成矩阵的形式就是

( f ( x 1 ) . . . f ( x n ) ) = ( x 1 1 . . . x N 1 . . . . . . . . . x 1 n . . . x N n ) ∗ ( ω 1 . . . ω n ) = ( z 1 T . . . z n T ) ∗ ( ω 1 . . . ω n ) = Z ∗ ω \begin{pmatrix} f(x_1) \\ ... \\ f(x_n) \end{pmatrix} = \begin{pmatrix} x_1^1 & ... & x_N^1 \\ ... &...&...\\ x_1^n&...&x_N^n \end{pmatrix}* \begin{pmatrix} \omega_1 \\ ... \\ \omega_n \end{pmatrix} \\ = \begin{pmatrix} z_1^T \\ ... \\ z_n^T \end{pmatrix}*\begin{pmatrix} \omega_1 \\ ... \\ \omega_n \end{pmatrix}=Z*\omega f(x1)...f(xn)=x11...x1n.........xN1...xNnω1...ωn=z1T...znTω1...ωn=Zω

  最小二乘的模型能够实现核化吗?我们来仔细看一下这个内积

Z T ∗ Z = ( z 1 , . . . , z n ) ∗ ( z 1 T . . . z n T ) = z 1 ∗ z 1 T + . . . + z n ∗ z n T Z^T*Z = (z_1,...,z_n)*\begin{pmatrix} z_1^T \\ ... \\ z_n^T \end{pmatrix} \\ = z_1*z_1^T +...+z_n*z_n^T ZTZ=(z1,...,zn)z1T...znT=z1z1T+...+znznT

  我们发现,得到的这个内积,并不是依赖于数据的内积的。只有写成下面的形式,才是依赖于数据的内积的,才能进行核化。

z i T z j = < z i , z j > z_i^Tz_j = < z_i, z_j> ziTzj=<zi,zj>

3.4.2 岭回归

  我们再看看岭回归(Ridge Regression)

m i n ( y − Z ω ) T ( y − Z ω ) + λ ω T ω ⇒ ω = ( Z T Z + λ I ) − 1 Z T y min(y- Z \omega)^T(y-Z\omega) + \lambda \omega^T \omega \\ \Rightarrow \omega = (Z^TZ +\lambda I)^{-1}Z^Ty min(yZω)T(yZω)+λωTωω=(ZTZ+λI)1ZTy

  那么,岭回归能够核化吗?

  事实上,岭回归得到的结果,可以做如下的变换

ω = ( Z T Z + λ I ) − 1 Z T y = Z T ( Z Z T + λ I ) − 1 \omega = (Z^TZ +\lambda I)^{-1}Z^Ty = Z^T(ZZ^T+\lambda I)^{-1} ω=(ZTZ+λI)1ZTy=ZT(ZZT+λI)1
y ^ = Z ω = Z Z T ( Z Z T + λ I ) − 1 \hat y=Z\omega = ZZ^T(ZZ^T+\lambda I)^{-1} y^=Zω=ZZT(ZZT+λI)1

  我们看到,岭回归的数据只依赖于内积。那么这个内积是数据空间的内积吗?

Z = ( z 1 T . . . z n T ) Z ∗ Z T = ( z 1 T . . . z n T ) ∗ ( z 1 , . . . , z n ) = z 1 T ∗ z 1 + . . . + z n T ∗ z n = < z 1 , z 1 > + . . . + < z n , z n > Z = \begin{pmatrix} z_1^T \\ ... \\ z_n^T \end{pmatrix} \\ Z*Z^T = \begin{pmatrix} z_1^T \\ ... \\ z_n^T \end{pmatrix}*(z_1,...,z_n)\\ = z_1^T*z_1 +...+z_n^T*z_n = <z_1,z_1> +...+<z_n,z_n> Z=z1T...znTZZT=z1T...znT(z1,...,zn)=z1Tz1+...+znTzn=<z1,z1>+...+<zn,zn>

  这个内积就是依赖于数据的内积了。因此岭回归是可以进行核化的

3.4.3 PCA与KPCA
3.4.2.1 PCA

  再来看看PCA

在这里插入图片描述

  PCA本质上是找一个轴,让数据在这个轴上具有最大的散布。

  我们假定拥有一组数据,这组数据已经做过了中心化,也就是均值为0

  这里也需要注意一下,与最小二乘回归那边不一样,PCA矩阵中的数据是列向量。因为是对每个列向量进行投影,找一个最大散布方向。

Z = ( z 1 , . . . , z n ) , E ( Z ) = 0 Z = (z_1,...,z_n),E(Z) = 0 Z=(z1,...,zn),E(Z)=0

  我们如何寻找最大的散布方向呢?实际上,就是我们让数据z在这个新轴的矢量上进行投影,然后让投影点的方差最大即可。

P r o j α Z ⇒ V a r ( P r o j α Z ) Proj_\alpha Z \Rightarrow Var(Proj_\alpha Z) ProjαZVar(ProjαZ)

  投影的表达式为

P r o j α Z = α ( α T α ) − 1 α T Z Proj_\alpha Z = \alpha(\alpha^T \alpha)^{-1}\alpha^T Z ProjαZ=α(αTα)1αTZ

  方差表达式为
E ∣ ∣ P r o j α Z ∣ ∣ 2 = E ( Z T α ( α T α ) − 1 α T Z ) = E ( ( α T Z ) T ∗ α T Z ) ∣ ∣ α ∣ ∣ 2 = E [ ( α T Z ) 2 ] ∣ ∣ α ∣ ∣ 2 = E [ ( α T Z ∣ ∣ α ∣ ∣ ) 2 ] E||Proj_\alpha Z||^2 = E(Z^T\alpha(\alpha^T \alpha)^{-1} \alpha^T Z) \\ = \frac{E((\alpha^T Z)^T*\alpha^T Z)}{||\alpha||^2} \\ = \frac{E[(\alpha^T Z)^2]}{||\alpha||^2} = E[(\frac{\alpha^T Z}{||\alpha||})^2] EProjαZ2=E(ZTα(αTα)1αTZ)=α2E((αTZ)TαTZ)=α2E[(αTZ)2]=E[(ααTZ)2]

  即求
m a x α E [ ( α T Z ∣ ∣ α ∣ ∣ ) 2 ] max_\alpha E[(\frac{\alpha^T Z}{||\alpha||})^2] maxαE[(ααTZ)2]

  这里有一个条件,就是α是方向矢量,因此模为1,因此可以把目标方程变为条件极值的形式

m a x α E [ ( α T Z ) 2 ] ,  s.t.  ∣ ∣ α ∣ ∣ 2 = 1 max_\alpha E[(\alpha^T Z)^2],\text{ s.t. } ||\alpha||^2 = 1 maxαE[(αTZ)2], s.t. α2=1

∇ α L ( α ) = ∇ α ( α T E ( Z Z T ) α ) + λ ( α T α − 1 ) ) \nabla_\alpha L(\alpha) = \nabla_\alpha(\alpha^T E(Z Z^T) \alpha ) +\lambda(\alpha^T \alpha-1)) αL(α)=α(αTE(ZZT)α)+λ(αTα1))
  令协方差矩阵等于RZ

R Z = E ( Z Z T ) = 1 n ∑ k = 1 n z k z k T R_Z = E(Z Z^T) = \frac{1}{n} \sum_{k=1}^n z_k z_k^T RZ=E(ZZT)=n1k=1nzkzkT

  因此求导以后的结果为

2 R Z α + 2 λ α = 0 ⇒ R α = λ α 2R_Z\alpha + 2\lambda \alpha = 0 \Rightarrow R\alpha = \lambda \alpha 2RZα+2λα=0Rα=λα
  可以看出来,这个方向矢量就是协方差矩阵的特征值。而且应该是最大的特征值

  因为我们的目标是要求
m a x α E [ ( α T Z ∣ ∣ α ∣ ∣ ) 2 ] = α T R Z α = λ max_\alpha E[(\frac{\alpha^T Z}{||\alpha||})^2] = \alpha^T R_Z \alpha = \lambda maxαE[(ααTZ)2]=αTRZα=λ

  当特征值最大的时候,达到最大目标函数。

3.4.2.2 KPCA

  下面我们想把PCA进行核化。

  首先,我们找到协方差矩阵

R Z = 1 n ∑ k = 1 n z k z k T R_Z = \frac{1}{n} \sum_{k=1}^n z_k z_k^T RZ=n1k=1nzkzkT

  我们把协方差矩阵映射到特征空间

C = R ϕ ( Z ) = 1 n ∑ k = 1 n ϕ ( z k ) ϕ T ( z k ) = 1 n ( ϕ ( z 1 ) . . . ϕ ( z n ) ) ∗ ( ϕ T ( z 1 ) . . . ϕ T ( z n ) ) C=R_{\phi_{(Z)}} = \frac{1}{n} \sum_{k=1}^n \phi(z_k) \phi^T(z_k) \\ = \frac{1}{n}\begin{pmatrix} \phi(z_1) & ... & \phi(z_n)\\ \end{pmatrix} * \begin{pmatrix} \phi^T(z_1) \\ ... \\ \phi^T(z_n)\\ \end{pmatrix} C=Rϕ(Z)=n1k=1nϕ(zk)ϕT(zk)=n1(ϕ(z1)...ϕ(zn))ϕT(z1)...ϕT(zn)

  令

X = ( ϕ ( z 1 ) . . . ϕ ( z n ) ) X T = ( ϕ T ( z 1 ) . . . ϕ T ( z n ) ) X = \begin{pmatrix} \phi(z_1) & ... & \phi(z_n)\\ \end{pmatrix} \\ X^T = \begin{pmatrix} \phi^T(z_1) \\ ... \\ \phi^T(z_n)\\ \end{pmatrix} X=(ϕ(z1)...ϕ(zn))XT=ϕT(z1)...ϕT(zn)

  则
n ∗ C = X ∗ X T n*C = X*X^T nC=XXT

  但是,核函数并不是这个样子的,核函数应该是内积的形式

K = X T ∗ X = ( ϕ T ( z 1 ) . . . ϕ T ( z n ) ) ∗ ( ϕ ( z 1 ) . . . ϕ ( z n ) ) = ( ϕ T ( z 1 ) ϕ ( z 1 ) . . . ϕ T ( z 1 ) ϕ ( z n ) . . . . . . . . . ϕ T ( z n ) ϕ ( z 1 ) . . . ϕ T ( z n ) ϕ ( z n ) ) = ( k ( z 1 , z 1 ) . . . k ( z 1 , z n ) . . . . . . . . . k ( z n , z 1 ) . . . k ( z n , z 1 ) ) K = X^T*X = \begin{pmatrix} \phi^T(z_1) \\ ... \\ \phi^T(z_n)\\ \end{pmatrix}* \begin{pmatrix} \phi(z_1) & ... & \phi(z_n)\\ \end{pmatrix} \\ = \begin{pmatrix} \phi^T(z_1)\phi(z_1) &... & \phi^T(z_1)\phi(z_n)\\ ... &...&...\\ \phi^T(z_n)\phi(z_1) &...& \phi^T(z_n)\phi(z_n)\\ \end{pmatrix} \\ = \begin{pmatrix} k(z_1,z_1)&... & k(z_1,z_n)\\ ... &...&...\\ k(z_n,z_1) & ... & k(z_n,z_1)\\ \end{pmatrix} K=XTX=ϕT(z1)...ϕT(zn)(ϕ(z1)...ϕ(zn))=ϕT(z1)ϕ(z1)...ϕT(zn)ϕ(z1).........ϕT(z1)ϕ(zn)...ϕT(zn)ϕ(zn)=k(z1,z1)...k(zn,z1).........k(z1,zn)...k(zn,z1)

C = K C \cancel=K C= K

  是不是就意味着PCA不能进行核化了呢?

  其实还是有办法的

( X T X ) ∗ α = λ ∗ α X ∗ ( X T X ) ∗ α = λ ∗ ( X ∗ α ) ( X ∗ X T ) X α = λ ∗ ( X ∗ α ) (X^TX)*\alpha = \lambda*\alpha X*(X^TX)*\alpha = \lambda*(X*\alpha) \\ (X*X^T)X \alpha = \lambda*(X*\alpha) (XTX)α=λαX(XTX)α=λ(Xα)(XXT)Xα=λ(Xα)

  我们发现,K矩阵与n*C矩阵相比,特征值是一样的,只是特征向量发生了变换

v ′ = X α v' = X \alpha v=Xα

  首先我们要对特征向量进行单位化

v = v ′ ∣ ∣ v ′ ∣ ∣ = X α α T X T X α = X α α T ∗ λ ∗ α v = \frac{v'}{||v'||} = \frac{X \alpha}{\sqrt{\alpha^T X^T X \alpha}} \\ = \frac{X \alpha}{\sqrt{\alpha^T * \lambda * \alpha}} v=vv=αTXTXα Xα=αTλα Xα

  因为α的单位向量,所以我们得到了特征空间的特征向量

v = X α λ v = \frac{X \alpha}{\sqrt{\lambda}} v=λ Xα

  我们做PCA,实际上是把数据投影到特征向量上的,所以有

v T ∗ ϕ ( z ′ ) = α T λ ∗ X T ∗ ϕ ( z ′ ) = α T λ ∗ ( ϕ T ( z 1 ) . . . ϕ T ( z n ) ) ∗ ϕ ( z ′ ) = α T λ ∗ ( k ( z 1 , z ′ ) . . . k ( z n , z ′ ) ) v^T* \phi(z') = \frac{\alpha^T}{\sqrt{\lambda}}*X^T*\phi(z') \\ = \frac{\alpha^T}{\sqrt{\lambda}}*\begin{pmatrix} \phi^T(z_1) \\ ... \\ \phi^T(z_n)\\ \end{pmatrix}*\phi(z') \\ = \frac{\alpha^T}{\sqrt{\lambda}}* \begin{pmatrix} k(z_1,z') \\ ... \\ k(z_n,z')\\ \end{pmatrix} vTϕ(z)=λ αTXTϕ(z)=λ αTϕT(z1)...ϕT(zn)ϕ(z)=λ αTk(z1,z)...k(zn,z)

  所以,我们就得到了在新特征空间下的坐标。我们得到的就是数据降维以后的数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值