一、SVM介绍
(以下来自百度百科词条SVM)
SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题。简单地说,就是升维和线性化。
升维,就是把样本向高维空间做映射,一般情况下这会增加计算的复杂性,甚至会引起“维数灾难”,因而人们很少问津.但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归)。
一般的升维都会带来计算的复杂化,SVM方法巧妙地解决了这个难题:应用核函数的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难”.这一切要归功于核函数的展开和计算理论。
选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:
1、线性核函数K(x,y)=x·y;
2、多项式核函数K(x,y)=[(x·y)+1]^d;
3、径向基函数K(x,y)=exp(-|x-y|^2/d^2)
4、二层神经网络核函数K(x,y)=tanh(a(x·y)+b)
二、Python SVC函数包
skicit-learn集成了SVC函数包