支持向量机(Support Vector Machine,SVM)是一种用于分类和回归分析的监督学习算法。它属于机器学习中的一类强大而灵活的模型,广泛应用于模式识别、图像分类、自然语言处理等领域。
基本原理:
SVM的基本原理是通过找到能够有效分隔不同类别的超平面来进行分类。在二维空间中,这个超平面就是一条直线,而在更高维空间中,它是一个超平面。SVM的目标是找到这个超平面,使得距离超平面最近的训练样本点(支持向量)到超平面的距离尽可能远,这个距离被称为间隔(margin)。
支持向量:
支持向量是指离超平面最近的那些训练样本点,它们对于定义超平面和间隔至关重要。在训练过程中,SVM主要关注这些支持向量,而其他样本点对于模型的影响较小。
核函数:
SVM可以通过核函数将输入空间映射到更高维的特征空间。这允许SVM在非线性问题上进行处理,通过将非线性问题转化为高维线性问题来解决。常用的核函数包括线性核、多项式核、径向基函数(Radial Basis Function,RBF)等。
核函数是支持向量机(SVM)中的一个重要概念,它用于将输入空间映射到更高维的特征空间。这个映射使得SVM在原始的输入空间中线性不可分的问题变得在高维特征空间中线性可分。核函数的引入是为了处理非线性问题,使得SVM能够更好地适应各种数据分布。
在SVM中,核函数的作用是计算两个样本之间的相似度或内积。通过核函数,我们可以在高维空间中隐式地表示数据点,而无需显式计算数据点在高维空间中的坐标。这种技巧被称为"核技巧"(kernel trick)。
常用的核函数有几种类型:
线性核函数(Linear Kernel):
K
(
x
,
y
)
=
x
T
y
K(x, y) = x^Ty
K(x,y)=xTy
这是最简单的核函数,它表示在原始的输入空间中进行线性分类。
多项式核函数(Polynomial Kernel):
K
(
x
,
y
)
=
(
x
T
y
+
c
)
d
K(x, y) = (x^Ty + c)^d
K(x,y)=(xTy+c)d
多项式核函数引入了多项式的概念,其中 d d d是多项式的次数, c c c是一个常数。它允许SVM在原始空间中处理多项式特征。
径向基函数(Radial Basis Function,RBF)或高斯核函数(Gaussian Kernel):
K
(
x
,
y
)
=
e
?
∣
∣
x
?
y
∣
∣
2
2
σ
2
K(x, y) = e^{-\frac{||x-y||^2}{2\sigma^2}}
K(x,y)=e?2σ2∣∣x?y∣∣2?
RBF核函数是最常用的核函数之一,它通过将数据映射到无穷维的特征空间,从而适应更为复杂的非线性关系。 σ \sigma σ是控制函数宽度的参数。
sigmoid核函数(Sigmoid Kernel):
K
(
x
,
y
)
=
tanh
?
(
α
x
T
y
+
c
)
K(x, y) = \tanh(\alpha x^Ty + c)
K(x,y)=tanh(αxTy+c)
Sigmoid核函数也是一种常见的核函数,它通过类似于神经网络的激活函数(双曲正切函数)来进行非线性映射。
选择合适的核函数通常依赖于具体问题的性质和数据的分布。在实践中,RBF核函数是默认选择,因为它在很多情况下表现良好。核函数的选择也可能受到调参的影响,因为核函数参数的不同取值可能导致模型性能的差异。
软间隔和硬间隔:
在实际应用中,数据可能不是线性可分的,或者存在噪音。为了处理这些情况,SVM引入了软间隔,允许一些样本点出现在间隔内。这就是软间隔支持向量机,相对于严格线性可分的硬间隔支持向量机。
应用:
SVM在许多领域都有广泛的应用,包括文本分类、图像识别、生物信息学、金融预测等。由于其强大的泛化性能和对高维数据的适应能力,SVM在实际问题中取得了很好的效果。
总体而言,SVM是一种强大而灵活的机器学习算法,特别适用于处理复杂的非线性问题。
Question:
Q1:能够画出多少条线对样本点进行区分?
答:线是有无数条可以画的,区别就在于效果好不好,每条线都可以叫做一个划分超平面。比如上面的绿线就不好,蓝线还凑合,红线看起来就比较好。我们所希望找到的这条效果最好的线就是具有 “最大间隔的划分超平面”。
Q2:为什么要叫作“超平面”呢?
答:因为样本的特征很可能是高维的,此时样本空间的划分就不是一条线了。
Q3:画线的标准是什么?什么才叫这条线的效果好?哪里好?
答:SVM 将会寻找可以区分两个类别并且能使间隔(margin)最大的划分超平面。比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果最鲁棒、对未见示例的泛化能力最强。
Q4:间隔(margin)是什么?
答:对于任意一个超平面,其两侧数据点都距离它有一个最小距离(垂直距离),这两个最小距离的和就是间隔。比如下图中两条虚线构成的带状区域就是 margin,虚线是由距离中央实线最近的两个点所确定出来的(也就是由支持向量决定)。但此时 margin 比较小,如果用第二种方式画,margin 明显变大也更接近我们的目标。