支持向量机(Support Vector Machine,简称SVM)是一种有监督学习数学模型。由n个变量组成的数据项可以被抽象成n维空间内的一个点,各维度的坐标值即对应各变量值。当一堆数据项可以被划分为m个类时,我们可以通过构建m-1个n维超平面将不同类别的数据项的点尽可能分隔开。这些超平面被称为支持向量面,而整个分类数学模型则称为支持向量机分类模型。这一概念最初由Cortes和Vapnik于1995年提出。
SVM旨在解决的问题是一个典型的二分类问题。在模式识别领域,如果二维数据点是可以被一条直线分开的,那么就称之为线性可分问题。实际上并不总是存在这样一条能完美分开所有数据点的直线。但即便如此,我们仍可以通过SVM算法找到一个决策面,即超平面,来尽可能地将不同类别的数据点分开。
这里提到的“决策面”或“超平面”,是在更高维空间中用于划分数据的。对于二维空间中的点,一条直线就可以将其分开;而在更高维的空间中,则需要一个n-1维的超平面来完成这一任务。称其为“决策面”更具普适性。
SVM算法认为,某些分类器的性能在保持决策面方向不变且不会出现错分样本的情况下,可以通过移动决策面来优化。这样会在原来的决策面两侧找到两个极限位置,这两个位置之间的垂直距离就是分类间隔。具有最大分类间隔的决策面就是SVM要寻找的最优解,而支持这个最优解的样本点则被称为支持向量。
在二元的线性分类中,我们使用一个线性函数来区分属于或不属于某个类别的样本。这个线性函数就是一个超平面,而我们的分类问题需要离散的输出值来判断样本的归属类别。例如,通过比较线性函数的结果与一个阈值的大小,我们可以判断样本属于哪个类别。
关于SVM的核心思想在于其最大化了样本到超平面的距离,即几何间隔。这样做可以最小化经验风险(即训练误差),从而达到降低期望风险(即真实世界的错误率)的目的。为了处理近似可分的问题,SVM引入了松弛变量和惩罚因子C的机制。而当数据线性不可分时,我们可以通过将数据映高维空间来使其变得线性可分。
SVM的优势在于在小样本训练集上能够获得比其他算法更好的效果。其优秀的泛化能力源于其优化目标是结构化风险最小化,而非仅仅经验风险最小化。这得益于其通过margin的概念对数据分布进行结构化描述的能力,从而降低了对数据规模和数据分布的要求。
SVM并非在所有场景下都是最优选择。对于具体的应用场景,尝试多种算法并进行结果评估是必要的。例如,在邮件分类问题上,SVM可能不如逻辑回归、KNN或Bayes等其他算法效果好。
在选择SVM的核函数时,径向基函数(Radial Basis Function, RBF)是其中之一。C惩罚因子和sigma参数等都需要根据经验和实验来进行选择。VC维也是一个重要的概念,它描述了分类器处理不同大小问题时的能力。而置信风险、经验风险和结构风险则是评估分类器性能的重要指标。
SVM是一种强大的机器学习工具,通过寻找最优超平面和考虑结构化风险最小化来达到优秀的分类效果。尽管如此,它的应用仍需根据具体问题进行调整和优化。