5.支持向量机
最后更新于
这有帮助吗?
线性可分/线性不可分的支持向量机
支持向量机(Support Vector Machine, SVM)是一种知名的二元线性/非线性分类方法,它使用一个非线性转换(Nonlinear Transformation)将原始数据映射到高维度的特征空间(Feature Space)中,然后在高维度特征空间中,它找出一个最佳的线性分割超平面(Linear Optimal Separating Hyperplane)来将两类数据分开。
此分割超平面称为决策边界(Decision Boundary)
经过适当的非线性转换,将数据映射到足够高维度的特征空间,这两个类别在高维度可以被一个超平面分隔开。
SVM利用支持向量(Support Vector)作为分割超平面重要参数,最佳超平面是边界(Margin)最大化的超平面。
分割线具有最大边界的超平面(Maximum Marginal Hyper Plane),如上图边界更大(MMH),移除支持向量以外的数据,依旧可以得到相同超平面。
由于MMH是一个线性分界线,因此SVM分类器为线性SVM(Linear SVM)。
SVM一般不会出现过拟合的问题,建模之前会先选择样本,再建模。
支持向量数量稀少的SVM分类器,即使对数据维度高,泛化能力(Generalization)也会很好。
SVM可以同时处理分类和预测的问题,线性不可分时,无法找到一条直线分开两个类别,SVM训练时无法找到可行解。
容忍些许错误(错误率和最大边界的取舍):
线性SVM延伸成非线性SVM:
使用非线性转换将原始数据转换到高维度特征空间(人为定义)。
高维度特征中找最佳线性分割超平面(MMH),对原来空间而言,就是非线性空间超曲面。
非线性转换核函数:
多项式转换(Polynomial Kernel)
高斯RBF转换(Gaussian Radial Basis Function)
Sigmoid转换(Sigmoid Kernel)
(略)
两种解决办法:
One-Against-Rest
有t个类别数据,存在t个SVM,新数据过来,分别丢给这些SVM,得到t组值,再从中判别最大值的位置。
这种做法很直观,运行时间与内存不会消耗太多。
One-Against-One
这种方式不会造成类别不平衡的问题,计算时间也更长。
从T种类别中任意选2种类别,总共组合,我们从多元类别数据中,任选两个类别(2 Classes)的数据,训练一个SVM,并且重复,直到所有类别组合训练完成为止。