你知道支持向量机(SVM)是什么意思吗?

2024-05-20 06:15

1. 你知道支持向量机(SVM)是什么意思吗?

超级通俗的解释:支持向量机是用来解决分类问题的。先考虑最简单的情况,豌豆和米粒,用晒子很快可以分开,小颗粒漏下去,大颗粒保留。用一个函数来表示就是当直径d大于某个值D,就判定为豌豆,小于某个值就是米粒。d>D, 豌豆d<D,米粒在数轴上就是在d左边就是米粒,右边就是绿豆,这是一维的情况。但是实际问题没这么简单,考虑的问题不单单是尺寸,一个花的两个品种,怎么分类,假设决定他们分类的有两个属性,花瓣尺寸和颜色。单独用一个属性来分类,像刚才分米粒那样,就不行了。这个时候我们设置两个值尺寸x和颜色y.我们把所有的数据都丢到x-y平面上作为点,按道理如果只有这两个属性决定了两个品种,数据肯定会按两类聚集在这个二维平面上。

你知道支持向量机(SVM)是什么意思吗?

2. 支持向量机(SVM)

  参考Jerrylead 和 july-支持向量机通俗导论 
   再回忆一下逻辑回归:Logistic回归目的是从特征学习出一个0/1分类模型,而 这个模型是将特征的线性组合作为自变量 ,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数) 将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率 。
                                           中间那条线是θ T x=0,logistic回归强调 所有点 尽可能地远离中间那条线。学习出的结果也就中间那条线。   但是:   考虑上面3个点A、B和C。从图中我们可以确定A是×类别的, 然而C我们是不太确定的 ,B还算能够确定。这样我们可以得出结论, 我们更应该关心靠近中间分割线的点,让他们尽可能地远离中间线,而不是在所有点上达到最优(引出了下面的函数间隔与几何间隔) 。
   我想这就是支持向量机的思路和logistic回归的不同点:   支持向量机考虑局部(不关心已经确定远离的点),   逻辑回归一个考虑全局(已经远离的点可能通过调整中间线使其能够更加远离,但是也可能使一部分点靠近中间线来换取另外一部分点更加远离中间线。)
   上面已经知道,θ T x=0是分类的线,在svm中,只考虑局部,只考虑θ T x的正负问题,而不用关心g(z)。因此,在这里,用w T x+b代替θ T x,并 对g(z)做一个简化 ,将其简单映射到类别标签y=1和y=-1上。
                                           这里的y取值为1和-1(在svm中,只考虑局部,只考虑θ T x的正负问题),是为了方便定义:在分类正确的情况下,函数间隔(确信度 )的大小
   比如,在分类正确的情况下,y等于1,wx+b应该为正数越大,则情况越好,是正例的确定度就越大。就如上图的A点。y等于-1,wx+b应该为负数越大,则情况越好是负例的确信度就越大。
   所以, 函数间隔越大,说明分类正确的置信度越大。函数间隔越小 ,比如上图c点,说明越不能确定c点属于哪一类。 
   可以为 别的值,只是为了方便。这一点在参考的第二个博客上也已经说明了。
   由上面解释,已知可以用y(wT x + b) 的正负性来判定(或表示)分类的正确性。
   定义函数间隔如下:
                                           也就是,这个样本点x与超平面之间的间隔(但是现在有些不准确,所以有下面的几何间隔)。
                                           此时,若根据SVM的思想,最大化这个间隔,就能提高分类正确的确信度了吗?
   答案是否定的,因为,如果成比例的改变w 和b(如将它们改成2w 和2b),则函数间隔的值f(x) 却变成了原来的2 倍( 虽然函数值增大了,达到了目标,但是此时超平面没有改变 ),所以只有函数间隔还远远不够。
    我们真正关心的,其实是“几何上”的点到平面的距离,于是可以用几何知识推理出来的几何间隔。 而不是一开始人们想当然定义的函数间隔。
   事实上,我们可以对法向量w 加些约束条件( 这就是调优问题的思考了 ),从而引出真正定义点到超平面的距离——几何间隔(geometrical margin)的概念。
                                           又因为x 0 是超平面w T x + b=0上的点,利用向量之间的运算
                                                                                   再令上式乘上对应的类别y,即可得出几何间隔
                                           从上述函数间隔和几何间隔的定义可以看出:几何间隔就是函数间隔除以∥w∥,而 函数间隔实际上就是,只是人为定义的一个间隔度量,而几何间隔才是直观上的点到超平面的距离。 
   接下来就是我们的目标:寻找一个超平面, 使得离超平面比较近的点能有更大的间距。 也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面能够让所有点中离它最近的点具有最大间距。也就是找到最大的几何间隔。
                                           由上一小节可以知道,我们这里要找的最大间隔分类超平面中的“间隔”指的是几何间隔。
                                           上面两个式子的意思是( 注意,函数间距上面是折线,几何间距上面是波浪线 ):   最大化几何间隔   约束条件是,每个样例的函数间隔都要大于全局的那一个函数间隔(也就是所有训练集里的最小的那个)
   用函数间隔表示几何间隔
                                           于是得到了这个式子:
                                           然而这个时候目标函数不是凸函数,约束条件也不是线性的,没法直接代入优化软件里计算。我们还要改写。前面说到 同时扩大w和b对结果没有影响 ,因此,我们将全局的函数间隔值定义为1。于是,上述的函数转变成了
                                           由于求1/||w||的最大值,相当于求||w||²的最小值,因此结果为:
                                           因为现在的 目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题 。这个问题可以用现成的QP (Quadratic Programming) 5优化包进行求解。一言以蔽之:在一定的约束条件下,目标最优,损失最小。
    根据前面几个文章的话,SVM作为判别模型,它的的模型,就是  w T x i  + b 。参数就是w和b。学习完参数以后,新来的样例作为x i ,得到结果大于1,说明在超平面上面,所以是正例。反之亦然。 
    根据SVM的思想,SVM的初步目标函数,就是所有样例的几何间隔尽可能的大 
    至此,得到了SVM的目标函数,算是初步解决了SVM的这个问题,用优化包求解得到wb,即可得到具有最大几何间距的超平面,提高分类每个点的确信度,分类目标完成。 
   接下来介绍的是手工求解w和b的方法了,一种更优的求解方法。
                                           从上可以看出 ,就同时扩大w和b就相当于等式两边同时除以函数间隔 γ,而新的w和b仍然是旧的wb的函数,所以最大化仍然可以进行。
    效果等价于,令函数间隔γ=1,综上所述,零γ=1是合理的,而且也方便了原优化问题的计算 。
   由拉格朗日对偶(线性可分条件下SVM的对偶算法)引入核函数(非线性可分条件下SVM的算法)
   上一篇说到,得到了 如下的线性可分的SVM的目标函数 ,可以利用优化包进行求解。
                                           此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量(dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法。
    引入对偶的优点: 
   因为 引入拉格朗日算子可以求出极值。 (参考最优化方法的解释)
   这种极值问题怎么求
                                           首先,同样定义拉格朗日公式,希望可以利用拉格朗日算子法求得最优解,得到:
                                           但是,出现问题了,此时加入的约束条件g已经不再等于0了,所以,此时可以调整算子alpha变成很大很大的 值,使结果负无穷, 这显然是不合理的。 
   所以,我们需要 排除在满足条件下,也会无解的情况。 
   因此,我们定义下面的函数
                                           要看这个函数有什么优点,就要看看这个函数相比于L(ω,α,b)有什么变化: 加了max,加了α I 大于等于零。 
   所以,当g和h不满足约束时,总可以调整α i 和β i 来使thetap具最大值为正无穷。
   只有当g和h满足约束时,此时g<0,我们可以调整α i 和β i (使α i 等于0,β i 任意),得到最大值,即θ p =f(w)。
   于是函数等价于这样
                                           于是原来的极值问题min f(w)  就等价于求min θ p 了,   即:
                                           也就是说,最小化 θ p ,就是为了得到最小的 f(w),而能有f(w)就说明了满足约束条件。所以这个等价于原来的极值问题。
   至此, 相比于拉格朗日公式L(ω,α,b),现在即加入了拉格朗日算子,又排除了纯粹的拉格朗日公式中出现无穷的情况。 
   但是,又出现了新的问题,也就是,如果直接求解,首先面对的就是两个参数(最里面的是max,这个max问题有两个参数),而且alpha也是不等式约束,再在w上求最小值,这个过程并不容易做。那么应该怎么办呢?
    在最优化课程里,当遇到不好解的优化问题时,可以转化为原问题的对偶问题试试。    此处,d代表对偶。D--dual
   我们定义函数
                                           θ D  将问题转化为先求L(ω,α,b)关于 ω 的最小值(此时α和β是固定值),之后再求θ D  的最大值。 上来面对的是一个参数,相对简单些。 
   相对于原问题,更换了min和max的顺序,得到了它的对偶问题。
                                            --------------------------------------------------------------------------------------------------------------    一般的更换顺序的结果是MaxMin(X) <= MinMax(X)。也就是,此时有
                                           对偶问题已经表示出来了,这个对偶问题也相对原问题好求,那么,这两个问题等价吗?或者说,对偶问题的解是不是原问题的解呢?
   需要用KKT条件来判断了。
    对于拉格朗日算子的深入理解可以看看《最优化方法》,讲义的最后一页。 
   含有不等式约束的问题,常常 用KKT条件求得候选最优解 
   对于一般化的拉格朗日公式:
                                           最优值 w 必须满足以下三个条件:
   ----------1、L对 w 求导为零   ----------2、h(w)=0   ----------3、α i g i =0 ,i = 1,...,k
   注意此时
                                            第三个条件表明了KKT的思想:极值会在可行域边界取得。 ----解释:   -----对于一个特定的自变量w1,当自变量w1在 第 i 个 可行域边界(g i (w1)=0)时,说明此时这个约束是起到了作用的。 这个约束是w1被g i 约束了。此时只能到g i 的平面上(即边界),再多就出界了。。。 而对于最优解来说,就是f(w)达到最优,所以L中,除了f(w)部分,其余应该都等于0,所以此时α>0(或许等于零也可以?疑问)
   ----而此时,w1在其他的约束条件g 非i 下,有g 非i (w1)<0),说明W1可以随意些,说明此时这个约束并没有起到作用,但是作为最优解,为了 除了f(w)部分,其余应该都等于0 ,所以其系数α应该等于零。
    ---------------------------------------------------------------------------------------- 
    注意:这个是传统最优化问题的一般式,这个问题有k个不等式约束方程,所有的点都要满足这k个不等式约束。 。假设有一百个样本点,只有有三个极值N1,N2,N3,那么说明其余97个点带入这k个方程中去都会小于零。  另外对于这三个极值点,可能会有g i (N1) = 0,除了第i个g以外,g(N1)都小于0 。然后对于极值N2,g j (N2)=0,除了第j个约束以外,其余的g(N2)都小于0。
    而本节一开始讨论的问题,只有一个约束方程(因为参数只有w和b)即:y(w T x+b)>=1,所有的点(一共m个)都要满足这个约束方程。 而关于为什么非支持向量的系数alpha会等于零呢?也就是相当于前面的,k=1(有k个约束条件)的情况下,m个样本点中,非支持向量的约束g<0,为了最优解,除了f(w)应该都等于零,所以alpha应该等于零。
   另外可以参考这段话:
                                           即,若d* = p*   x * 满足KKT条件
   由上面那句话可以知道,
   折腾这么长时间,也就是为了说明,已经知道原问题
                                           是凸优化问题,所以,只要对偶问题的自变量w满足了KKT条件,那么它就是对偶问题的最优解w * ,同时也是原问题的最优解了。
   所以,由上可知,只要解出了2.1.3中的问题的参数w和b,也就是原问题的解了。
   重新回到SVM的优化问题(其中每个约束式实际就是一个训练样本):
                                           我们将约束条件改写为拉格朗日的形式:
                                           由KKT条件可知,只有当函数间隔是1(g=0)的时候,α i >0。此时,这个样例 w i  在约束平面上受到约束 。对于其它的不在线上的样例点(g<0),极值不会在其范围内去的,所以这些样例点前面的系数α i =0.
                                           实线是最大间隔超平面,假设×号的是正例,圆圈的是负例。在虚线上的点就是函数间隔是1的点,他们前面的系数α i >0, 这三个点被称作 支持向量。 
   由上面问题,构造拉格朗日函数如下(没有等式约束,所以没有β):
                                            ———————————————————————————————— 
   下面我们按照对偶问题的求解步骤来一步步进行,由2.1.3可知,对偶问题的形式为:
                                           首先求解L的最小值(最里面的先求),此时αi是固定的,L的最小值只与w和b有关。对w和b分别求偏导数。
                                           得到
                                           将上式带回到拉格朗日函数中得到,此时得到的是该函数的最小值(目标函数是凸函数), 即里面的min L已经求出,接下来就是求max了    代入后,化简过程如下:
                                           最后得到
                                           由于最后一项是0,因此简化为
                                           这里,上式中左右边的向量内积,用方括号表示。
   到这一步,拉格朗日函数只包含了一个变量α i 。接着进行下一步 ,最大化的过程,求得α i 。
                                           假设求得了α i  就能根据求导得到的结果
                                           求得w,然后就能得到b。
                                           b 就是  距离超平面最近的正的函数间隔要等于离超平面最近的负的函数间隔。  (其实,由前面的那个x和圈的图,可以认为b就是截距,这个截距b等于上下两条虚线的截距的平均值。)
    注意,这里的w,b,alpha都是 向量,都是m维的向量 
   至于这里的α怎么求得,即上面的最大化问题怎么求解,将留给下一篇中的SMO算法来阐明。
   也就是说,手动解的话,还是需要利用SMO算法,求得α才行。
    ———————————————————————————————— 
   这里考虑另外一个问题,由于前面求解中得到
                                           用α i 代替w带入判别模型w T x+b,得到:
                                           也就是说, 利用判别模型对新来样本进行判别时 ,以前新来的要分类的样本首先根据w和b做一次线性运算,然后看求的结果是大于1还是小于1来判断正例还是负例。大于1,说明在超平面的上面,说明是正例。同理,小于1说明在超平面的下面,说明是负例。
    约束条件是wx+b-1小于等于零,所以判断就是wx+b与1进行大小比较 
    现在有了alpha,不需要求出w (那b呢,b怎么求呢,前面已经解释,b是由离超平面最近的间隔和负的函数间隔相等。。。得到的。所以,将新来的样本与训练数据中 支持向量 做内积以后,再确定最大的正数函数间隔以及最小的负数函数间隔,即可。)
    就冲上面这段话,支持向量的系数alpha,也不能等于0。 
   另外,那有人会说,与前面所有的样本都做运算是不是太耗时了?其实不然,我们从KKT条件中得到,只有支持向量的α i >0 (不等于零)其他情况α i 是等于零的。 比如,像前面那个x和圈的图,新来的样本只需要和三个支持向量做运算即可 。
    由此可以看到,求出α i 以后,只需要利用支持向量,就可以来判断新来的样例是正例还是负例了。也许这也是是为什么叫支持向量机吧。 
                                           上面这个公式,为下面要提到的核函数(kernel)做了很好的铺垫。
   下面,先把没求得的alpha放一放,趁着刚刚得到的这个公式的热乎劲,再去看看核函数。

3. 支持向量机(SVM)

        支持向量机(support vector machine),故一般简称SVM,通俗来讲,它是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,这族分类器的特点是他们能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器。其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。SVM在很多诸如文本分类,图像分类,生物序列分析和生物数据挖掘,手写字符识别等领域有很多的应用。
  
         支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。
  
         假设给定一些分属于两类的2维点,这些点可以通过直线分割, 我们要找到一条最优的分割线,如何来界定一个超平面是不是最优的呢?
  
         如图:
                                          
         在上面的图中,a和b都可以作为分类超平面,但最优超平面只有一个,最优分类平面使间隔最大化。 那是不是某条直线比其他的更加合适呢? 我们可以凭直觉来定义一条评价直线好坏的标准:
  
         距离样本太近的直线不是最优的,因为这样的直线对噪声敏感度高,泛化性较差。 因此我们的目标是找到一条直线(图中的最优超平面),离所有点的距离最远。 由此, SVM算法的实质是找出一个能够将某个值最大化的超平面,这个值就是超平面离所有训练样本的最小距离。这个最小距离用SVM术语来说叫做间隔(margin) 。
  
         描述:给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为( wT中的T代表转置):
                                          
         例如:现在有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的y全是-1 ,另一边所对应的y全是1。
                                          
         我们令分类函数为:
                                          
         当f(x) 等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点,如下图所示:
                                          
         一个点距离超平面的远近可以表示分类预测的确信或准确程度,如何确定这个超平面呢?从直观上而言,这个超平面应该是最适合分开两类数据的直线。而判定“最适合”的标准就是这条直线离直线两边的数据的间隔最大。所以,得寻找有着最大间隔的超平面。
                                                                                                                                                                                                                                                  
 补充知识点: 点到平面的距离 
                                          
          支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面.。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为硬间隔最大化。
  
         间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
  
       按照我们前面的分析,对一个数据点进行分类,  当它的margin越大的时候,分类的confidence越大。  对于一个包含n个点的数据集,我们可以很自然地定义它的margin为所有这n个点的margin值中最小的那个。于是,为了使得分类的confidence高,我们希望所选择的超平面hyper plane能够最大化这个margin值。让所选择的超平面能够最大化这个“间隔”值,这个间隔就是下图中的Gap的一半:
                                                                                  
  为什么用几何间隔求最大的分离超平面而不用函数间隔? 
                                                                                                                                                                  
  例题: 
                                                                                                                          
 我们构造了约束最优化问题,就是下面这个:
                                          
         此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
  
 补充知识点: 拉格朗日乘子法学习 
  
                      拉格朗日KKT条件 
  
                      KKT条件介绍 
  
                      拉格朗日对偶 
  
          通过给每一个约束条件加上一个拉格朗日乘子(Lagrange multiplier)α,定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题):
                                                                                  
  求解这个式子的过程需要拉格朗日对偶性的相关知识。
                                                                                                                                                                                                                                                  
  例题: 
                                          
          接下来谈谈线性不可分的情况,因为 线性可分这种假设实在是太有局限性 了。下图就是一个典型的线性不可分的分类图,我们没有办法用一条直线去将其分成两个区域,每个区域只包含一种颜色的点。
                                          
          要想在这种情况下的分类器,有两种方式, 一种是用曲线 去将其完全分开,曲线就是一种 非线性 的情况,跟之后将谈到的 核函数 有一定的关系:
                                          
          另外一种还是用直线,不过不用去保证可分性 ,就是包容那些分错的情况,不过我们得加入惩罚函数,使得点分错的情况越合理越好。其实在很多时候,不是在训练的时候分类函数越完美越好,因为训练函数中有些数据本来就是噪声,可能就是在人工加上分类标签的时候加错了,如果我们在训练(学习)的时候把这些错误的点学习到了,那么模型在下次碰到这些错误情况的时候就难免出错了。这种学习的时候学到了“噪声”的过程就是一个过拟合(over-fitting),这在机器学习中是一个大忌。
  
 我们可以为分错的点加上一点惩罚,对一个分错的点的 惩罚函数 就是 这个点到其正确位置的距离: 
                                                                                                                                                                                                                                                                                                                                                                          
          对于线性不可分的情况,我们可以用核函数让空间从原本的线性空间变成一个更高维的空间 , 在这个高维的线性空间下,再用一个超平面进行划分 。 这儿举个例子,来理解一下如何利用空间的维度变得更高来帮助我们分类的: 
                                          
         上图是一个线性不可分的图,当我们把这两个类似于椭圆形的点映射到一个高维空间后,映射函数为:
                                          
         用这个函数可以将上图的平面中的点映射到一个三维空间(z1,z2,z3),并且对映射后的坐标加以旋转之后就可以得到一个线性可分的点集了。
                                          
         形象说明:例如世界上本来没有两个完全一样的物体,对于所有的两个物体,我们可以通过增加维度来让他们最终有所区别,比如说两本书,从(颜色,内容)两个维度来说,可能是一样的,我们可以加上作者这个维度,是在不行我们还可以加入页码,可以加入拥有者,可以加入购买地点,可以加入笔记内容等等。当维度增加到无限维的时候,一定可以让任意的两个物体可分了。
  
  核函数定义: 
                                                                                  
  核技巧在支持向量机中的应用: 
                                                                                  
  常用核函数: 
                                          
  非线性支持向量机学习算法: 
                                          
         支持向量机的学习问题可以形式化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。所以,如何高效地实现支持向量机学习就成为一一个重要的问题。目前人们已提出许多快速实现算法.本节讲述其中的序列最小最优化(sequential minimal optimization, SMO)算法。
                                          
         上述问题是要求解N个参数(α1,α2,α3,...,αN),其他参数均为已知,序列最小最优化算法(SMO)可以高效的求解上述SVM问题,它把原始求解N个参数二次规划问题分解成很多个子二次规划问题分别求解,每个子问题只需要求解2个参数,方法类似于坐标上升,节省时间成本和降低了内存需求。每次启发式选择两个变量进行优化,不断循环,直到达到函数最优值。
  
         整个SMO算法包括两部分,求解两个变量的 二次规划 问题和选择这两个变量的 启发式 方法。
                                                                                                                                                                                                                                                                                                                                  
  上面求得的(α1)new和(α2)new是在η>0的情况下求得的:
                                          
         当时为了推导公式我们直接默认它是大于0了,现在我们需要重新审视这一项(η)。这一项是原来关于的二次项的系数。我们可以分下面三种情况讨论:
                                          
  (1)当η>0时 :这个二次函数开口向上,所以要求这个二次函数的最小值,如果说极值点不在计算出的可行域的范围内,就要根据这个极值点和可行域边界值的关系来得到取最小值的地方:
  
 ①如果这个极值点在可行域左边,那么我们可以得到这个可行域内二次函数一定在单增,所以此时L应该是那个取最小值的地方。就如大括号的第三种情况。
  
 ②如果这个极值点在可行域右边,那么此时可行域内一定单减,所以此时H就是那个取最小值的地方,就是大括号里的第一种情况。
  
  (2)当η=0时: 这个二次函数就变成了一个一次函数,那么不管这个一次函数的单调性怎样,最小值一定是在边界处取到。所以到时候计算可行域的两个边界的值,看哪个小就用哪个。
  
  (3)当η<0时: 这个二次函数开口向下,那么此时怎么得到取最小值的点呢?很容易就能想到:最小值也是在可行域的边界处取到。很容易理解,此时开口向下,当极值点在区间内时,最小值只能在端点处取,因为极值点处是最大的。而当极值点在区间外时,区间内一定是单调的,此时最小值也只能在端点处取。通过计算比较边界处的目标函数值,哪个小取哪个。
  
 通过以上判断求出(α2)new以后,再根据公式求出(α1)new,然后带入目标函数(1)中。即如下过程:
                                          
         上述分析是在从N个变量中已经选出两个变量进行优化的方法,下面分析如何高效地选择两个变量进行优化,使得目标函数下降的最快。

支持向量机(SVM)

4. 你知道支持向量机(SVM)是什么意思吗

SVM - support vector machine, 俗称支持向量机,为一种supervised learning算法,属于classification的范畴。在数据挖掘的应用中,与unsupervised的Clustering相对应和区别。广泛应用于机器学习(Machine Learning), 计算机视觉(Computer Vision) 和数据挖掘(Data Mining)当中。假设我们要通过三八线把实心圈和空心圈分成两类。那么有无数多条线可以完成这个任务。在SVM中,我们寻找一条最优的分界线使得它到两边的margin都最大。在这种情况下边缘加粗的几个数据点就叫做support vector,这也是这个分类算法名字的来源。We got a bunch of data points in a n- dimensional to infinite-dimensional space, Then one can always find a optimal hyperplane which is always in the n-1 dimension. 我举个例子吧,当你给SVM一段文本,比如“这款手机屏幕很大,我很喜欢”,你想知道这个文本的情感倾向是积极的还是消极的,你把这个文本扔给SVM分类器,SVM会告诉你说它的情感是积极的。但是现在我们多了一个选项,“中立”。

5. 什么是支持向量机,SVM与LR的区别?

支持向量机为一个二分类模型,它的基本模型定义为特征空间上的间隔最大的线性分类器。而它的学习策略为最大化分类间隔,最终可转化为凸二次规划问题求解。
LR是参数模型,SVM为非参数模型。LR采用的损失函数为logisticalloss,而SVM采用的是hingeloss。在学习分类器的时候,SVM只考虑与分类最相关的少数支持向量点。LR的模型相对简单,在进行大规模线性分类时比较方便。

什么是支持向量机,SVM与LR的区别?

6. 什么是支持向量机?

什么是支持向量机?支持向量机基本概念 
SVM算法是一种学习机制,是由Vapnik提出的旨在改善传统神经网络学习方法的理论弱点,最先从最优分类面问题提出了支持向量机网络。SVM学习算法根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折中,以期获得最好的泛化能力。SVM在形式上类似于多层前向网络,而且已被应用于模式识别、回归分析、数据挖掘等方面。
支持向量机这些特点是其他学习算法(如人工神经网络)所不及的。对于分类问题,单层前向网络可解决线性分类问题,多层前向网络可解决非线性分类问题。但这些网络仅仅能够解决问题,并不能保证得到的分类器是最优的;而基于统计学习理论的支持向量机方法能够从理论上实现对不同类别间的最优分类,通过寻找最坏的向量,即支持向量,达到最好的泛化能力。
SVM总的来说可以分为线性SVM和非线性SVM两类。线性SVM是以样本间的欧氏距离大小为依据来决定划分的结构的。非线性的SVM中以卷积核函数代替内积后,相当于定义了一种广义的趾离,以这种广义距离作为划分依据。
模糊支持向量机有两种理解:一种是针对多定义样本或漏分样本进行模糊后处理;另一种是在训练过程中引入模糊因子作用。
SVM在量化投资中的应用主要是进行金融时序数列的预测。根据基于支持向量机的时间序列预测模型,先由训练样本对模型进行训练和完备,然后将时间序列数据进行预测并输出预测结果。
本章介绍的第一个案例是一种基于最小二乘法的支持向最机的复杂金融数据时间序列预测方法,大大提高了求解问题的速度和收敛精度。相比于神经网络预测方法,该方法在大批量金融数据时间序列预测的训练时间、训练次数和预测误差上都有了明显提高,对复杂金融时间序列具有较好的预测效果。
第二个案例是利用SVM进行大盘拐点判断,由于使用单一技术指标对股价反转点进行预测存在较大的误差,所以使用多个技术指标组合进行相互验证就显得特别必要。SVM由于采用了结构风险最小化原则,能够较好地解决小样本非线性和高维数问题,因此通过构造一个包含多个技术指标组合的反转点判断向最,并使用SVM对技术指标组合向量进行数据挖掘,可以得到更加准确的股价反转点预测模型。
 
支持向量机基本概念
SVM算法是一种学习机制,是由Vapnik提出的旨在改善传统神经网络学习方法的理论弱点,最先从最优分类面问题提出了支持向量机网络。
SVM学习算法根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折中,以期获得最好的泛化能力。SVM在形式上类似于多层前向网络,而且己被应用于模式识别、回归分析、数据挖掘等方面。支持向量机方法能够克服多层前向网络的固有缺陷,它有以下几个优点:
(1)它是针对有限样本情况的。根据结构风险最小化原则,尽量提高学习机的泛化能力,即由有限的训练样本得到小的误差,能够保证对独立的测试集仍保持小的误差,其目标是得到现有信息下的最优解,而不仅仅是样本数趋于无穷大时的最优值。
(2)算法最终将转化成一个二次型寻优问题,从理论上说,得到的将是全局最优点。
(3)算法将实际问题通过非线性变换转换到高维的特征空间,在高维空间中构造线性判别函数来实现原空间中的非线性判别函数,这一特殊的性质能保证机器有较好的泛化能力,同时它巧妙地解决了维数灾难问题,使得其算法复杂度与样本维数无关。

7. 支持向量机SVM(3)核函数、非线性支持向量机

 前面已经分别介绍了基于硬间隔最大化的线性可分支持向量机、基于软间隔最大化的线性支持向量机,这次来总结下使用核函数来解决非线性可分问题的非线性支持向量机。
   对于非线性可分问题,我们本着简化问题的思想,自然是希望将其转化为熟悉的线性可分问题进行处理,那么怎么做呢?对于一个在样本的原始空间中不是线性可分的数据,如下左图中的红色样本点和蓝色样本点,如果想要进行分类的话,可以将数据映射到更高维的特征空间中,如果映射的合适的话,就能找到一个超平面将数据分类,如下右图所示:
                                           这种做法是特例还是可以普遍使用的呢?《机器学习》书上说:
   不过书上并没有解释原因,我们先从低维直观的理解一下,如下图所示:在一维线性不可分的数据,可以映射成在二维线性可分的,在二维线性不可分的数据,可以映射成在三维线性可分的:
                                           在更高的维度也适用吗?实际上,这个论点在理论上是有证明的,即 Cover定理 ,Cover定理可以理解为:当空间的维数D越大时,在该空间的N个数据点间的线性可分的概率就越大。如果固定数据的数量N,维度D小于数据数量N时,特征空间维度越高,越有可能使数据线性可分;在维度超过数据数量时,数据一定线性可分(试想如果我们把每个数据点都映射到不同的坐标轴上,那么可不就是线性可分的了么)。
   因此,我们对非线性可分的数据,可以将数据映射至高维空间,然后再用我们熟悉的线性分类器来分类,至此,剩下的问题就是怎么映射呢?这就需要核函数登场了。
   核函数是一个广泛使用的技术,事实上它比支持向量机出现的更早,它可以将一个空间的向量映射到另一个空间,刚好符合我们解决非线性可分问题的需求, 核函数定义 :
   核函数的一大优势就是,它通过定义函数  来隐式的定义映射  ,一般来说,直接计算函数  是比较容易的,因为它是在原始低维度进行的,而通过  计算是很困难的,因为  是高维的,甚至是无穷维的。
   既然核函数这么棒,那怎么获得一个核函数呢?或者说怎么判断一个函数是不是核函数?通常我们所说的核函数都是正定核函数, 正定核函数的充要条件: 
   有了这个定义,理论上我们可以构造出核函数,不过对非常困难,因为要保证任意输入的Gram矩阵都要是半正定矩阵,所以在实际使用中,我们一般使用前辈们总结好的常用核函数。
    证明: 
   根据定义,核函数的映射涉及从欧氏空间到希尔伯特空间的转化,其过程是怎样的呢?如果我们在Gram矩阵是半正定的条件下,把这个映射过程推出来不就相当于证明了上述定理的充分性了吗~
   前提:  是对称函数、  是半正定矩阵
     
     
   除去对应的基底,将其表示为希尔伯特空间的向量(一个函数可以看成一个无穷维的向量,空间中的任何一个函数都可以表示为一组正交基的线性组合):
     
     
   计算二者内积:
     
   也就是核函数定义中的:
     
   至此就证明了上述定理的充分性,至于必要性,求出Gram矩阵就可以证明,比较简单就不说了。
     这个特性叫做 再生性(reproducing property) ,所以这个空间叫做 再生核希尔伯特空间(RKHS, reproducing kernel Hilbert space) 。
   对定义的低维度到高纬度的映射  来说,我们不需要知道这个映射是什么就可以计算得到高维的内积  ,这就是SVM中使用的 核技巧 。
   *上述核函数及证明中出现较多的各种数学空间,如果不熟悉的话可以看文末的附录,对各种空间的关系有一个大致的展示。
     
   使用线性核函数跟不使用核函数是一样的,还是无法处理非线性可分问题的,不过从这个角度出发,我们可以把 线性可分SVM看作非线性不可分SVM的使用线性核函数的特例 。
     
   SVM中也称为径向基核函数(Radial Basis Function,RBF),是非线性支持向量机中最常用的核函数:
     
   因为在映射后的高维空间中,支持向量机还是在解决线性可分的数据,所以原理、目标函数什么的都跟之前是一样的,只是最终的形式上有所不同,最终可得非线性支持向量机模型:
     
   非线性支持向量机的算法过程:
   核函数的引入大大提升了支持向量机的应用范围,使得其在非线性可分问题上也有了很好的分类表现,而且核技巧使得隐式的高维映射成为可能,使用起来也非常便捷。
   还记得我们在 逻辑回归 中针对非线性可分问题说过:
   所以相对于逻辑回归等线性分类器来说,SVM具有很大的优势,这也是SVM在过去几十年里流行的主要原因之一,其优美的数学推导也让很多学者非常喜欢,不过随着近几年集成学习、神经网络的兴起和数据量的爆炸性增长,SVM也慢慢的不再那么流行了,不过其在特定问题上仍然是一个很有魅力的算法,值得大家掌握。
   现在三种SVM都写完了,来总结一下SVM的优缺点吧:
     
   数学空间:数学中的空间的组成包括两个部分:研究的对象和内在的规则,或者叫做元素和结构。

支持向量机SVM(3)核函数、非线性支持向量机

8. 支持向量机是什么意思

支持向量机(SVM)是90年代中期发展起来的基于统计学习理论的一种机器学习方法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。
通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
具体请看:网页链接