一、简介
数据分类是机器学习中非常重要的任务。支持向量机(SVM)广泛用于模式分类和非线性回归领域。 SVM算法的原始形式由Vladimir N. Vapnik和Alexey Ya提出。从那时起,SVM发生了巨大变化,已成功用于许多实际问题,例如文本(和超文本)分类,图像分类,生物信息学(蛋白质分类,癌症分类),手写字符识别等。
二、内容什么是支持向量机? SVM如何工作?推导SVM方程。 SVM的优缺点是在Python和R中实现的。1.什么是支持向量机(SVM)?
支持向量机是一种可监督的机器学习算法,可用于分类和回归问题。它遵循一种使用核函数技术转换数据的技术,并基于这些转换,在可能的输出之间找到最佳边界。
简单来说,它做了一些非常复杂的数据转换,以找出如何根据标签或输出定义来分离数据。在本文中,我们将介绍SVM分类算法。
2. SVM如何工作?
主要思想是确定使训练数据最大化的最佳分离超平面。让我们逐项了解这个客观术语。
什么是分离超平面?
我们看到上图中给出的数据可以分开。例如,我们可以画一条线电竞下注 ,线下的所有点均为绿色,线上的所有点均为红色。这样的线称为分离超平面。
这时,您可能想知道为什么将其称为超平面?
在上图中,我们考虑了最简单的示例,其中数据集位于二维平面()中。但是支持向量机也可以用于一般的n维数据集。在较大尺寸的情况下,超平面是平面的概括。
更正式地说,它是n维欧式空间的n-1维子空间。所以
我们已经说过,SVM的目标是找到最佳的分离超平面。那么最佳分离超平面是什么时候?
超平面分离数据集的事实并不意味着它是最佳的。
让我们通过一组图表了解最佳的超平面。
1、多个超平面
有多个超平面,但是其中一个是分离的超平面?可以很容易地看出,B行是最能区分这两种类型的行。
2、多个分离超平面
数据集可以有多个间隔,我们如何找到最佳的间隔超平面?凭直觉,如果我们选择一个接近一类数据点的超平面,那么它可能无法很好地概括。因此,请选择一个离每个类别的数据点尽可能远的超平面。
在上图中,满足指定条件的最佳超平面是B。
因此,通过最大化每个类别的最接近点与超平面之间的距离,可以找到最佳的分离超平面。该距离称为边距。
SVM的目标是找到最佳的超平面,因为它不仅对现有数据集进行分类,而且还有助于预测未知数据的类别。最佳超平面是具有最大裕度的平面。
3.推导SVM方程
现在我们已经了解了该算法的基本组成,让我们直接了解SVM的数学组成。
我假设您熟悉基本的数学概念,例如向量支持向量机 参数,向量算术(加法,减法,点积)和正交投影。这些概念也可以在文章“机器学习线性代数的先决条件”()中找到。
超平面方程
您将看到一条直线方程,例如
,其中m是斜率,c是y轴上线的截距。
超平面的一般方程如下:
其中
和
是向量
是两个向量的点积。向量
通常称为体重。
线性方程可以转换为
这时亚博代理 ,
,
只是表示同一事物的两种不同方式。那为什么要使用
?仅仅是因为在高维数据集的情况下更容易处理,并且表示垂直于超平面的向量。一旦我们开始计算从点到超平面的距离,此属性将很有用。
了解约束
我们分类问题中的训练数据在
打开。这意味着训练数据集是一对
,
;
是n维特征向量,
是
标签。什么时候
表示特征向量
该样本属于1类,如果属于
表示该样本属于1类。
在分类问题中,我们尝试找到一个函数
。
从训练数据集中学习,然后运用其知识对未知数据进行分类。
的值
可以是一个无限数,因此我们必须限制要处理的函数的类。对于SVM,这种功能表示为
超平面的功能。
它也可以表示为
这将输入空间分为两部分,一部分包含-1类的向量,另一部分包含+1类的向量。
对于本文的其余部分,我们将考虑二维向量。订购
这是一种用于分离数据集并满足以下条件的超平面:
和
我们可以一起选择另外两个超平面
和
以便它们也可以分隔数据并具有以下等式:
和
这使得
和
和
等距。变量δ不是必需的,所以我们可以设置δ= 1来简化问题,有
和
。
接下来,我们要确保它们之间没有指向。因此,我们将仅选择满足以下约束的超平面:
对于每个向量:
1、
,
属于类别1;
2、
,
属于1级。
组合约束
以上两个约束可以组合为一个约束。
约束1:
属于1类,
将两侧乘以
(对于这个等式,它总是-1)
表示
因为
属于1级。
约束2:
属于类别1,
结合以上两个方程,我们得到:
,对所有人
这是唯一的约束,而不是两个在数学上等效的约束。组合的新约束也具有相同的效果,即两个超平面之间没有点。
最大化利润率
为简单起见,我们将跳过用于计算保证金的公式的推导,
此公式中唯一的变量是
与
相同
间接成比例,因此使边距最大化将使
最小值,导致以下优化问题:
制作
最小,
以上是我们的数据可线性分离的情况。在许多情况下,不能通过线性分离对数据进行完全分类。在这种情况下,支持向量机会寻找超平面,从而使余量最大化,并使分类错误最小化。
为此,我们引入了松弛变量,
,它允许某些物体从边缘掉落,但要惩罚它们。
在这种情况下,算法会尝试在将裕量最大化的同时将松弛变量保持为零。但是,它最大程度地减少了错误分类与边界超平面的距离之和支持向量机 参数,而不是错误分类的数量。
现在将约束更改为
将优化问题更改为:make
最小化,在何处
这里,参数C是一个正则化参数,它控制松弛变量罚分(错误分类)和边距宽度之间的权衡。
,强制执行所有约束条件。
分离两种类型数据的最简单方法是在2维数据的情况下是一条线,在3维数据的情况下是一个平面。但是,并非总是可以使用线或平面,并且还需要在非线性区域中将这些类别分开。支持向量机通过使用内核函数来处理这种情况,该函数将数据映射到不同的空间,其中线性超平面可用于分隔类。这就是所谓的核函数技术,核函数将数据转换为更高维的特征空间,从而使线性分离成为可能。
如果
是的
映射到
内核函数,然后将约束更改为
优化问题是:make
最小化,在何处
在本文中,我们不会讨论这些优化问题的解决方案。解决这些优化问题最常用的方法是凸优化。
4、支持向量机的优缺点
每种分类算法都有其优点和缺点亚博买球 ,并根据所分析的数据集进行工作。
SVM的一些优点如下:
SVM的缺点如下:
已在Python和R中实现
让我们看一下用于在Python和R中实现SVM的库和函数。
5、 Python实现
用于在Python中实现机器学习算法的最广泛使用的库是scikit-learn。 scikit-learn中用于SVM分类的类是svm.SVC()
sklearn.svm.SVC(C = 1. 0,kernel ='rbf',degree = 3,gamma ='auto')
参数如下:
有许多高级参数,在此不再赘述。您可以单击此处查看(#sklearn.svm.SVC)。
您还可以通过更改参数和内核功能来调整SVM。调整scikit-learn中可用参数的功能是gridSearchCV()。
sklearn.model_selection.GridSearchCV(estimator,param_grid)
此函数的参数定义如下:
要了解有关GridSearch.CV()的其他参数的更多信息,请单击此处(#)。
在上面的代码中,我们正在考虑调整内核函数C和gamma的参数。从中获得最佳值的值是用括号括起来的值。在这里YABO88 ,我们只给出几个值,您也可以给出整个范围的值,但是执行时间更长。
R实现
我们在R中实现SVM算法的程序包是e1071。使用的函数是svm()。
摘要
在本文中,我对SVM分类算法进行了非常基本的说明。我已经省略了一些复杂的数学问题,例如计算距离和解决优化问题。但是我希望通过本文,您可以了解如何基于现有数据集构建机器学习算法SVM。
PPV班级团队翻译翻译:田田旦旦转载请联系授权
老王
最新评论