支持向量机(svm)是一种用于分类的算法,它的思想是找出一条平面最大间隔的将数据集分开。它可以分为硬间隔分类和软间隔分类。
1.硬间隔分类器
给定数据集,要找出一条平面最大间隔的分割数据集的优化函数可以表示为
表示数据上的数据到平面的距离,意思表示为从n个样本点中找到,离平面最近的那个点的距离,使这个距离最大化,同时使样本点分类正确。根据点到平面的距离公式,可以表示为
优化函数可以替换为:
可以优化为:
假设 存在最小值,由于w,b作为超平面的系数,可以缩放,有无数个,可以直接令=1,是不会影响分类效果,方便优化计算,最终的优化函数化简为:
2.拉格朗日函数
上面带约束的优化函数可以用拉格朗日乘子法构造拉格朗日函数(Lagrange function)再通过求解其对偶问题(dual problem)得到原始问题的最优解。拉格朗日函数为
原问题可以表示为
对偶问题可以表示为
在svm 中原问题和对偶问题同解,所以可以直接通过求解对偶问题。
对w,b求偏导
得出
将其带入到L中得到关于的优化函数
关于b的求解可以通过kkt条件,
的点为支持向量找出这些点如,有kkt条件可以计算出:
3.软间隔分类器
软间隔的svm 分类器的思想是允许分类有一些错误,在原来的优化函数上加一个惩罚项。在硬间隔分类器上是严格要求,现在允许少数点可以划分错误。表达式为
加入到原来的优化函数中
C>0为惩罚系数,可以将上式优化为
与硬间隔类似,我们可以通过拉格朗日乘子法将其转换为对偶问题进行求解
先最小化,分别对w,b,求导
最后得到的优化函数和硬间分类器是一样的,只是的限制不一样
软间隔分类的kkt条件
参数b也可以通过kkt条件求解
- SMO算法
前面都是关于如何计算w,b,SMO(Sequential Minimal Optimization,序列最小优化)是用来求解,它的基本思想是将原问题求解 (α1,α2,...,αN) 这 N 个参数的问题分解成多个子二次规划的问题分别求解,每个子问题只需要求解其中的 2 个参数,每次通过启发式选择两个变量进行优化,不断循环,直到达到函数的最优值。之前关于的优化函数如下:
假设选择两个变量,其他变量是固定的,原来的式子可以化简为只包含的式子
通过求导得到关于 的最优解为:
由于 是受条件约束的,约束条件如下当y1不等于y2时
当y1=y2时
最后可得
关于阈值b和插值E的更新
每次更新完以后,的更新公式为
的更新公式如下
网友评论