美文网首页
支持向量机

支持向量机

作者: 此间不留白 | 来源:发表于2019-03-01 21:31 被阅读0次

前言

支持向量机(support Vector Machine)是一种更加强大的算法,广泛应用于学术界和工业界,与之前的学习过的机器学习算法相比较,支持向量机(以下简称SVM)为处理非线性问题提供了一种更加强大的方法。

优化目标

在之前的学习中,我们已经详细了解了逻辑回归的相关知识,其损失函数的数学公式可以用以下公式表示:
Cost(h_\theta(x),y) =\begin{cases} -log(h_\theta(x)) \ \ \ \ \ \ \ \ \ if\ \ \ \ y=1 \ \\-log(1-h_\theta(x)) \ \ if \ \ \ y=0 \end{cases}

其中h_\theta(x) = \frac{1}{1+e^-{\theta^Tx}}

当以z = -\theta^Tx=1 \ or\ -1为分界点,其图像可以用以下方式近似表示:

SVM的假设函数可以用如下公式表示:


其中 cost_1 = -log(h_\theta(x^{(i)})), cost_0 = (1-log(h_\theta(x^{(i)})))

大间隔分类器的数学原理

  • 大间隔分类器
    大间隔分类器就是以最大间隔划分正样本和负样本,使得样本距离分割线具有最大的距离。通过分析图像,可以得到以下结果:
    z \geq1时,y=0, z \leq -1时,y=0,即也就是使y=0z有很大区间。

  • 数学原理

    • 向量内积
      为了了解大间隔分类器的数学原理,有必要了解向量内积的计算方式,如下所示,有如下两个向量:


期内积可以表示为z = u^Tv,其模值可以表示为\left \| z\right \| = \sqrt{u^2+v^2},用几何法可以如下表示:

其含义表示向量vu上的投影p乘以u的模值,即\left \| p \right \|·u = u_1v_1+u_2v_2.

  • SVM决策边界
    对于\frac{1}{2}\sum_{j=1}^{n}\theta_j^{2}而言,假设n=2
    则有\frac{1}{2}\sum_{j=1}^{n}\theta_j^{2} = \frac{1}{2}{(\sqrt{\theta_1^2+\theta_2^2}\ )}^2 =\frac{1}{2} \left \| \theta \right \|,
    对于SVM假设函数有
    \theta^Tx \geq 1,y=0
    \theta^Tx <1,y=1, 可以有以下表示:
    p^{(i)}·\left \| \theta \right \| \geq1 \ \ if \ \ y^{(i)} = 1
    p^{(i)}·\left \| \theta \right \| \leq-1 \ \ if \ \ y^{(i)} = 1
    通过以上方式,将问题简化为向量内积即也就是向量投影的形式,寻找合适的决策边界。示意图如下图所示:

核函数

  • 高斯核函数的引入
    在之前的学习中,我们已经知道,对于非线性分类器,可以采用多项式的形式假设函数,另一种方法是采用核函数的方式,具体介绍如下:
    对于给定的变量x,有如下图所示的三个标记,l^{(1)},l^{(2)},l^{(3)},


    f表示变量x与标记l的相似度,其计算方式如下所示;
    f_1 =similarity(x,l^{(1)}) =exp(-\frac{{\left \| x-l^{(1)} \right \|}^2}{2\sigma^2 })
    f_2 =similarity(x,l^{(2)}) =exp(-\frac{{\left \| x-l^{(2)} \right \|}^2}{2\sigma^2 })
    f_3 =similarity(x,l^{(3)}) =exp(-\frac{{\left \| x-l^{(3)} \right \|}^2}{2\sigma^2 })
    以上公式中exp()函数称之为核函数,本次使用的函数也称之为高斯核函数,通常用k(x,l)表示。
    对于以上给出的高斯核函数,假设x \approx l,可以计算出f\approx exp(0) =1,相反,如果x >> l(xl之间的距离非常远)则有f \approx exp(-\infty)= 0.
    通过以上方法,对于给定的变量x,可以得到新的特征f,其假设函数可以写成以下形式:
    \begin{cases} \theta_0 + \theta_1f_1 + \theta_2f_2 + \theta_3f_3 \geq 0, \ \ y=1\\ \theta_0 + \theta_1f_1 + \theta_2f_2 + \theta_3f_3 < 0, \ \ y=0 \end{cases}
    显然,通过上述表达式,可以将复杂的非线性分类问题加以简化处理。
  • 核函数的使用
    以上,介绍了核函数的相关原理,选择合适的标记点l非常重要,在实际的应用中,通常选择训练样本点作为标记l,则对于每一个训练样本都可以通过高斯核函数得到一组特征向量f,对于每一个训练样本(x^{(i)},y^{(i)})都有如下的特征向量f^{(i)}:

f^{(i)}= \begin{bmatrix}f^{(i)}_0\\f^{(i)}_1\\f^{(i)}_2\\ \vdots \\ f^{(i)}_m \\ \end{bmatrix}
其中,f^{(i)}_0 =1,且f \in R^{m+1}
通过核函数的方法,对于SVM的假设函数可以写成如下形式
minC\sum_{i=1}^{m} [y^{(i)}cost_1(\theta^Tf^{(i)})+(1-y^{(i)})cost_0(\theta^Tf^{(i)})] +\frac{1}{2}\sum_{j=1}^{n}\theta_j^2

  • 高斯核函数的参数选择
    对于SVM训练函数,参数C(=\frac{1}{\lambda})较大时:低偏差,高方差
    而较小时会导致,高偏差,低方差。
    对于核函数的参数\sigma^2较大时,如下图像所示,会使得特征f_i的变化更加平滑,会导致高偏差和低方差。

    而参数\sigma^2较小时,曲线变化更加陡峭,造成高方差和低的偏差。

选择合适的分类算法

对于分类算法,我们已经学习了逻辑回归算法和SVM算法,对于一个具体的分类问题,用n表示其特征数量,m表示训练样本的数目,其算法选择可以遵循以下原则:
n>>m:采用逻辑回归算法或者线性核函数的SVM算法(或者没有核函数的SVM算法)。
m较小,而n大小适中时,采用高斯核函数的SVM算法。
n<<m:手动的创建更多的特征,采用逻辑回归算法或者不带核函数的SVM算法。

注意:神经网络适用以上任何一种形式,但是其花费的训练时间更长。

相关文章

网友评论

      本文标题:支持向量机

      本文链接:https://www.haomeiwen.com/subject/jtwkuqtx.html