在机器学习领域,
支持向量机
SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别、分类、以及回归分析。
主要的算法思想:(个人理解)当我们遇到线性可分的当然很easy,但是现实中往往是线性不可分的,那么我们又需要把他们分开,来达到我们研究的目的,那怎么办呢?
然后我们就能计算出w和b,那么就能找到最大间隔的两条直线,就能确定支持向量(在这两条直线上的向量),α是拉格朗日乘数因子,如下图所示:
我们就需要一种方法,这种方法在低维的空间内是不可分,但是把它升到高维,升到高维后,在使用线性分类器就很容易的把这些类别能够很好的分离出来,高维就容易可分了,然而,在我们现实操作中,升维这件事也不是省油的灯,我们很难找到这个升维函数,使得能够准确的升维到正确的空间中,能达到很好的分类效果,但是如果有一种方法,能够在低维的空间内计算,然后来表达升维后的结果,那是多好的愿景啊,就是这么神奇,真的有一些大牛,搞出
了一些方法,这个方法就是核函数了。
SVM方法是通过一个非线性
映射
p,把
样本空间
映射到一个
高维
乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题.简单地说,就是升维和线性化.升维,就是把样本向高维空间做映射,一般情况下这会增加计算的复杂性,甚至会引起“
维数灾难
”,因而人们很少问津.但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归).一般的升维都会带来计算的复杂化,SVM方法巧妙地解决了这个难题:应用
核函数
的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与
线性模型
相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难”.这一切要归功于核函数的展开和计算理论:
选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:
⑴线性核函数K(x,y)=x·y;
⑵多项式
核函数K(x,y)=[(x·y)+1]^d;
⑶
径向基函数K(x,y)=exp(-|x-y|^2/d^2)
⑷二层
神经网络核函数K(x,y)=tanh(a(x·y)+b).