📜  支持向量机 (SVM) 简介

📅  最后修改于: 2022-05-13 01:55:28.377000             🧑  作者: Mango

支持向量机 (SVM) 简介

什么是支持向量机?
支持向量机 (SVM) 是一种相对简单的监督机器学习算法,用于分类和/或回归。它更适合分类,但有时也对回归非常有用。基本上,SVM 会找到一个在数据类型之间创建边界的超平面。在二维空间中,这个超平面只不过是一条线。
在 SVM 中,我们将数据集中的每个数据项绘制在 N 维空间中,其中 N 是数据中特征/属性的数量。接下来,找到最优的超平面来分离数据。所以由此,您一定已经明白,SVM 本质上只能进行二分类(即在两个类别之间进行选择)。但是,有多种技术可用于解决多类问题。
多类问题的支持向量机
为了对多类问题执行 SVM,我们可以为每类数据创建一个二元分类器。每个分类器的两个结果将是:

  • 数据点属于该类或
  • 数据点不属于该类。

例如,在一类水果中,要进行多类分类,我们可以为每个水果创建一个二元分类器。例如,“芒果”类,将有一个二元分类器来预测它是芒果还是不是芒果。选择得分最高的分类器作为 SVM 的输出。

复杂的 SVM(非线性可分)
SVM 可以很好地工作,无需对线性可分数据进行任何修改。线性可分数据是可以绘制在图表中并且可以使用直线分成类的任何数据。


A:线性可分数据 B:非线性可分数据


我们将核化 SVM用于非线性可分数据。比如说,我们在一维中有一些非线性可分的数据。我们可以将这些数据转换为二维,数据将在二维上线性可分。这是通过将每个一维数据点映射到相应的二维有序对来完成的。
所以对于任意维度的任何非线性可分数据,我们只需将数据映射到更高维度,然后使其线性可分。这是一个非常强大和普遍的转变。

内核不是数据点之间相似性的度量。核化 SVM 中的核函数告诉您,给定原始特征空间中的两个数据点,新转换的特征空间中的点之间的相似性是多少。

有多种内核函数可用,但其中两个非常流行:

  • 径向基函数核(RBF):变换后的特征空间中两点之间的相似度是向量与原始输入空间之间距离的指数衰减函数,如下所示。 RBF 是 SVM 中使用的默认内核。

K(x,x') = exp(-\gamma||x-x'||²)
  • 多项式内核:多项式内核采用一个附加参数“度”,该参数控制模型的复杂性和转换的计算成本

一个非常有趣的事实是,SVM 实际上不必对数据点执行这种实际转换到新的高维特征空间。这称为内核技巧

内核技巧:
在内部,核化 SVM 可以仅根据高维特征空间中的点对之间的相似性计算来计算这些复杂的转换,其中转换后的特征表示是隐式的。
这个相似度函数,在数学上是一种复杂的点积,实际上是核化 SVM 的内核。当底层特征空间很复杂,甚至是无限维时,这使得应用 SVM 变得切实可行。内核技巧本身非常复杂,超出了本文的范围。
Kernelized SVC(支持向量分类器)中的重要参数

  1. 内核:内核是根据数据类型和转换类型选择的。默认情况下,内核是径向基函数内核 (RBF)。
  2. Gamma :此参数决定了单个训练示例在转换过程中的影响范围,进而影响决策边界与输入空间中周围点的紧密程度。如果 gamma 值较小,则认为相距较远的点相似。所以更多的点被组合在一起并且有更平滑的决策边界(可能不太准确)。较大的 gamma 值会导致点更靠近(可能导致过度拟合)。
  3. “C”参数:此参数控制应用于数据的正则化量。较大的 C 值意味着低正则化,这反过来会导致训练数据非常适合(可能会导致过度拟合)。较低的 C 值意味着更高的正则化,这会导致模型对错误的容忍度更高(可能导致准确性降低)。

内核化 SVM 的优点:

  1. 它们在一系列数据集上表现非常好。
  2. 它们用途广泛:可以指定不同的内核函数,或者也可以为特定数据类型定义自定义内核。
  3. 它们适用于高维和低维数据。

内核化 SVM 的缺点:

  1. 效率(运行时间和内存使用)随着训练集大小的增加而降低。
  2. 需要仔细规范化输入数据和参数调整。
  3. 不提供直接概率估计。
  4. 很难解释为什么做出预测。

结论
现在您已经了解了 SVM 如何工作的基础知识,您可以访问以下链接以了解如何实现 SVM 以使用Python对项目进行分类:

https://www.geeksforgeeks.org/classifying-data-using-support-vector-machinessvms-in-python/