support vector machines

支持向量机

支持向量机最简单的理解:

支持向量机可以用于对数据进行分类也可以用于回归。其本质是要在两类数据特征向量之间寻找一个分隔超平面,用于将两类样本分离。其主要特征在于,要寻找的超平面是可以将两类数据特征向量到超平面的距离最远;也就是不仅仅要找到一条超平面用于分隔两类数据,而且还要使得边界距离最大化。

在支持向量机中还有两个概念:

  • 函数距离:也就是样本点到超平面的距离w*x+b
  • 几何距离:也就是使得||w||=1,(w*x+b)/ ||w||

因为函数距离可以因为w和b的任意伸缩,而变的很大,因此加上约束之后,可以将函数距离之和最大化目标转为求几何距离最大化。在后面求解与推导支持向量机的过程中,将引入拉格朗日算子,将约束条件转化为目标函数的二次优化问题。在经过一系列数学推导之后,我们的目标在于求解使得超平面的margin(与支持向量之间:支持向量指的是到分隔面几何距离为1的那些向量点)最大化的目标参数w* 与b* ,其中w*,b*只与输入样本值以及拉格朗日参数alpha相关;

  • w* = Niαiyixi ∑ i N α i y i x i
  • b* = Niαiyi ∑ i N α i y i

因而最终只需求解出最优的alpha即可求得超平面。

支持向量机在数据线性不可分时可以引入kernel methods

之所以引入核方法:

  • 一来是为了解决数据线性不可分问题,需要将数据映射到高维空间
  • 二来是为了各方面计算,因为将输入数据映射到高维空间的计算量是很大的,而实际上将数据映射到高维空间的后也只需要计算其内积,因此如果可以直接根据输入数据计算其在高维空间的内积必然最好。kernel methods 就是这么做的!

常见的核方法有:

  • linear kernel
  • rbf kernel
  • polynomial kernel K(x,z)=(xz+1)p K ( x , z ) = ( x ∗ z + 1 ) p

再说明一下支持向量机采用的损失函数hinge loss

loss=Nimax(0,1yi(wxi+b))+λ||w|| l o s s = ∑ i N m a x ( 0 , 1 − y i ( w x i + b ) ) + λ | | w | |

从hinge loss 的表达式也可以很容易看出:

  • 对于误分类问题,表达式 1yi(wxi+b) 1 − y i ( w ∗ x i + b ∗ ) 的值相当于在原始的函数距离上加1,也就是加大了误分类样本的惩罚
  • 对于到分隔面的距离等于1的,并且正确分类的,loss为0
  • 对于到分隔面距离小于1的也给予惩罚
  • 对于到分隔面距离大于1,并且正确分类的, 1yi(wxi+b) 1 − y i ( w ∗ x i + b ∗ ) 小于0,SVM将这样的样本loss设为0,也就是不惩罚。
  • 因此,可以看出只有决策面内以及误分类的样本起到作用。
  • 最后:右边表达式最后一项是正则化项。

SVM的优缺点

  • 优点

    • 对于清晰可分的数据而言SVM works pretty well
    • 对于高维空间数据而言,SVM十分有效
    • 当样本数量大小低于样本空间维度时,SVM很有效
    • SVM只使用了训练点的一部分子集也就是支持向量,因此节省内存
  • 缺点

    • 当我们的数据集很大的时候SVM表现的不是很好,因为需要很长的运行时间
    • 当数据集有很多噪声的时候,比如目标分类有很多重叠,SVM表现的不是很好
    • SVM并不直接提供概率估计,如果需要的话需要使用代价昂贵的five-fold 交叉验证。

你可能感兴趣的:(machine,learning)