SVM属于有监督学习模型,主要解决分类问题。
SVM将每个样本数据映射为高维空间中的点,寻找最优区分数据类别的超平面,使各类到超平面的距离最大化。
有监督学习:训练数据既有特征(feature)又有标签(label),通过训练,让机器可以自己找到特征和标签之间的联系,在面对只有特征没有标签的数据时,可以判断出标签。
无监督学习:训练样本的标记信息未知,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础,此类学习任务中研究最多、应用最广的是"聚类" (clustering)。
半监督学习:训练集同时包含有标记样本数据和未标记样本数据,不需要人工干预,让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能,就是半监督学习。
一、核函数(Kernel Function)
定义:如果低维空间存在 ,(输入空间),使得,则称为核函数,为、映射到特征空间的内积。
需要说明的是,这里只是列出了几种主要的核函数。
1.1 线性核函数
特征空间和输入空间维度相同,参数较少,适用于特征数量相对于样本数量非常多时。
1.2 多项式核函数
正交归一化后的数据可优先选择此核函数。
1.3 径向基核函数(高斯核函数)
式中,越大,函数图像越平滑,模型偏差和方差大,泛化能力差,容易过拟合;越小,函数变化越剧烈,模型偏差和方差越小,对噪声不敏感。
不确定选择何种核函数时,可以此验证。
1.4 Sigmoid核函数
一般取 , 是数据维度。SVM使用Sigmoid核函数时,相当于一个两层感知机网络。
二、模型原理分析
两条虚线穿过的边缘点即支持向量。
(就是说咱也不知道为啥不能让图片旋转。。。歪个脑袋将就着看吧)
从上述分析过程可知线性SVM最优化问题的数学描述为:
(1)
采用拉格朗日乘子法优化求解极值,则最终优化表达式为:
三、SVM实例化参数
这里以sklearn中SVM工具包的SVC为例。SVC是一种基于libsvm的支持向量机,时间复杂度,适用于样本量少的情况。SVM需要实例化的主要参数有C、kernel、degree、gamma、coef0。
1. C表示对错误项的惩罚程度,默认值0.5。
2. kernel即选择核函数。
3. degree是核函数为poly时的实例化参数,用于指定函数维度,默认值3。
4. gamma是核函数为RBF、poly、Sigmoid时有效,默认auto时,其值1/n。
5. coef0是核函数为poly、Sigmoid时的常数项。