从感知机到SVM
最近通过李航老师的统计学习复习机器学习相关内容,记录一下.
感知机
为什么会有感知机
语言模型解决了一个句子的在输入空间的概率分布,如果我们想把句子分类,应该这么做呢,我们首先从最简单的开始,假设句子都是线性可分了,就像下面的例子所示,那么感知机就是用来将其分类的.
感知机怎么做的
上图所示是是在一个二维空间,从图中可以看到,输入是(x1, x2) ,输出就是’判断这个点是在这根线的上方还是下方,也就是w1x1+w2x2 +b >0 or <0.我们在规定在上方的为正类,下方的是负类,就可以完成对点的分类,随后我们再将其扩展到多维空降,此时的wx+b = 0就不在是线,而是一个超平面,大家可以想象一下,那时候输入就应该是(x1, x2,…xn),同理就是w1x1+w2x2+…+w3x3+b>0 or <0.
输入
那么如何获得这个超平面呢,用其做分类呢?在这里补充一下,感知机是监督学习(在这里就不介绍了).我们首先要获得许多语料,即:
这个电影真不错,情节吸引人. 1(正类) ->向量化 t1 = (x1, x2, …,xn)
这个电影真无趣. -1(负类) t2 = (x1, x2, …,xn)
然后讲这些句子向量化,我在这里先不讲如何向量化,如何我们在随机初始化所有的W和b一般是0.然后讲每个句子的向量输入 算出 w*t1 + b = a ,然后一个函数
这里用这个函数是因为我们的输出是连续的,而想得到的结果是离散的,比较好的方法就是用函数映射.
如果sign(a) = -1,证明分错了,这时候就要进行修正.
梯度下降
首先写出一个点x到超平面的距离
然后我们将绝对值符号去掉,我们这里将所有的分错的点(注意分错的点)累加.就获得了损失函数.直面理解就是将分错的点到他应该被分类的距离最小化.不考虑是因为对于每一次的更新,这个||w||范数都是改变的,不需要考虑.
那么对每一个分错的点应该怎么做呢,对w, b求导,然后更新w, b,使得损失最小
最后获得最终的w 和 b,此时我们要预测一个句子就将其向量带入,算出结果如果是1则是正类,否则是负类.
SVM
为什么需要SVM
从感知机我们知道,可以用一个超平面将数据分开,但是显然这样的超平面可能不止一个,我们想获得那个最好的超平面,也就是说他可以在测试集上得到的结果最好,这就是SVM的由来
SVM怎么做的
定义
如图所示上面的x+与x-,分别是已经正确分类的正类和负类,SVM的目的就是将这两个点到超平面的距离最小化.
从感知机我们知道要想正确分类,那么x+*w +b > 0.但是我们考虑到要使得间隔最大化,需要我们可以使得x+到分类界面有一定的距离,而不是在这个界面上面,因此可以使x+*w +b > 1,当然这个1 是为了方便计算,使用其他值也可以.
根据式子变化得来:
最终结果是:
这个就是我们定义的距离.要使得它最大化,先做一个变化.加上限定条件,注意变成最小化了.
此时我们再考虑到我们做的变化x+*w +b > 1,因为我们规定每个点到分类界面都有距离,这样就可能导致本来可分的现在变成不可分了.因此我们考虑,允许少量的数据可以不满足这个条件,他们的间隔距离可以小于1.因此可以获得这样的变形.
为什么会出现C这个变量呢,因我们并没有规定ξ的大小,他甚至可以无穷大,任意的点都满足分类要求.因此加入一个C来作为惩罚项.同时这个C项也是可以选择兼顾是分类正确率还是最大间隔的作用,例如当C无穷大的时候,任意ξ大于0,都会使得目标函数无穷大,这时候就使得ξ不能大于0.这样就是要使得间隔更大,当C负无穷的时候,同理.
拉格朗日
我们假设上图中的min函数为f(x),在高数中找到, 要找条件极值,需要用拉格朗日乘子法,得到下面的式子
我们的目标是min(w,b, ξ)max(α,β)L, 括号里面是参数的意思,为什么说是这样呢,我们看一下,当α, β,满足上面条件,因为α, β,所乘的均是正值,要使得整个式子最大化,α, β,项就只能等于0, 此时获得的最大值就是f(x),也就转化成了原问题.所以是这样的.正常对这种问题的解法是将最小最大转变为最大最小,即:max(α,β)min(w,b, ξ)L,数学上,当满足KKT条件的时候这两个是相等的.因此我们从KKT条件出发.
KKT条件
-
原变量和对偶变量的导数为0,意味着在最大化或最小化的过程中不能通过改变变量来改变,因为导数为0.
-
原问题约束要满足
-
对偶约束要满足
-
互斥松弛,即要么拉格朗日乘数因子为0, 要么这项不等式约束取等号
对于条件1 ,函数对w,b, ξ求导获得:
带入后获得
转变为上式,约束条件为
显然对于KKT的2和3条件是满足的,现在w已经求出来了,那么b怎么求呢,就要用到KKT的第四个条件,将w带入f(x),当拉格朗日乘子不为0的时候,就要取等号,即:
最终获得的结果就是
当我们有一堆数据的时候,代数上式,再分别对α求导,算出后带入求出w,b