支持向量机(支持向量机视频讲解)


【点击查看】低成本上班族靠谱副业好项目 | 拼多多无货源创业7天起店爆单玩法

【点击查看】逆林创业记 | 拼多多电商店铺虚拟类项目新玩法(附完整词表&检测工具)

【点击查看】逆林创业记 | 小白ai写作一键生成爆文速成课

领300个信息差项目,见公众号【逆林创业记】(添加请备注:网站)

本文深入探讨了机器学习中的支持向量机(SVM)主题,涵盖了不同类型的SVM算法及其算法原理。SVM是一种广泛使用的监督式机器学习算法,能够处理分类和回归问题。要理解SVM是如何工作的,我们首先需要明白什么是“监督式”——它涉及到向算法输入带有标签的数据。

对于目标具有有限可能性的分类问题,可以使用SVM来解决。例如,如果你想确定邮件是否是诈骗邮件,那么只有两种可能性。另一方面,回归问题则涉及连续的目标标签。比如,如果你需要根据员工的表现来预测他们薪资的增长,那么薪资增长是连续的。在机器学习中,SVM算法通常用于分类挑战。

SVM算法的目标是创建一条决策边界或线,能够有效地将给定数据集分隔成不同的类别。一旦建立了决策边界,新的样本就可以相对容易地被分类到适当的类别中。在SVM算法中,这个决策边界被称为超平面。然后挑战就变成了精确地绘制这个超平面。

超平面

假设我们有一个数据集,包含两个类别,分别用蓝色和绿色表示。这个数据集是线性可分的,意味着我们可以画一条直线来分隔两个类别。然而,我们需要确定哪条线是最佳拟合或最优边界。在给定的图表中,分别用红色和绿色标出了两条线。在这种情况下,我们需要绘制所有可能的线条来确定具有最高精度的那一条。这条线被称为超平面,其维度取决于数据集中存在的特征。如果只有两个特征支持向量机,我们可以画一条直线,但如果有两个以上的特征,我们需要画一个平面,这将是一个二维超平面。

为了确保最大间隔,绘制超平面至关重要。稍后,我将深入探讨如何实现这个最大间隔。在绘制超平面时,我们需要考虑找到位于超平面两侧最近的点。这些点我们称之为支持向量。

支持向量是靠近超平面的数据点,影响超平面的位置和方向。使用这些支持向量,我们可以最大化分类器的间隔(我们稍后会学习这一点)。删除支持向量将改变超平面的位置。这些点帮助我们构建我们的SVM。

在这个图表中,A点和B点是P超平面最近的。所以在这种情况下,A和B被称为P超平面的支持向量。

C点和B点是Q超平面的另一组最近点。

SVM有哪些不同的类型?线性SVM - 线性SVM用于线性可分的数据,这意味着如果一个数据集可以通过使用一条直线被分类为两个类别,那么这样的数据被称为线性可分数据,使用的分类器被称为线性SVM分类器。假设我们有一个包含两个类别(星形和点)的数据集,该数据集有两个特征x和y。我们可以使用B和D直线来分隔这个数据集。当我们绘制多条直线来分隔数据时,哪一条应该被视为超平面。为了理解这一点,我们可以使用这个例子。

超平面B和D

假设D是超平面,并且p和q是支持向量。因此,借助支持向量的支持,绘制一条与超平面平行的直线。我们需要计算M2距离。这个距离我们称之为间隔(Margin)。类似地,我们也需要对B超平面做同样的事情。并计算间隔M1。比较M1和M2时,M2间隔比M1小。所以使用这个我们可以说B是最佳拟合线(超平面),它将数据分为两个类别。我们应该对所有可能的超平面进行这个计算,给出最大间隔的那一个将是超平面。

在这里,我们无法绘制一条直线将这些数据分为两个类别。我们需要将特定数据转换为线性数据。为此,我们可以使用映射函数。

Itcanbecalculatedas:

z=x^2+y^2

一旦我们应用这个映射,所有的数据点将会变成这样。我们将会得到另一个称为z的轴。

数据点的上述描述是线性可分的,可以通过直线超平面来分隔。现在我们可以绘制所有可能的线将数据分为两个类别,我们需要确定一条能给出最大间隔的直线,那将被视为最佳超平面。

这个表示是在三维空间中,带有z轴。在二维平面上,图形看起来是这样的:

这就是非线性SVM所做的!它将数据点带到更高的维度,在该维度上线性可分,然后算法对它们进行分类。

支持向量机分类器背后的数学

假设我们有两个特征X1和X2。我们试图在图中绘制这些特征的数据点。假设我们有两个点P1和P2。

 P1 = (-30)   P2 = (33)

要绘制一个能分隔这两个点的超平面,在二维空间中是一条直线。让我们取这条线(蓝色线),它将作为我们支持向量机分类器的超平面。我们知道直线的方程是:

y=mx+c

在下图的散点图中:

Slope  =  -1 (斜率)
Intercept  = 0 (截距)

超平面

将斜率和截距存储在一个叫做W的变量中。W是权重向量,包含x和y的系数

Forexample,foralinegiveninthediagram

-x-y=0,

W->parameteroftheline

(-1,-1)

Wecanformtheequationlikethis,

-x-y+b=0,

W=[-1,-1],X=[x,y]andbiasb=0

也可用下述的公式表达:

f(x)=W.Transpose.X

我们取点P1(-3, 0),并尝试找到相应的W转置值。

进行简单的矩阵乘法,为此我需要W的转置(记为),并将其与点P1的坐标向量x相乘以找到的值。

为什么适用Wt的值

我们试图将P1点投影到超平面上。为此,我们需要使用矩阵乘法(向量的投影)。

W = [-1-1]
Wt = [-1 ]
     [-1 ]

X = [x, y] = [-3  0]

Wt . X =  [-1 ]
          [-1 ] . [-3  0 ]

Wt . x  = +3 (正值)

现在你可以看到乘法的值是3。这是一个正数。所以我们可以说,所有位于超平面左侧的点将具有正值。

Wt.x=[-1]

[-1].[33]

Wt.x=-6(负数值)

现在你可以说,对于所有位于超平面左侧的点,的值将是正的,而对于所有位于超平面右侧的点,的值将是负的。

这就是我们的支持向量机分类器将如何尝试对数据点进行分类。将充当一个标签。但是在某些情况下,我们的超平面不会通过原点,方程将会是。

举例来说,给定一条直线:
x-2y+3=0
得到:W=[1,-2],X=[x,y],偏置b=3
若直线方程:2x+3y+4z+3=0
得到:W=[2,3,4],X=[x,yx,z],偏置b=3

你知道我们可以绘制任意数量的超平面来将数据分为不同的类别。但是我们需要绘制最佳的超平面。为此,我们可以使用间隔和支持向量。为了对最佳超平面做出良好的预测,你的间隔值应该是最大的。

优化最大化间隔

为了找到边缘距离,我们可以找到支持向量并创建与超平面平行的线。

为了得到我们的优化函数,有一些约束需要考虑。这个约束是“我们将以这样的方式计算距离(d),即不允许正点或负点越过边界线”。让我们将这些约束条件用数学公式写出来。

//对于所有绿色点

W.Transpose.X1+B=1

我们不是考虑两个约束,现在我们尝试将这两个约束简化为一个。我们假设负类有 y=−1,正类有y=1。

我们可以说,为了正确分类每一个点,这个条件应该始终成立

yi(W.Transpose. X1 + B) >= 1

假设一个红色点被正确分类,这意味着它将遵循的约束。如果我们将这个式子乘以y=1,我们会得到上述提到的同样的方程。类似地,如果我们对一个绿色点y=-1做同样的操作,我们将再次得到这个方程。因此,我们可以说,我们需要最大化间隔d,以便满足这个约束。

我们将取两个支持向量,一个来自负类(绿色—X1),另一个来自正类(红色—X2)。这两个向量X1和X2之间的距离将是(X1−X2)向量。我们需要的是这两点之间的最短距离,可以使用

来找到。

红色支持向量=X1

绿色支持向量=X2

MarginalDistance(d)=X1-X2

***距离最大化.

//AndtheLeftside(Red)oftheHyperplanewecangetpositivenumberssothatwillbe,

W.Transpose.X1+B=1

//Let'stakethisW.Transpose.X1+Bisequalto1possibility,

X1->W.Transpose.X1+B=1

X1->W.Transpose.X1+B-1=0

X2->W.Transpose.X2+B=-1

X2->W.Transpose.X2+B+1=0

FindingtheMarginalDistance

==============================

X1=X2

W.Transpose.X1+B-1-(W.Transpose.X2+B+1)

W.Transpose.X1-W.Transpose.X2-2

W.Transpose.X1-W.Transpose.X2=2

//SinceW.Transposeisavectorwecandivideitby||w||whichismagnitudeofthevector

W.Transpose.X1-W.Transpose.X2=2

W.Transpose.(X1-X2)=2

//Divideby||w||

W.Transpose.(X1-X2)/||W||=2/||W||

(X1-X2)=2/||W||

--------------------------------------------------------------

MarginalDistance=(X1-X2)=Max[2/||W||]

suchthat,yi(W.Transpose.X1+B)>=1

---------------------------------------------------------------

我们已经找到了优化函数,但这里有一个难点:在实际应用中我们很少遇到这种完全线性可分的数据,几乎不会得到这样的数据,因此我们无法使用这里证明的条件。我们刚刚研究的问题类型被称为硬间隔支持向量机(Hard Margin SVM),现在我们将研究软间隔(Soft Margin),它与此类似,但在软间隔支持向量机(Soft Margin SVM)中使用了一些更有趣的技巧。

软间隔支持向量机

现实世界的数据集很少是完全线性可分的支持向量机,这使得应用之前展示的技巧变得困难。在这些情况下,支持向量机在机器学习中变得至关重要。它们是处理近似线性、可分和非线性可分数据集的强大工具,为各种场景中的分类问题提供了鲁棒的解决方案。为了在方程中容纳错误分类,我们修改了方程以允许一些点被错误分类。

我们还可以将max[f(x)]写为min[1/f(x)],通常我们会在优化问题中最小化一个成本函数;因此,我们可以反转这个函数。

(X1 - X2) = Min [ ||W|| / 2 ]
                      such that, yi(W.Transpose. X1 + B) >= 1


//为了构建软间隔方程,我们在原有方程的基础上增加了两个项,即误差项E和超参数'c'与误差项的乘积
Min [ ||W|| / 2 ] + c.  i = 1 -> n Σ E,要修改

对于所有正确分类的点,我们的误差将等于0。对于所有错误分类的点,误差(E)简单地说就是该特定点到其正确超平面的距离。这意味着,如果我们看到错误分类的绿色点,误差的值将是这些点到超平面1的距离;而对于仅分类的红色点,误差将是该点到超平面2的距离。

SVM损失=Margin损失+分类损失

Margin损失=||W||/2

分类损失=c*E

其中c是误分类点个数,E是误分类点到平面的距离

![image-221878](/Users/zhanglei/Library/Application Support/typora-user-images/image-221878.png)

我们将增加'c'以减少分类错误,但如果你希望你的间隔最大化,那么'c'的值应该最小化。这就是为什么'c'是一个超参数,我们需要找到'c'的最优值。

以上就是关于支持向量机(SVM)的全部内容,我希望这篇文章能帮助你澄清关于SVM的一些概念。

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ3361245237,本站将立刻清除。