量化机器学习系列分享(四)更多种类的分类模型
由bq2qbou2创建,最终由bq2qbou2 被浏览 98 用户
我们今天分享的四种模型,包括上次分享的逻辑回归,都是一些轻量级的分类模型,适用于数据量少,特征量少的分类任务
\
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中欠拟合和过拟合的示例图
\