欢迎关注 “小白玩转Python”,发现更多 “有趣”
支持向量机(SVM)
支持向量机是一种监督式学习算法,既可用于分类问题,也可用于回归问题。支持向量机既可用于线性可分离数据,也可用于非线性可分离数据。对于非线性数据,则引入了核函数的概念。
让我们了解本文中用于分类问题的线性可分离数据中的SVM。
线性可分离数据
1. 一维空间
假设我们的数据有红色和绿色两个类别,并且如果我们能够找到将两个类别均值分开的边界,则可以说它是线性可分离的数据。
在这里,我们可以提出一个点作为两个类之间的边界。特定点以下的数据点属于红色类别,而特定点上方的数据点属于绿色类别。
在这里,数据点在这个维度是线性可分的。
2. 二维空间
同样,在二维空间中,我们可以想出一条线来作为两个类之间的边界。
在这里,数据点在这个维度是线性可分的。
线性可分离数据中的SVM
支持向量机使用一个超平面对两个类进行分类,超平面是对数据进行分类的决策边界。
超平面是 n 维空间中的 n-1维子空间。例如:在一维空间中它是一个点;在二维空间中它是一条线;在三维空间中它是一个二维平面。
支持向量机算法在两个类的中间找到一个最佳的超平面,该超平面的两边都有一个最大的边距。
超平面由支持向量确定。如果我们移除支持向量以外的数据点,则超平面不会改变。如果去除了作为支持向量的数据点,则超平面的位置将改变。
SVM的数学基础
支持向量机的基本原理是我们要画出一个最大边距的超平面来分隔两个类。假设我们要在二维空间中使用SVM来分离C1和C2两个类。然后我们要对未知特征向量X的类进行预测(类C1或类C2)。
我们可以用一个线性方程:
w:表示垂直于超平面的权向量。它表示 d 维空间中超平面的方向,其中 d 是特征向量的维数。
b:它表示超平面在 d 维空间中的位置。
这个方程在二维空间中代表一条直线,在三维空间中的代表一个平面,在三维以上空间中代表一个超平面。
对于每个特征向量,我们必须以如下方式计算线性函数:
1. 如果特征向量位于超平面的正面:
2. 如果特征向量位于超平面的负面:
分类规则如下:
如何预测未知特征向量的类别?
在训练阶段,支持向量机寻找最佳超平面,并计算该超平面的w和b。如果我们想找到未知特征向量的类别,支持向量机通过在方程中计算该向量的值进行预测。如果值为负,则属于C2类[负标签],或者如果值为正,则属于C1类[正标签]
如何找到最优超平面?
在训练阶段,SVM将从一些随机超平面开始并检查是否有错误。如果一个属于C1类的数据点被预测为 C2类意味着它将改变w的值并且旋转超平面以使误差数据点回到正确的一边。在训练阶段,模型将找到正确的w和b,使训练误差为零。
让我们了解一下它是如何旋转超平面的。
在随机超平面中,我们得到一个误差点。我们画一个垂直于超平面的斜率向量。从斜率矢量的原点画一个向量到误差点v。
在这里,我们必须将错误数据点移到超平面下方。为了将数据点推到该线下方,我们必须增加斜率向量和数据向量之间的角度。
如果我们减去两个向量,它们之间的角度将增加。
首先,我们要翻转数据向量的方向,所以我们会得到-v。
现在加上这个矢量和斜率矢量。
合成矢量将是新的斜率矢量。然后画一个垂直于新斜率向量的超平面。这条线已经由斜率向量旋转过。现在错误点在新的超平面下面。
同样,SVM将计算所有错误点的新斜率,并找到分裂两类的超平面。
如何最大化边距?
找到所有可能的超平面并将这两个类别分开后,我们将为每个超平面计算w和d。w表示超平面的斜率向量。d表示距离超平面最近的数据点的距离。
在对 d 值进行排序之后,我们将选择到最近的数据点距离两个类最大的超平面。
总结
SVM可以用于分类和回归问题。在本文中,我们了解了SVM如何处理线性可分离数据的分类问题。SVM还支持非线性可分离数据,感兴趣的小伙伴可以深入了解一下。
· END ·
HAPPY LIFE