【机器学习】Kernel Logestic Regression 和Kernel SVM

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haolexiao/article/details/70800960

之前一篇文章【机器学习】Linear SVM 和 LR 的联系和区别讲了线性SVM和常规LR的关系和优缺点。结果今天想研究一下Kernel logistic regression(以下简称KLR),结果发现相关的中文资料几乎没有啊,所以特来总结一下

一个模型要能用核函数形式必须满足如下两点:
w xi 的线性组合是使用Kernel的关键所在。
比如SVM,其最佳 w 来源于 xi 的线性组合

w=i=1n(αiyi)xi

同时这个模型本身是线性模型也是使用Kernel的必要条件
y=f(wTx)

只有满足了以上两点:其判别式才能写成

y=f(i=1nαixTix)=f(i=1nαi<xi,x>)
进而写成核函数形式:
y=f(i=1nαiK(xi,x))

LR本身就是一个线性判别模型,所以满足了条件2,那么它是否满足条件1呢?
证明如下:

任何L2正则化的线性模型都可以用核函数

标题就是结论,下面开始证明:

只要需要优化的目标函数如下:

minLoss(w)=minwi=1nerror(yi,wTxi)+λwTw

即优化的目标是一个广义线性损失函数(这里指 w 需要和 xi 简单做内积),同时带有一个 wTw 的L2正则。
那么:最优的 w 就能表示为 xi 的线性组合

证明如下:
假设最优解 w 存在,那么把 w 分成两个部分,一个平行于 xi 的线性组合 ni=1αixi 部分 w|| ,另一个是垂直于其线性组合的部分 w 。即:
w=w||+w
带入到上面的 Loss(w) 目标函数中得到:
对于error部分

error(yi,(w||+w)Txi)

因为 w 部分也垂直于所有的 xi 所以,error部分就等同于:
error(yi,wT||xi)

对于正则化部分
wTw=(w||+w)T(w||+w)=wT||w||+2wT||w+wTw=wT||w||+wTw

所以此时的 Loss(w) 目标函数为:
Loss(w)=i=1nerror(yi,wTxi)+λwTw

=i=1nerror(yi,wT||xi)+λ(wT||w||+wTw)

i=1nerror(yi,wT||xi)+λwT||w||

=Loss(w||)

因为已经假设了 w 是最优解,即使得 Loss(w) 最小的解,而上面又证明了
Loss(w)Loss(w||)

所以只有取得等号的时候才能满足题意,而只有当 w=0⃗  时才能取得等号
所以证得:
w=w

所以说明其最优的 w 可以由每个数据集线性表示出来,即
w=i=1nαixi

Kernel logistic regression(KLR)推导

既然上面已经推导了

w=i=1nαixi

那么怎么去求里面的参数 αi 呢?
那就直接带入到 Loss(w) 中就好,这样Loss(w)就变成了 α 的函数:
Loss(α)=minαi=1nerror(yi,(j=1nαjxj)Txi)+λ(i=1nαixi)T(i=1nαixi)

=minαi=1nerror(yi,j=1nαj<xj,xi>)+λi=1nj=1nαiαj<xi,xj>

有了向量内积,就可以转化成为核函数:
Loss(α)=minαi=1nerror(yi,j=1nαjK(xj,xi))+λi=1nj=1nαiαjK(xi,xj)

对于 logistic regression来说,其损失函数:

error(yi,wxi)=log(1+exp(yiwTxi))

所以:
Loss(α)=minαi=1nlog(1+exp(yij=1nαjK(xj,xi)))+λi=1nj=1nαiαjK(xi,xj)

所以需要优化的目标就出来了,用正常的优化方法就好(比如SGD),而且它没有约束。

另一个角度来看Kernel损失函数

Loss(α⃗ )=minαi=1nerror(yi,j=1nαjK(xj,xi))+λi=1nj=1nαiαjK(xi,xj)

看前半部分:

error(yi,j=1nK(xj,xi)αj)

这部分可以看成参数向量 α⃗ =(α1,α2,,αn) 与系数向量 K⃗ (,xi)=(K(x1,xi),K(x2,xi),,K(xn,xi)) 两个向量的内积。
再看后半部分:
i=1nj=1nαiαjK(xi,xj)=α⃗ TKα⃗ 

其中 K 为kernel矩阵,矩阵的第 i j Kij=K(xi,xj)
所以这个 Loss(α⃗ ) 可以化为:
Loss(α⃗ )=minαi=1nerror(yi,α⃗ TK⃗ (,xi))+λα⃗ TKα⃗ 

所以可以把 α⃗  看成之前的 w⃗  ,所以新的可以看成关于 α⃗  的线性模型.
可以这么看损失函数:
1. 第一部分 α⃗ TK⃗ (,xi) 看成之前的线性内积
2. 第二部分 α⃗ TKα⃗  看成 α⃗  的正则化项。

二次型 α⃗ TKα⃗ 

这里额外说一下二次型 α⃗ TKα⃗ 
常规的 α⃗ Tα⃗  可以看成正常的欧式距离,而 α⃗ TKα⃗  可以看成 α⃗  关于 K 的距离。
因为 K 是一个对称矩阵,所以任何一个对称矩阵都可以化成

K=PTAP

其中 A 矩阵是一个对角矩阵,如果 K 还是一个正定矩阵的话,那么 P 可以是一个单位正交矩阵【相当于其特征向量组成的矩阵】
所以二次型化为:
α⃗ TKα⃗ =(Pα)TA(Pα)

可以看成先将 α⃗  做旋转,然后各个分量做伸缩之后的距离。

KLR和SVM的对比

既然加核之后,KLR和SVM都可以用于多分类,那么它们的不同点在什么地方呢?

KLR的优势:
1. KLR能够提供属于某一类的概率,而SVM只能判定属于某一类
2. KLR自带能够扩展到多分类问题方法,而SVM虽然也可以但是都不太理想

虽然上面说了这么多关于KLR的好处,那么为什么不见有人用呢, SVM的优势有哪些?
KLR计算复杂度实在是太高了,因为其几乎每一个 αi 都不为0,所以基本上要计算两两之间的 xi 的核函数,而SVM只有支持向量起作用,所以其自带稀疏性,只用计算少量的支持向量的 αi 部分就好。
KLR的计算复杂度是 O(N3)
SVM的计算复杂度是 O(N2k) 其中 αi 不为0的个数

参考资料

  1. Kernel logistic regression vs SVM
  2. Kernel Logistic Regression (機器學習技法)现在才发现这门课讲的真是太好了。

猜你喜欢

转载自blog.csdn.net/haolexiao/article/details/70800960