多分类svm对偶化核化法代码_SVM(核前时代)

前言

其实看了这么久的SVM也没有在任何一个实验中真实确定地作为最终方法使用过,因为。。。。这玩意效果真的很差很差很差!!!!!

但是直觉告诉我有一天我会遇到我的如意文章,踏着SVM来找我,所以我还是坚持继续好好学下去,这应该是在上了一学期《模式识别》和一学期《矩阵分析》以后再回来小推一下,理解更深刻了。。。。吧?

本章接着之前的SVM直观理解继续深入,有兴趣的同学可以回去看看:

白歌:帮助理解SVM+RBF的代码(python)​zhuanlan.zhihu.com
zhihu-card-default.svg

emm稍微运行一下感受一下就可以回来了,然后这里是SVM随需求发展而增加内容的。。。流程图?帮助对SVM中涉及到的各个部件大致有啥用有个了解呐

c79a7240e730fb40d56ab59a355dea8d.png

支持向量

首先SVM的全称是Support Vector Machine,那么支持向量(Support Vector)是什么呢?你看:

7ee63e77ff6eac420e0762eefeeeca21.png

图中分类边界S的Support Vector就是支持向量啦~而支持向量所决定的直线(超平面,具体超平面是个啥不懂的话就自行查一下啦)就是两个类的分类边界,至于一个法向量为何能决定一个超平面,请看:

法向量决定超平面

设法向量SV坐标为

equation?tex=%28SV_1%2C+...%2CSV_n%29 ,法向量所对应的超平面S的公式为

equation?tex=S_1X_%7B%E2%88%881%7D%27%2B...%2BS_nx_n%27%3D0

可知超平面上的点的坐标为

equation?tex=X%27%3D%28X_%7B%E2%88%881%7D%27%2C...%2Cx_n%27%29 ,又由于
equation?tex=SV%E2%8A%A5S ,所以

equation?tex=SV_1X_%7B%E2%88%881%7D%27%2B...%2BSV_nx_n%27%3D0+

即:

equation?tex=SV%5ET%2AX%27%3D0

正好法向量与超平面垂直,而由上式可知,法向量的元素即为超平面的系数。所以SVM求得了支持向量,即为求得了支持向量机的分类边界。

线性可分问题

还是那张图,你看:

9c79ecdfac32ba2c40002aa4943efc61.png

假设样本点为

equation?tex=X_%7B%E2%88%881%7D%3D%28x_1%2C...%2Cx_n%29 ,则样本到SV上的投影长度为

equation?tex=%5Cvec%7BOP_%7BSV%7D%7D%3D%7C%7C%5Cvec%7BOX_%7B%5Cin1%7D%7D%7C%7Ccos%5Cangle%7BP_%7BSV%7DOX_%7B%E2%88%881%7D%7D%3DSV%5ET%2AX+

该投影长度也即为点

equation?tex=X_%7B%E2%88%881%7D 到超平面S的距离

令:

equation?tex=X_%7B%E2%88%881%7D 在支持向量上的投影同支持向量的乘积为1

又由于

equation?tex=X_%7B%E2%88%881%7D 属于正类(根据图),所以
equation?tex=%5Cvec%7BOP_%7BSV%7D%7D
equation?tex=SV 同向,所以:

equation?tex=SV%5ETX_%7B%5Cin%7B1%7D%7D%3DSV%5ET%5Cvec%7BOP_%7BSV%7D%7D%3D%7C%7CSV%7C%7C%2A%7C%7C%5Cvec%7BOP_%7BSV%7D%7D%7C%7C%3D1+

同理,

equation?tex=X_%7B%5Cin0%7D 属于负类时,
equation?tex=%5Cvec%7BOP_%7BSV%7D%7D 与SV不同向时候

equation?tex=SV%5ET%2AX_%7B%5Cin0%7D%3D-1

此时,可知,当||SV||越小,则

equation?tex=%7C%7C%5Cvec%7BOP_%7BSV%7D%7D%7C%7C 越大,样本距离分类边界距离越远,分类结果越好,于是可得到如下规划问题:

equation?tex=min%5C+%5Cfrac%7B1%7D%7Bn%7D%28SV%5ET%2ASV%29+

equation?tex=std1%3ASV%5ET%2AX_%7B%5Cin1%7D%3D1

equation?tex=+std2%3ASV%5ET%2AX_%7B%5Cin0%7D%3D-1

此时

equation?tex=SV%3D%28SV_1%2C...%2CSV_n%29 是未知数,
equation?tex=X%3D%28X_%7B%5Cin1%7D%2CX_%7B%5Cin0%7D%29 为已知数,因而可设定拉格朗日方程:

equation?tex=+l%3D%5Cfrac%7B1%7D%7Bn%7D%5Csum%28SV%5ET%2ASV%29%2B%5Csum%7B%28%5Csigma_%7B%5Cin1%7D%28SV%5ET%2AX_%7B%5Cin1%7D-1%29%7D%2B%5Csum%7B%5Csigma_%7B%5Cin0%7D%28SV%5ET%2AX_%7B%5Cin0%7D%2B1%29%29%7D

其中

equation?tex=%5Csigma_%7B%5Cin1%2F0%7D 是拉格朗日乘子,之后可根据随求导调整SV内的元素,也就相当于调整了分类边界的倾斜程度。另外,由于样本是线性可分的,所以求导肯定有结果。另外关于该拉格朗日公式还有其对偶问题的解法,由于笔者对对偶问题不熟,所以以后有机会再回来更,之后再慢慢放开假设啦~

线性不可分问题

先看之前提到的拉格朗日方程,其中,只有当

equation?tex=%5Csum%7B%5Csigma_%7B%5Cin1%7D%28SV%5ET%2AX_%7B%5Cin1%7D-1%29%7D
equation?tex=%5Csum%7B%5Csigma_%7B%5Cin0%7D%28SV%5ET%2AX_%7B%5Cin0%7D%2B1%29%7D 为0时,才能讨论目标函数
equation?tex=%5Cfrac%7B1%7D%7Bn%7D%5Csum%28SV%5ET%2ASV%29 是否最小的问题,但是事实上很多分类问题中分类边界并不能将所有的样本都归到各自的类中,这可能由样本选择偏误、统计错误或者特征选择不合理等问题导致。因而大多情况下该函数还是选择委屈求全,不求后两项为0,但拉格朗日方程尽量最小就好(个人理解,缺乏严谨推论,反正我把自己说服了哈哈)。

d62bdc57aef9b73e398f1962b85916ca.png

所以这种情况下拉格朗日方程更多地是被当做SVM的损失函数使用,于是就被转换为:

equation?tex=loss%3D%5Cfrac%7B1%7D%7Bn%7D%5Csum%28SV%5ET%2ASV%29%2B%5Csum%7B%28y_1%2Acost%28%5Chat%7By%7D%2Cy_1%29%2B%281-y_1%29%2Acost%28%5Chat%7By%7D%2Cy_0%29%29%7D

其中,

equation?tex=y_%7B1%2F0%7D 表示分类结果,而
equation?tex=cost%28%5Chat%7By%7D%2Cy%29 表示模型预测样本X分类结果
equation?tex=%5Chat%7By%7D 与正确结果y的损失函数,鉴于
equation?tex=y_%7B1%2F0%7D%5Cin%5C%7B0%2C1%5C%7D ,因而两个损失函数的系数(0/1)表示不同分类下的损失函数是否被算在总体拉格朗日函数中,损失函数通常是用于表示二者间差异性的度量。损失函数可以有多种选择。以交叉熵为例,上式即可表示为:

equation?tex=loss%3D%5Cfrac%7B1%7D%7Bn%7D%5Csum%28SV%5ET%2ASV%29-%5Csum%7B%28P%28y_1%7CX%29ln%28P%28%5Chat%7By_1%7D%7CX%29%29%2B%281-P%28y_0%7CX%29%29ln%28P%28%5Chat%7By_0%7D%7CX%29%29%7D

交叉熵定义如下:

交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息——百度百科

公式如下:

equation?tex=En%28y_1%2Cy_2%29%3D-y_1%2Aln%28y_2%29

具体为啥这个函数能反映概率分布的差异性,还没仔细研究,就假装很懂地说,它就这样吧,其中

equation?tex=y_1
equation?tex=y_2 分别表示两个样本的概率分布,负号用于保证最终乘积为负数。再回头看
equation?tex=En%28y_1%2Cy_2%29%3D-y_1%2Aln%28y_2%29 ,只取负号之后的部分:
equation?tex=En%28y_1%2Cy_2%29%27%3Dy_1%2Aln%28y_2%29 该函数形状如下:

047ee5dcb5d77002c14578751a22afa4.png

由图可知,在每一个水平线上,

equation?tex=y_1
equation?tex=y_2 相同的位置(样本概率分布相同的位置)
equation?tex=En%28y_1%2Cy_2%29%27 达到极大值,即
equation?tex=En%28y_1%2Cy_2%29 的极小值,所以以上SVM损失函数越小,一般来说模型效果越好,之后就可引入随机梯度下降来调整支持向量的参数啦。

下一篇:SVM对偶问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值