美文网首页
《机器学习(周志华)》学习笔记(六)

《机器学习(周志华)》学习笔记(六)

作者: 红色的Ricky | 来源:发表于2016-12-17 00:42 被阅读577次

    Q:支持向量机是什么鬼?

    A:
    支持向量机不是一台“机”,而是一个算法。一般来说认为这是一个分类算法,而且分类效果极佳。


    Paste_Image.png

    以基本的二分类任务为例。给定一堆训练数据,假设每个样本只有两个属性。我们试图在坐标系中找出一条线,把不同类的样本分开来。从图中可以看出,有多条直线可以把两类样本分开。但是从直觉上就可以察觉,在两类点中间的那条线(加粗那条),是最合适的。因为这条线离两类样本的距离都适中,因此最能适应新样本,也就是说泛化能力最强。

    图中有很多样本,但真正决定这条线的位置和方向的,只有两个点,那就是每个类的点中离直线最近的点。因为它们代表了各自所在的类的边界,只有它们的变化会引起线的位置变化,所以说这两个点支持着这条线。这些样本在坐标系中表现为点,用代数表示就是向量(每个分量是对应的属性值)。这就是“支持向量机”算法名称的又来。

    Q:怎样找出支持向量机用来分类的那根线?

    A:支持向量机在样本属性只有两个的时候的任务是找一条线,在属性有三个的时候就是找一个平面。在样本属性有三个以上的时候找的是“超平面”。线、平面,都是超平面的特例,所以他们都可以用一个方程来表示:


    Paste_Image.png

    这个方程就是我们要找的超平面的代数表示。其参数w和b就是我们要确定的参数,也就是我们要学习的目标。这个超平面也可以认为是使得分类函数f(x)=0的点集:


    Paste_Image.png
    支持向量机的分类方式略有别于logit回归——logit回归是把样本值代入分类函数后得出一个0到1之间的数,根据这个数是否大于某个阀值(如0.5)来进行分类。

    支持向量机则是把样本值代入分类函数后得出一个实数,根据这个数是否大于0来分类。而且在用训练数据训练过程中,会设置约束条件,让所有样本数据的计算值在 “>1” 和 “<-1” 之间。也就是在两个类别之间留出一道间隙。

    有空间几何理论可以知道,空间中一个点到超平面的距离是


    Paste_Image.png

    因为把样本值代入分类函数后得出的计算值在 “>1” 和 “<-1” 之间,所以超平面能正确分类的前提(即约束条件)之一是


    Paste_Image.png
    那么离超平面最近的两个样本,代入分类函数后的计算值必然分别是1和-1。所以两个类之间的间隙就是这两个点到超平面的举例的和,也就是
    Paste_Image.png

    要是的支持向量机效果最好,也就是说最能适应新样本,那就意味着是的两类训练样本之间的间隙最大化,所以我们的训练的具体目标就是——

    求得参数w和b是的两类样本间的间隙最大,同时还要让各个样本代入分类函数后的计算值大于1(或小于-1)。

    Paste_Image.png
    这个最值问题的求解过程相当烧脑,用到对偶问题思想、拉格朗日乘子法、KKT条件、SMO算法等,略过。

    当我们把训练数据一个个输入支持向量机,逐渐调整参数w和b,最后得到了分类函数。这就是支持向量机的基本形式。

    Q:如果得到的训练数据在各个类别的边界处彼此混淆,不能用一个超平面划分,怎么办?

    A:
    现实中确实存在线性不可分的数据集

    Paste_Image.png
    但我们可以用线性代数中的方法将样本向量映射到一个高维空间,在更高维度的空间中我们就能找到一个划分各类的超平面了。
    Paste_Image.png
    当样本向量x映射后,超平面的方程也就变成了
    Paste_Image.png
    而训练的具体目标则变成了
    Paste_Image.png
    在计算过程中用到的原理和在线性可分的情况下基本相同,而且还需要引入“核函数”,所以详细过程略过。

    相关文章

      网友评论

          本文标题:《机器学习(周志华)》学习笔记(六)

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