1.SVM介绍
是一个类似于逻辑回归的方法,用于对不同因素影响的某个结果的分类。
但逻辑回归主要采用的是sigmoid函数,SVM有自己常用的核函数:linear线性核、rbf径向基、poly多项式
比方说,要对一堆香蕉和黄瓜进行分类~~~
首先要明确的是,我们常见的香蕉为黄色,黄瓜为绿色(为什么不叫绿瓜??)。但是香蕉有绿色的,黄瓜也有黄色的???
好吧。这是我搜的,真的是巨丑!!!
我们采集香蕉和黄瓜的各项特征信息:气味,颜色,重量,长度………汇集成特征点,利用linear线性的分类器进行分类。如下图
红色的是香蕉,绿色的黄瓜,能够看出来,分类的依据是两类图中的两个点决定的,也就是两点连线的中垂线!
而且将这条线沿着垂直两点之间的连线移动,会发现,分类的结果并不会改变。这就是SVM的特点:是依赖于特征点当中的最特殊的点进行分类的。
这一部分的python实现与逻辑回归非常相似,源码与数据集可参考逻辑回归介绍
2.kernel核函数
- linear
简单的线性核函数,上文提到的香蕉和黄瓜的分类就是线性核函数的应用
主要应用于线性可分的情况 - rbf
高斯核函数,可以实现高维投射
就好比这样的分类特征点,用线性的不管怎么分,结果都是很不理想的,这时候用rbf从图中的二维空间投射到三维的。(这里在投射的时候,经过了一系列的公式上的转换,不在此赘述)
经过投射之后呢,就变成了下面的这个样子
看上去像是被一个超平面分割了,其实应该把这些点看成一个圆锥的大体样子,两类之间的分割变成了一个曲面,这个曲面就是rbf拟合的结果了。 - poly
多项式核函数也是可以实现低维到高维的映射,采用的频率并不是很高
前一个文章:逻辑回归 中提到的案例的实现,逻辑回归的结果是:
用rbf核函数重新拟合之后结果更加的准确,误差也更加的小了
上图:
from sklearn.svm import SVC
classifier = SVC(kernel = 'rbf', random_state = 0)
classifier.fit(X_train, y_train)