“学”、“习”二合一:监督学习——支持向量机(SVM)入门

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
简介: SVM是机器学习中有监督学习的一种,通常用来进行模式识别、分类、以及回归分析。本文用一个小例子简介SVM,言简意赅,通俗易懂。

更多深度文章,请关注:https://yq.aliyun.com/cloud


3846ebdb5e82384313c163c1c91193016e5749be

当你正在处理文本分类问题,当你正在改进你的训练集,也许你已经尝试使用Naive Bayes。但是现在你对数据集分类有信心,并希望进一步了解整个数据集的特征。我想支持向量机(SVM):一种快速可靠的分类算法,可以在有限的数据量下帮你做的更好。

SVM算法背后的思想很简单,将其应用于自然语言分类并不需要大部分复杂的东西。

在继续之前,我们建议你首先阅读our guide to Naive Bayes classifiersNaive Bayes分类器的解释),因为有关文本处理的许多事情也与此相关。

SVM如何工作?

支持向量机的基础知识及其工作原理可以通过一个简单的例子来理解。我们假设有两个类别:红色和蓝色,我们的数据有两个特征xy。我们想要一个分类器,给定一对(xy坐标,如果它是红色或蓝色,则在坐标轴上输出红点或者蓝点,我们将我们已经标记的训练数据绘制在坐标轴上:

d65a822db458e79370f0379d907e909d3e566d0d

支持向量机采用这些数据点并输出最佳分类的超平面(其在二维中只是一条线)。这条线是决策边界:任何落在其一侧的东西,我们将分类为蓝色,另外一侧就是红色。

8155456db9ab9abc0dc517cc2ba20dfc8cd72455

但是,什么是最优的超平面?对于SVM来说,如果训练数据可以无误差地被划分,并且每一类数据中距离超平面最近点和超平面之间的距离最大。超平面决定了我们对数据分类的准确度。

e5e2944925b11b48f726e1d3450ba6298e1adb33

你可以查看此视频教程,了解如何找到最佳超平面。

非线性数据

现在这个例子很简单,因为数据显然是线性分离的,我们可以画一条直线来分开红色和蓝色。可悲的是,通常情况并不简单。看看这种情况:

3f64b07cb049b949abf0eaaf3bc950a613cccdc1

很清楚的可以看到这没有一个线性决策边界(一个直线分开两个类别)。然而,这些向量非常清楚地分离,看起来好像应该很容易分开它们。

所以这里是我们要做的:我们将添加第三维。到目前为止,我们有两个维度:xy。我们创建一个新的维度z,我们创建它是因为它是一种方便的方式可以计算出来的:z = x2 + y2(你会注意到这是一个圆的方程式)。

这将给我们一个三维的空间。看一下这个空间,看起来像这样:

797e3436490ebfa1d6aed2527e3f94b5966598bb

SVM可以做什么?让我们来看看:

abbdf0ec8130169660ef6e57388797d972828c61

请注意,由于现在我们处于三维空间,超平面是在某一z(即z = 1)平行于x轴的平面。

我们将其映射回二维:

6cdd7aefe2b0887a197fe19d5f7a177ddced6a84

我们的决策边界是半径为1的圆周。

核技巧

在我们的例子中,我们找到了一种通过将我们的空间巧妙地映射到更高维度来分类非线性数据的方法。然而,事实证明,计算这种转换可能会带来很大的计算成本:可能有很多新的维度,每一个都可能涉及复杂的计算。数据集中的每个向量执行此操作都需要做很多工作,所以去找到一个更便宜的解决方案就变得非常重要了。

这是一个窍门:SVM不需要实际的向量来工作,它实际上可以通过它们之间的点积Dot product获得。这意味着我们可以回避昂贵的计算!

想象一下我们想要的新空间:

z = x 2 + y 2

弄清楚该空间中的点积(Dot product)是什么样的:

a·b = xa·xb+ ya·yb+ za·zb

a·b = xa·xb+ ya·yb+xa2 + ya2·xb2 + yb2

告诉SVM做它的事情,但要使用新的点积 - 我们称之为内核函数

这是内核技巧,这使我们能够避开很多昂贵的计算。通常,内核是线性的,我们得到一个线性分类器。然而,通过使用非线性内核(如上所述),我们可以得到一个非线性分类器,且不用转换数据,我们只将数量积改变为我们想要的空间。

注意,内核技巧实际上不是SVM的一部分。它可以与其他线性分类器一起使用,如逻辑回归。支持向量机只负责找出决策边界。

SVM如何与自然语言分类一起使用?

我们可以在多维空间中对向量进行分类。但现在我们要将这个算法应用于文本分类,首先我们需要的是将一段文本转换为一个数字向量,以便我们可以运行SVM。换句话说,我们必须使用哪些功能才能使用SVM对文本进行分类?

最常见的答案是字频,就像我们在Naive Bayes一样。这意味着我们将一个文本视为一个单词,对于这个包中出现的每个单词,我们都能记录它出现的频率。

这种方法只是为了计算每个单词在文本中出现次数,并将其除以总字数。所以,在句子All monkeys are primates but not all primates are monkeys这个monkey2/10 = 0.2的频率,and这个词,但有1/10 = 0.1的频率。

对于更高级的计算频率的替代方案,我们也可以使用TF-IDF(逆文档频率)。

现在我们已经做到了,我们的数据集中每个文本都被表示为具有数千(或数万)维度的向量,每一个都代表文本中的一个单词的频率。我们可以通过使用预处理技术来改善这一点,例如词干提取,删除停止和使用N元文法n-gram

选择一个核函数

现在我们有特征向量,唯一需要做的就是为我们的模型选择一个内核函数。每个问题都不同,内核功能取决于数据分布的外观。在我们的例子中,我们的数据是以同心圆排列的,所以我们选择了一个与这些数据分布外观匹配的内核。

考虑到这一点,自然语言处理最好用哪一种?我们需要一个非线性分类器吗?还是数据线性分离?事实证明,最好坚持线性内核。为什么?

回到我们的例子中,我们有两个特征。SVM在其他领域的一些实际用途可能会使用数十甚至数百个特征,而NLP分类器使用有成千上万的特征。这会出现新的问题:在其他情况下使用非线性内核可能是一个好主意,有这么多特征将最终使非线性内核过拟合数据。因此,最好只是坚持一个好的旧线性内核,在这些情况下它往往是表现最好的。

训练:

这些都准备好后,最后唯一要做的就是训练!我们必须使用我们的标签文本集,将它们转换为使用字频率的向量,并将它们送到算法,这将使用我们选择的内核函数,最后它生成一个模型。然后,当我们有一个我们想要分类的新的未标记的文本时,我们将其转换为一个向量,并将其转换为模型,这将输出文本的类别。

总结:

  • 支持向量机允许您对可线性分离的数据进行分类。
  • 如果它不是线性分离的,你可以使用内核技巧使其工作。
  • 然而,对于文本分类,最好只是坚持线性内核。

与较新的算法(如神经网络)相比,它们具有两个主要优点:具有较高速度和更好的性能,数量有限(以千计)。这使得算法非常适合于文本分类问题,其中通常可以访问至多几千个标记样本的数据集。

本文由北邮@爱可可-爱生活推荐,阿里云云栖社区翻译。
文章原标题《An introduction to Support Vector Machines (SVM)

作者:Bruno Stecanella,机器学习爱好者,译者:袁虎,审阅:李烽 主题曲哥哥
文章为简译,更为详细的内容,请查看原文

相关文章
|
5天前
|
机器学习/深度学习 算法
探索支持向量机(SVM)的奥秘:从理论到实践
探索支持向量机(SVM)的奥秘:从理论到实践
|
5天前
|
机器学习/深度学习 算法 计算机视觉
探索SVM(支持向量机)的奥秘:从原理到实践
探索SVM(支持向量机)的奥秘:从原理到实践
|
3月前
|
机器学习/深度学习 算法 Python
线性回归模型学习
【9月更文挑战第3天】
33 5
|
6月前
|
机器学习/深度学习 算法
支持向量机(SVM): 从理论到实践的指南(1)
SVM专注于为二分类问题找到最佳决策边界,即超平面,该平面能最大化两类数据之间的空隙或间隔。线性SVM假设用一个直线(或高维空间中的超平面)足以有效地分隔数据。当遇到重叠或杂乱无章散布的数据时,软间隔SVM允许某些点位于错误的边界一侧,这通过引入松弛变量与罚项系数C来实现,从而提供一个稳健的平衡方案。
|
6月前
|
机器学习/深度学习 算法
支持向量机(SVM): 从理论到实践的指南(2)
葡萄酒数据集经常被用于机器学习、模式识别和统计分类算法的测试中。由于其特征维度较高,非常适合于验证特征选择和降维方法,例如主成分分析(PCA)或线性判别分析(LDA)的效果。同时,由于数据集包含多个分类,它也经常被用作分类算法(如决策树、随机森林、支持向量机等)的标准测试集。
|
7月前
|
机器学习/深度学习 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第31天】 在数据科学的广阔天地中,支持向量机(SVM)以其卓越的性能和强大的理论基础脱颖而出。本文将深入剖析SVM的工作原理、核心概念以及实际应用,旨在为读者提供一个清晰的理解视角,并通过实例演示其在分类问题中的有效性。我们将从线性可分的情况出发,逐步过渡到非线性问题的处理方法,并探讨如何通过调整参数来优化模型的性能。
295 0
|
7月前
|
机器学习/深度学习 人工智能 算法
深入解析机器学习中的支持向量机(SVM)
深入解析机器学习中的支持向量机(SVM)
387 0
|
7月前
|
机器学习/深度学习 算法
【机器学习】支持向量机SVM综述
【1月更文挑战第27天】【机器学习】支持向量机SVM综述
|
机器学习/深度学习
【阿旭机器学习实战】【21】通过SVM分类与回归实战案例,对比支持向量机(SVM)3种SVM不同核函数
【阿旭机器学习实战】【21】通过SVM分类与回归实战案例,对比支持向量机(SVM)3种SVM不同核函数
【阿旭机器学习实战】【21】通过SVM分类与回归实战案例,对比支持向量机(SVM)3种SVM不同核函数
|
机器学习/深度学习 存储 算法
经典机器学习系列(三)【线性模型与广义线性模型】
经典机器学习系列(三)【线性模型与广义线性模型】
124 0