PLUS会员

量化机器学习系列分享(四)更多种类的分类模型

由bq2qbou2创建,最终由bq2qbou2 被浏览 94 用户

我们今天分享的四种模型,包括上次分享的逻辑回归,都是一些轻量级的分类模型,适用于数据量少,特征量少的分类任务

\

1. 支持向量机(SVM)

1.1 SVM的概念

支持向量机(Support Vector Machine)是在神经网络流行之前最强大的机器学习算法

SVM在二分类问题上的逻辑原理是:

  • 假设我们的样本中有两个类别,我们可以把样本画到图上
  • 如果切一刀下去,怎样切可以尽可能地把两个类别尽可能地分开

比方说以下图像中

  • 横轴是第一个特征,纵轴是第二个特征,红蓝颜色是标签(红色为一个类别,蓝色为另一个类别)
  • 如果我们想画一条直线,把红蓝两个标签尽可能地分开,我们就可以画如图的那条斜线

如何做到尽可能地分开两个类别呢,这个其实是一个几何的思维,比方说在以下的例子中,我们像把圆圈和五角星尽可能地分开

  • 如果是绿色的线,就太靠近圆圈类了
  • 如果是蓝色的线,就太靠近五角星类了
  • 如果是粉色的线,就既靠近圆圈类,也靠近五角星类了
  • 最好的是红色的线,离圆圈类,离五角星类都比较远

离两个类别都尽可能地远,做到的目标是最大化间隔(Maximum Margin)

  • 类似于逻辑回归,这个优化目标也无法通过求导解方程的方式来完成
  • SVM的优化需要梯度下降,而且这个训练过程通常要比其他模型慢很多

其实在SVM分类的时候,我们会发现一个有趣的现象

  • 在决定这个分类边界的时候,我们主要看的是靠近边界的数据点,而远离边界的数据点并不是那么重要
  • 好比我们在分类的时候,把那些模棱两可的搞明白了,分类就清晰了
  • 这些靠近边界的,模棱两可的,在分类的时候起决定作用的,就叫做支持向量(Support Vector)

\

1.2 SVM在高维数据上的应用

SVM分类的时候,分类的边界叫分割超平面(Separate Hyperplane),决定边界的点叫做支持向量(Support Vector),这些名次都是矩阵中的概念

  • 超平面的概念,比方说二维空间中,一维的直线就是超平面;三维空间中,二维的平面就是超平面;四维空间中,三维的空间就是超平面……
  • 向量其实就是一个数据点,比方说一个数据,其实是一个1 x K维度的向量,K是特征数量,就类似于数据在表格中的一行

以下是一个三维空间中的SVM示例图

  • 这个情景中,X轴是第一个特征,Y轴是第二个特征,Z轴是第三个特征,颜色表示标签分类
  • 此时要想把两个类别分开,就要用到一个平面了

\

1.3 SVM在无法线性分割情况下的解决方法

无法线性分割的情况,就好比以下图像,三角类和圆圈类,交融在一起了,一刀切下去不可能完全分开

这种情景一般有两种解决方案

  • 要么允许分类错误
  • 要么不切直线,而是切一条曲线,甚至多条曲线

\

1.3.1 软间隔SVM

软间隔SVM本质上还是要切一条直线,但是我们允许分类错误,相对地,我们之前提到的一刀下去能分清楚的其实叫做硬间隔SVM

软间隔SVM在优化的时候,既要尽可能地把两个类别分开(最大化间隔),也要尽可能少分类错一些样本(最大化负的分类误差=最小化分类误差)

软间隔SVM情景下,支持向量既包括靠近分界线的,也包括被分类为错误类别的

\

1.3.2 核方法(Kernel Method)

核方法的本质是使用核函数,将不能线性分割的数据拓展到一个更高维的空间,再在高维空间进行分割

例如下面的这个例子

  • 如果是二维空间中,我们没办法用一条直线将红绿两个类别分开
  • 但是假如我们有一个“神奇的手”,可以把中间的红色提起来,把周围的绿色压下去,再从中间切一条“二维直线”,就可以把红绿两个类别分开了
  • 在数据上运用的核函数,就是这样一个“神奇的手”

如果退回的二维空间,核函数的效果,就类似于一个曲线分割

常用的核函数有:

  • 多项式核函数(Polynomial Kernel):适用于简单的曲线分类,容易欠拟合
  • 径向基函数核(Radial Basis Function Kernel,RBF Kernel):适用于复杂的曲线分类,容易过拟合
  • 但是不用担心,SVM中其实是可以设置惩罚参数(类似于岭回归里的)来避免过拟合的

SVM中欠拟合和过拟合的示例图

\

1.4 SVM的代码实现

标签

神经网络机器学习算法机器学习
{link}