一、线性SVM分类
可以将SVM分类器视为在类别之间拟合可能的最宽的街道,因此也可以叫做大间隔分类 。
注意,在街道意外的地方增加更多训练实例,不会对决策边界产生影响,也就是说它完全由街道边缘的实例所决定 。SVM对特征的缩放非常敏感 。
二、软间隔分类
1、硬间隔分类:如果严格地让所有实例都不在街道上,并且位于正确的一边
2、硬间隔分类的两个问题:(1)它只在数据是线性可分离的时候才有效
(2)它对于异常值非常敏感
3.软间隔分类:避免这些问题,最好使用更灵活的模型 。目标是尽可能在保持街道宽度和限制间隔违例(即位于街道之上,升值在错误一边的实例)之间找到良好的平衡 。
4.Scikit-Learn 的SVM类中,可以通过超参数C来控制这个平衡:C值越小,则街道越宽,但是间隔违例也会越多 。
5.三种分类器的比较
(1)LinearSVC(C=1,loss="hinge")
(2)SVM(kernel = "linear",C = 1),但是这个要慢得多,特别是对于大型训练集而言
(3)SGDClassifier(loss="hinge",alpha=1/(m*C)),适用于常规梯度下降来训练线性SVM分类器 。,不会像LinearSVC那样快速收敛,但是对于内存处理不了的大型数据集或是线性分类任务,它非常有效 。
三、非线性SVM
在许多情况下,线性SVM分类器是有效的,并且通常出人意料的好,但是,有很多数据集远不是线性课分离的 。处理非线性数据集的方法之一是添加更多特征,比如多项式特征,在某些情况下,这可能导致数据集变得线性可分离 。
1.多项式核——添加多项式
添加多项式特征实现起来非常简单,并且对所有的机器学习算法有效 。但是,如果多项式太低阶,处理不了费换成那个复杂的数据集,而高阶则会创造出戴昂的特征,导致模型太慢 。
使用SVM时,可以运用数学技巧——核技巧
它产生的结果就跟添加了许多多项式特征,甚至是非常高阶的多项式特征一样,但实际上并不需要真的添加 。
2.添加相似特征——用相似特征替代
(1)解决非线性问题的另一种技术是添加相似特征 。这些特征经过相似函数计算得出,相似函数可以测量每个实例与一个特定地标之间的相似程度 。
例:
在x1 =-2和x2 = 1处添加两个地标 。接下来,采用高斯径向基函数(RBF)作为相似函数:
这是一个从0到1变化的钟形函数 。实例x1=-1:它与第一个地标的距离为1,与第二个地标的距离为2.因此它的新特征为0.74,0.30
(2)怎么选择地标:
最简单的方法时在数据集里面一个实例的位置上创建一个地标 。缺点是:一个有m个实例n个特征的训练集会被转换成一个m个实例
3.如何选择核函数
有那么多的核函数,该如何决定使用哪一个?有一个经验法则是,永远先从现行核函数开始尝试(LinearSVC 比 SVC(kernel =“linear”)快得多),特别是训练集非常大或特征非常多的时候 。如果训练集不太大,你可以试试高斯RBF核,大多数情况下它都非常好用 。
4.计算复杂度
(1)liblinear库为线性SVM实现了一个优化算法,LinearSVC正是基于该库的 。这个算法不支持核技巧,不过它与训练实例的数量和特征数量几乎线性相关:其训练时间复杂度大致为O(m x n)
(2)SVC是基于libsvm库的,这个库的算法支持核技巧 。训练时间复杂度通常在和之间,这意味着如果训练实例的数量变大,它会慢得可怕,所以这个算法完美适用于复杂但是中小型的训练集 。但是,它还是可以良好适应地特征数量的增加,特别是应对稀疏特征 。
四、SVM回归
SVM回归要做的是让尽可能多的实例位于街道上,在同时街道的同时还限制间隔违例,SVM回归要让尽可能多的实例位于街道上,同时限制间隔为例 。街道的宽度由超参数控制 。
五、工作原理
线性SVM是通过简单地计算决策函数来预测新实例x的分类 。如果结果为正,则预测类别是正类(1),否则为负类(0)
训练线性SVM分类器即意味着找到W和b的值,从而使这个间隔尽可能宽的同时,避免(硬间隔)或是限制(软间隔)间隔违例
(1)训练目标
要最小化||w||来得到尽可能大的间隔 。但是,如果我们想要避免任何间隔违例(硬间隔),那么就要使所有正类训练集的决策函数大于1,负类训练集的决策函数小于-1 。因此,我们可以将硬间隔线性SVM分类器的目标,看做一个约束优化问题,对所有实例:
公式:硬间隔线性SVM分类器的目标
秒懂生活扩展阅读
- 荣耀v20支持几倍变焦
- 减少雾霾的措施
- oppor8107支持联通4g
- 微信扫码支付需网络支持吗
- 12306买票支持京东白条吗
- 私有云怎么搭建
- 小米mix2s支持速充吗
- 软件技术支持主要的工作是什么
- 华为下拉搜索怎么关闭
- 周易预测生辰八字 周易预测