SVM
SVM ;Support Vector Machine ;支持向量机
1. SVM分类:
- hand-margin SVM 硬间隔
- Soft-Margin SVM 软间隔
- Kernel-Margin SVM
2. Hand-Margin SVM
硬间隔----最大间隔分类器
基本原理:
- 基于训练集在样本空间中找到一个划分超平面,将不同类别的样本分来
- 希望找到
最大间隔 的划分超平面 - 在满足约束的条件下使得间隔最大
- 等价替换,目标函数(凸优化问题)
硬间隔特性:
- 认为数据本身是可分的
- 存在所有样本必须划分正确的约束条件,
- 缺点:硬间隔SVM对于异常点非常敏感
- 由于噪声的因素,属于A类的点可能会分布在B类中(异常点),此时硬间隔将无法找到一个划分超平面。
目标函数求解:
- 使用拉格朗日算子法求解(算子
α
i
>
=
0
\alpha_i>=0
αi?>=0)
- 对偶问题
m
a
x
m
i
n
L
(
w
,
b
,
α
)
maxminL(w,b,\alpha)
maxminL(w,b,α)
- 对w,b求偏导
- 带入、消除;得到关于
α
\alpha
α的目标函数
- 得到模型
-
3.Soft-margin SVM
软间隔
特点:
- 认为数据
不可分 、或者是存在噪声 的 - 允许一些错误
- 允许训练的模型中,部分样本(离群点或者噪音点)不必满足该约束,同时在最大化间隔时,不满足约束的样本应该尽可能的少。
目标函数:
- 其中
C
>
0
C>0
C>0是一个常数,
l
0
/
1
l_0/1
l0?/1是"0/1损失函数"
- 当C为无穷大时,为了保证目标函数取得最小值,需要要求l_0/1?=0,即所有样本严格满足硬间隔约束条件;
- 当C取有限值时,允许部分样本不满足约束条件。
进一步求解:
由于
l
0
/
1
l_0/1
l0?/1非凸、非连续的数学特性,导致目标函数不易求解,一般是采用以下的"替代损失"函数来进行代替
l
0
/
1
l_0/1
l0?/1:
- hinge损失
总结:
- 与硬间隔对比,看到唯一的区别就是拉格朗日乘子a多了一个上限C。
- C的意义:
- C是分割区域的带宽长度,C值越大带宽越窄,越不允许中间的分隔地带存在出错的样本;
- C越小带宽越大,越允许有较多出错的样本出现在分割区域内。
4. Kernel-Margin SVM
前提:
- 硬间隔和软间隔都是在样本线性可分的基础上进行的
- 现实情况却是,并不是所有的样本集都是线性可分的
思想:
- 寻找办法将
线性不可分 的样本空间转变为线性可分 的样本空间 - 将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
- 将线性不可分(非线性)的样本空间映射到高维空间,我们就可以利用高维特征向量进行线性分类,即将非线性问题转化为线性问题。
目标函数:
4.1 核方法
定义:
- 在低维空间中不能线性分割的点集,通过转化为高维空间中的点集时,从而变为线性可分的,这就是核方法
- 核函数方法
- 常用核函数
线性核: - 主要用于线性可分的情况,我们可以看到特征空间到输入空间的维度是一样的,其
参数少速度快 ,对于线性可分数据,其分类效果很理想 - 通常首先尝试用线性核函数来做分类,看看效果如何,如果不行再换别的
- 优点:方案首选、简单、可解释性强:可以轻易知道哪些feature是重要的
- 缺点:只能解决线性可分的问题
高斯核:
- 通过
调控参数 ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。 - 如果
σ
\sigma
σ选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;
- 如果
σ
\sigma
σ选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。
- 优点:可以映射到无限维、决策边界更为多维、只有一个参数
- 缺点:可解释性差、计算速度慢、容易过拟合
多项式核
- 多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,
- 但是多项式核函数的
参数多 - 当多项式的
阶数比较高 的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大 到无法计算。 - 优点:可解决非线性问题、主观设置
- 缺点:多参数选择、计算量大
sigmoid核
- 采用sigmoid核函数,支持向量机实现的就是只包含一个隐层,激活函数为 Sigmoid 函数的神经网络。
- 应用SVM方法,隐含层节点数目(它确定神经网络的结构)、隐含层节点对输入节点的权值都是在设计(训练)的过程中自动确定的。
- 而且支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部最小值,也保证了它对于未知样本的良好泛化能力而不会出现过学习现象。
- 如图, 输入层->隐藏层之间的权重是每个支撑向量,隐藏层的计算结果是支撑向量和输入向量的内积,隐藏层->输出层之间的权重是支撑向量对应的
小结
- 因此,在选用核函数的时候,如果我们对我们的数据有一定的先验知识,就利用先验来选择符合数据分布的核函数;
- 如果不知道的话,通常使用交叉验证的方法,来试用不同的核函数,误差最下的即为效果最好的核函数,或者也可以将多个核函数结合起来,形成混合核函数。
在吴恩达的课上,也曾经给出过一系列的选择核函数的方法:
- 如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
- 如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;
如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。
5.其他
关于SVM?
数学原理:
分类间隔:
- 尽可能保证分类的正确性
- 尽可能加大两个类别间的距离,使他们更容易区分
SVM目的:
- 找到适合的
β
\beta
β
- 来描述决策分界面和边界分界面(也叫超平面)
优点:
缺点:
- 对大规模训练样本难以实施
- 解决多分类问题存在困难
- 对缺失数据敏感,对参数和核函数的选择敏感
SVM对偶?
SVM核技巧?
- SVM中什么时候用线性核什么时候用高斯核?
参考:线性和高斯的选择 - 为什么高斯核能够拟合无穷维度?
SVM的物理意义是什么?
SVM和全部数据有关还是和局部数据有关?
SVM与LR的区别?
参考 相同点:
- LR和SVM都是分类算法。
- 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
- LR和SVM都是监督学习算法。
- LR和SVM都是判别模型。
不同点:
- 本质上是其loss function不同。
- 支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。
- 在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
- ?线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。
- LR可以给出每个点属于每一类的概率,而SVM是非概率的。
|