1. 主要参考资料为《小象学院-机器学习IV》 李航的统计学习方法 台湾大学李宏毅老师的机器学习视频(BiliBili有免费资源)
  2. 所有内容,都是基于自己的理解,看官老爷们如果觉得哪里不对,那可能就是不对。

1.逻辑回归的缺点

  在上一篇博客中,我详细介绍了逻辑回归,在面试中,经常会被问到这样一个问题,逻辑回归与SVM有什么区别?所以,在写完逻辑回归之后,我打算梳理一下SVM。那这篇博客,就从回答这个面试题开始吧。
  虽然逻辑回归(Logistic Regression,LR)理论很简单,但它被广泛用于各种现实任务,特别是在电商公司。在数据挖掘领域,流传着这样一句话,一个逻辑回归打天下,这是LR的优点。
  LR的缺点是,在小样本上,泛化能力较弱。怎么解释呢?简单来说,逻辑回归的目标是找到一条直线(或者曲线,或者超平面,为了简单,下文只用直线举例)将样本分为两类,但是这条直线也就仅仅考虑将样本分为两类,却忽略了怎么分能得到更好的泛化性能,如图1.1。在图1.1中,有红色,蓝色两类样本,使用LR分类的话,可能会得到L1或者L2作为分类直线。在训练集上,这两条直线都能表现得很好,但是,一旦出现比较极端的样本,例如点a、b,就会被分错,这种情况在训练样本较少的情况下,会愈发严重。

支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置

支持向量回归超参数的设置 支持向量回归优缺点_泛化_02

图1.1

图1.2

2. SVM的基本思想:切在最中间

支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_03能够一刀切在两类样本的最中间,如图1.2,那么就能最大程度的避免图1.1中a,b样本被分错的情况。当时刚学SVM的时候,我就被Vapnik这个天才的想法所震惊了,心想,这得是什么样的脑子才能够想到这么漂亮的idea。但是随着涉猎的东西越来越多,我才知道原来间距理论在SVM之前早就有了,间距理论的提出是为了解释为什么adaboost不容易过拟合,或许,Vapnik是从这里获得了灵感吧。所以真的非常的赞,某天半夜无意间刷到这个视频,看完已经是两点半,却毫无睡意,意犹未尽。周志华不愧为大牛中的大牛,集成学习一代宗师,儒雅,风趣,深入浅出的介绍了Boosting的前世今生,不好意思,貌似跑题了。
  言归正传,“切在最中间”这个想法很容易让人理解,但是想要进一步求解问题依然太模糊了,怎么样才算切在最中间呢?切在最中间等价于分类直线到两类样本的最近“距离”达到最大。注意,这里距离是带引号的,不是普通的点到直线的距离,而是能反应分类置信度以及分类是否正确的距离,称为几何间距。具体而言,一个样本点到分类直线的远近可以表示为分类预测的确信程度,我们早就学过,点到直线的距离为:
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_04

在分类直线支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_05确定的情况下,支持向量回归超参数的设置 支持向量回归优缺点_泛化_06能够表示样本点支持向量回归超参数的设置 支持向量回归优缺点_泛化_07距离分类直线的远近,而支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_08的符号与类标记支持向量回归超参数的设置 支持向量回归优缺点_机器学习_09的符号是否一致能够表示分类是否正确。所以,用支持向量回归超参数的设置 支持向量回归优缺点_泛化_10来表示分类的正确性及置信度,这就是几何间距。
  在定义几何间距之后,我们就可以将“切在最中间”转化为数学表达式。怎么转化呢?在上文中说到切在最中间等价于分类直线到两类样本的最近的几何间距达到最大,分类直线到两类样本最近的几何间距为:
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_11

第二步:寻找一组支持向量回归超参数的设置 支持向量回归优缺点_机器学习_12,使得几何间距最大:
支持向量回归超参数的设置 支持向量回归优缺点_机器学习_13

虽然式(2.2)依然不容易求解,但通过式(2.2),可以得出一个结论,那就是直线切在最中间的时候,正样本和负样本到分类直线的几何间距相等。这就好比一块重量为10,但是密度不均匀的的蛋糕,需要切成重量相等的两部分,这个问题就可以写成类似于式(2.2)的形式,即式(2.3):
支持向量回归超参数的设置 支持向量回归优缺点_泛化_14

很显然,式(2.3)的最优解,就是左右两边重量都为5的时候。因为,就算切成4.999和5.001的话,那么支持向量回归超参数的设置 支持向量回归优缺点_统计学习_15支持向量回归超参数的设置 支持向量回归优缺点_机器学习_16依然可以继续优化,只有当左右两边重量都为5时,支持向量回归超参数的设置 支持向量回归优缺点_机器学习_17再也没有优化的空间了,所以是最优解。
  有了上面的结论,我们可以推导出SVM最终的优化形式。假设,当前切在最中间的分类直线支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_18就是支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_05,由于正样本和负样本到分类直线的几何间距相等,将支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_18分别向上和向下移动支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_21,正好与离它们最近的样本相碰,得到支持向量回归超参数的设置 支持向量回归优缺点_统计学习_22支持向量回归超参数的设置 支持向量回归优缺点_统计学习_23支持向量回归超参数的设置 支持向量回归优缺点_统计学习_22支持向量回归超参数的设置 支持向量回归优缺点_统计学习_23,也被称为支撑直线(平面),在支撑平面上的样本点,被称为支撑向量,这也是SVM名字的由来,详见图2。




支持向量回归超参数的设置 支持向量回归优缺点_机器学习_26


在很多学习资料中,都是直接给出两个支撑平面为:支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_27 ,作为杠精的我,自然要问,凭什么可以直接等于支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_28。这个问题我在研一算法导论课上问了我们班实力最强的东哥,以下就是东哥的推导:
支持向量回归超参数的设置 支持向量回归优缺点_机器学习_29

支持向量回归超参数的设置 支持向量回归优缺点_统计学习_30

支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_31

两个式子同时除以支持向量回归超参数的设置 支持向量回归优缺点_统计学习_32,得到
支持向量回归超参数的设置 支持向量回归优缺点_机器学习_33

把系数重新记为支持向量回归超参数的设置 支持向量回归优缺点_机器学习_12,得到
支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_35

看到这里,如果同样也是杠精的你,是不是舒服多了。接下来,我们将图2所包含的思想用数学语言彻底描述出来。
1.希望支持向量回归超参数的设置 支持向量回归优缺点_统计学习_22支持向量回归超参数的设置 支持向量回归优缺点_统计学习_23之间的距离支持向量回归超参数的设置 支持向量回归优缺点_机器学习_38最大,即支持向量回归超参数的设置 支持向量回归优缺点_泛化_39
2.希望在最大化支持向量回归超参数的设置 支持向量回归优缺点_机器学习_38的同时,所有样本都在支持向量回归超参数的设置 支持向量回归优缺点_统计学习_22支持向量回归超参数的设置 支持向量回归优缺点_统计学习_23之外(或之上),即支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_43
第一条是优化目标,第二条是最优解的约束条件,因此,得到式支持向量回归超参数的设置 支持向量回归优缺点_泛化_44
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_45

为了更容易优化,将式支持向量回归超参数的设置 支持向量回归优缺点_泛化_44稍稍做一些改动,对优化来说,依然是等价的,得到式支持向量回归超参数的设置 支持向量回归优缺点_统计学习_47
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_48

OK,式支持向量回归超参数的设置 支持向量回归优缺点_统计学习_47就是“切在最中间”最终的数学描述,竟然如此简洁,不等不感叹数学的神奇与伟大。文本之后所有内容,就是求解式(2.11)。

3.拉格朗日的几何解释

支持向量回归超参数的设置 支持向量回归优缺点_统计学习_47是一个带约束的优化问题,想要求解式支持向量回归超参数的设置 支持向量回归优缺点_统计学习_47,需要用到广义的拉格朗日乘子法(不等式约束)。在高数课上,我们都学过狭义的拉格朗日乘子法(等式约束),但老师基本上只教了碰到等式约束问题该怎么做,却不讲为什么要这么做,至少我的高数老师是这样的。在60分万岁的时候,傻瓜式地记住拉格朗日乘子法的几个步骤就OK了,但是想要彻底理解SVM,要求我们必须理解拉格朗日乘子法。问题重述,假如,我们优化目标是支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_52支持向量回归超参数的设置 支持向量回归优缺点_泛化_53是凸函数,等式约束条件为支持向量回归超参数的设置 支持向量回归优缺点_泛化_54。拉格朗日乘子法的解题步骤是:
第一步:构造拉格朗日函数
支持向量回归超参数的设置 支持向量回归优缺点_机器学习_55

第二步:分别求出支持向量回归超参数的设置 支持向量回归优缺点_统计学习_56关于支持向量回归超参数的设置 支持向量回归优缺点_泛化_57的偏导并等于0:
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_58

第三步:将上面三个等式联立方程组,求出支持向量回归超参数的设置 支持向量回归优缺点_泛化_57
  那么,上面这三步花里胡哨的到底干了一件什么事呢?为什么支持向量回归超参数的设置 支持向量回归优缺点_泛化_53必须是凸函数(PS.直线也是凸函数)呢?接下来,我们从几何的去彻底理解拉格朗日乘子法。
拉格朗日乘子法可以用图3来描述:



支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_61

图3


在图(3)中,支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_62表示损失函数,是一个凸函数,支持向量回归超参数的设置 支持向量回归优缺点_统计学习_63是约束条件,点支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_64支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_62的最优解,以支持向量回归超参数的设置 支持向量回归优缺点_泛化_66为圆心的同心圆表示支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_62在平面支持向量回归超参数的设置 支持向量回归优缺点_机器学习_68p上的投影,即损失等高线。假如没有约束,支持向量回归超参数的设置 支持向量回归优缺点_泛化_66就是最优解,求解方式也很简单,直接对支持向量回归超参数的设置 支持向量回归优缺点_机器学习_70求偏导,然后偏导等于0就可以了。
  加了约束条件支持向量回归超参数的设置 支持向量回归优缺点_统计学习_63之后,事情就稍微麻烦了一点。约束条件的作用就是说,支持向量回归超参数的设置 支持向量回归优缺点_泛化_53最优解必须要在直线支持向量回归超参数的设置 支持向量回归优缺点_泛化_54上。从图中可以明显的看出,在加了约束条件之后,最优解就是同心圆与支持向量回归超参数的设置 支持向量回归优缺点_统计学习_63刚好相切的点支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_75。相切是一个非常重要的信息,这说明,直线支持向量回归超参数的设置 支持向量回归优缺点_统计学习_63的法向量与支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_62的梯度在同一条直线上。分析到这里,把上述分析写成数学语言。直线支持向量回归超参数的设置 支持向量回归优缺点_统计学习_63的法向量为:支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_79支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_62的梯度为:支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_81,在同一条直线上说明:
支持向量回归超参数的设置 支持向量回归优缺点_机器学习_82

这样是否行了 呢??显然不行,上面的式子最多只能拆出两个等式,但是变量有三个支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_83,方程无解。更深层次的来说,我们可以说线支持向量回归超参数的设置 支持向量回归优缺点_统计学习_63的法向量是支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_79,但是我们并不能说,支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_79就是支持向量回归超参数的设置 支持向量回归优缺点_统计学习_63的法向量,因为直线平移之后,法向量是不会变的。因此,还需要增加一个条件来说明支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_79支持向量回归超参数的设置 支持向量回归优缺点_统计学习_63的法向量。我们就地取材,支持向量回归超参数的设置 支持向量回归优缺点_泛化_54就是现成的条件。
支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_91

拉格朗日乘子法和上述的几何推导有什么关系呢。把式(3.1),(3.2)写成向量形式,就是
支持向量回归超参数的设置 支持向量回归优缺点_泛化_92

式(3.3)就是支持向量回归超参数的设置 支持向量回归优缺点_统计学习_63,这两者是不是一样的呢。无非就是支持向量回归超参数的设置 支持向量回归优缺点_统计学习_94支持向量回归超参数的设置 支持向量回归优缺点_统计学习_95的区别。

3.KKT条件

支持向量回归超参数的设置 支持向量回归优缺点_泛化_96,而是不等式支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_97,那怎么办呢?
  我们把不等式约束拆成两部分,支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_98支持向量回归超参数的设置 支持向量回归优缺点_泛化_96。我还是用上图来说明KKT条件,但是为了说明的更加方便,只保留损失函数等高线和约束条件。
  第一种情况,约束区域包含了支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_62的最优解,如图4。既然这样的话,约束条件就相当于不存在了。支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_62的最优解就是优化问题的最优解。所以,支持向量回归超参数的设置 支持向量回归优缺点_统计学习_102



支持向量回归超参数的设置 支持向量回归优缺点_机器学习_103

图4


支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_62的最优解在约束区域的外面,如图5。优化问题的最优解在约束区域的边界上,这时,不等式约束等价于等式约束。关键点在于,支持向量回归超参数的设置 支持向量回归优缺点_机器学习_105的符号,在第二种情况中,支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_106。为什么呢?支持向量回归超参数的设置 支持向量回归优缺点_统计学习_107支持向量回归超参数的设置 支持向量回归优缺点_泛化_53在点B处的梯度,另 支持向量回归超参数的设置 支持向量回归优缺点_机器学习_109,则支持向量回归超参数的设置 支持向量回归优缺点_泛化_110支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_111在点B处的梯度。支持向量回归超参数的设置 支持向量回归优缺点_统计学习_107支持向量回归超参数的设置 支持向量回归优缺点_泛化_110方向恰恰相反,所以想要让式(3.6)成立,必须支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_106



支持向量回归超参数的设置 支持向量回归优缺点_机器学习_115

图5


整合上述两种情况,优化问题的最优解必须满足以下条件,也就是KKT条件:
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_116

4.求解SVM优化问题

  在解释完拉格朗日乘子法和KKT条件之后,就可以对式(2.11)求解了,套用拉格朗日乘子法可以得到:
支持向量回归超参数的设置 支持向量回归优缺点_泛化_117
其中,支持向量回归超参数的设置 支持向量回归优缺点_统计学习_95是一个向量,维度等于样本的个数,支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_119
分别对支持向量回归超参数的设置 支持向量回归优缺点_泛化_120求偏导,并等于0得:
支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_121

联立上面的n+2个等式求解,并保证支持向量回归超参数的设置 支持向量回归优缺点_机器学习_122就可以了。
  如果只有四五个样本,这样简单粗暴的方式还是可行的,如果手工求解嫌麻烦,可以交给Lingo或者MatLab去做。但是,在实际任务中,数据量动不动就是几十万甚至几百万,求解这么大的方程组,内存早就炸掉了。此外,用这种方式得到的结果,就算你计算没有错,结果也很有可能是错的。为什么这么说呢?我们做一题《统计学习方法》上的练习题,你就知道了。



支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_123

图6


  根据题意,得到优化问题为:
支持向量回归超参数的设置 支持向量回归优缺点_泛化_124

拉格朗日函数为:
支持向量回归超参数的设置 支持向量回归优缺点_泛化_125

分别对支持向量回归超参数的设置 支持向量回归优缺点_泛化_126并等于0,得:
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_127

联立式(4.9)、(4.10)、(4.11),可以得支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_128,再将结果带入到式(4.6)、(4.7)、(4.8),解出支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_129。但是,上面的解是错误的,因为约束条件要求所有的支持向量回归超参数的设置 支持向量回归优缺点_机器学习_130,但是我们求解的支持向量回归超参数的设置 支持向量回归优缺点_机器学习_131却是负数。那为什么,我们规规矩矩的求解下来,也没有算错,结果怎么就错了呢?那是因为,我们用了不该用的条件,那就是式(4.10)。式(4.10)是由样本2得来的,从图6中可以发现,样本2在边界外边,没有起到约束作用,所以,再构造拉格朗日函数的时候,直接取支持向量回归超参数的设置 支持向量回归优缺点_泛化_132,把样本2对应的约束条件过滤掉。
  找到错误的原因之后,我们重新求解,联立式(4.9)、(4.11),得支持向量回归超参数的设置 支持向量回归优缺点_机器学习_133支持向量回归超参数的设置 支持向量回归优缺点_机器学习_134。将结果,带入式(4.7),将式(4.8)带入式(4.6)与式(4.7),再因为支持向量回归超参数的设置 支持向量回归优缺点_泛化_132,最后可以得到方程组:
支持向量回归超参数的设置 支持向量回归优缺点_机器学习_136

解得支持向量回归超参数的设置 支持向量回归优缺点_机器学习_137,综合所有,得支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_138
  这道例题,之所以能找到错误的原因,是因为样本是2维的,我们开了上帝视角。如果样本是4维及以上,并且数据非常大,绝大多数的样本都是不具有约束的,在海量数据中,找到具有约束的样本,简直是天方夜谭。此外,这种求解方式,也不利用引入核函数。

5.拉格朗日对偶性

  本文的第4部分介绍了求解SVM的最基本的方法,我通过一道例题,也说明了这种方式的弊端十分明显。那么,有没有更好的优化方式呢?接下来让我们进入重头戏——拉格朗日对偶。以下内容,摘自“耳东陈”老师的一篇知乎文章,不是我有心想抄,只是这篇乎文写的太精彩了,与其高仿,不如让大家看原汁原味的,我顺便做一些辅助性的解释。
  很多资料都是上来就开始介绍“对偶问题”的概念,这实际上是一种“先知式”的教学方式,对于研究问题的思路开拓有害无益。所以,在介绍这个知识点之前,我们先要从宏观的视野上了解一下拉格朗日对偶问题出现的原因和背景。按照前面等式约束条件下的优化问题的求解思路,构造拉格朗日方程的目的是将约束条件放到目标函数中,从而将有约束优化问题转换为无约束优化问题。我们仍然秉承这一思路去解决不等式约束条件下的优化问题,那么如何针对不等式约束条件下的优化问题构建拉格朗日函数呢?
  因为我们要求解的是最小化问题,所以一个直观的想法是如果我能够构造一个函数,使得该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至是无穷大,那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化是等价的问题。
  拉格朗日对偶问题其实就是沿着这一思路往下走的过程中,为了方便求解而使用的一种技巧。于是在这里出现了三个问题:1)有约束的原始目标函数优化问题;2)新构造的拉格朗日目标函数优化问题;3)拉格朗日对偶函数的优化问题。我们希望的是这三个问题具有完全相同的最优解,而在数学技巧上通常第三个问题——拉格朗日对偶优化问题——最好解决。所以拉格朗日对偶不是必须的,只是一条捷径。
1)原始目标函数(有约束条件)
  为了接下来的讨论,更具有一般性,我们把等式约束条件也放进来,进而有约束的原始目标函数优化问题重新给出统一的描述:
支持向量回归超参数的设置 支持向量回归优缺点_机器学习_139

公式(5.1)表示m个等式约束条件和n个不等式约束条件下的目标函数支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_140的最小化问题。
2)新构造的目标函数(没有约束条件)

接下来我们构造一个基于广义拉格朗日函数的新目标函数,记为:
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_141

支持向量回归超参数的设置 支持向量回归优缺点_机器学习_142为广义拉格朗日函数,定义为:
支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_143

这里,支持向量回归超参数的设置 支持向量回归优缺点_泛化_144,是我们在构造新目标函数时加入的系数变量,同时也是公式(5.2)中最大化问题的自变量。将公式(5.3)带入公式(5.2)有:
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_145

我们对比公式(5.1)中的约束条件,将论域范围分为可行解区域和可行解区域外两个部分对公式(5.4)的取值进行分析,将可行解区域记为支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_146,当支持向量回归超参数的设置 支持向量回归优缺点_机器学习_147时有:

可行解区域内:由于支持向量回归超参数的设置 支持向量回归优缺点_机器学习_148支持向量回归超参数的设置 支持向量回归优缺点_机器学习_149 且系数支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_150, 所以有:

支持向量回归超参数的设置 支持向量回归优缺点_泛化_151

可行解区域外:代表公式(5.1)中至少有一组约束条件没有得到满足。如果支持向量回归超参数的设置 支持向量回归优缺点_泛化_152,则调整系数支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_153就可以使支持向量回归超参数的设置 支持向量回归优缺点_机器学习_154 ;如果支持向量回归超参数的设置 支持向量回归优缺点_泛化_155,调整系数支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_156就可以使支持向量回归超参数的设置 支持向量回归优缺点_机器学习_157 。这意味着,此时有
支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_158

把公式(5.4),(5.5)和(5.6)结合在一起就得到我们新构造的目标函数支持向量回归超参数的设置 支持向量回归优缺点_统计学习_159的取值分布情况:

支持向量回归超参数的设置 支持向量回归优缺点_机器学习_160

  此时我们回想最初构造新目标函数的初衷,就是为了建立一个在可行解区域内与原目标函数相同,在可行解区域外函数值趋近于无穷大的新函数。看看公式(5.7),yeah,我们做到了。
现在约束条件已经没了,接下来我们就可以求解公式(5.8)的问题

支持向量回归超参数的设置 支持向量回归优缺点_泛化_161

3)对偶问题
  尽管公式(5.8)描述的无约束优化问题看起来很美好,但一旦你尝试着手处理这个问题,就会发现一个麻烦。什么麻烦呢?我们很难直接从公式(3.8)里面把支持向量回归超参数的设置 支持向量回归优缺点_机器学习_162这两组参数拿掉,这样我们就没法通过令支持向量回归超参数的设置 支持向量回归优缺点_统计学习_163的方法求解出最优解支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_164

4)对偶问题同解的条件
  介绍完对偶问题之后,还有一个非常重要的话题,那就是对偶问题和原始问题到底有没有相同的最优解呢?或者说,什么满足什么条件时,两者有相同的解?我只是摘抄了《统计学习方法》相关定理,但是不做证明(没必要,建议看官们没有太强的理论求知欲就别去看了)。
定理1:如果原始(primary)问题和对偶(dual)问题都有最优值,则:
支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_165

其中,支持向量回归超参数的设置 支持向量回归优缺点_泛化_166是原始问题的最优解,支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_167是对偶问题的最优解,定理1交代了对偶问题的解不可能优于原始问题的解,顶多一样。当然原始问题非常非常复杂时,我们可以退而求其次,去求对偶问题的最优解,但代价就是可能得不到原始问题的最优解。于是,更核心的问题就是,什么时候这两者的解是等价的,请看定理2。
定理2:对于原始问题和对偶问题,假设函数支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_140和不等式约束条件支持向量回归超参数的设置 支持向量回归优缺点_统计学习_169为凸函数(直线,平面,超平面也是凸函数),等式约束条件中的支持向量回归超参数的设置 支持向量回归优缺点_统计学习_170为仿射函数(即由一阶多项式构成的函数,支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_171;并且至少存在一个支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_172使所有不等式约束条件严格成立,即支持向量回归超参数的设置 支持向量回归优缺点_机器学习_173(很显然,在SVM中,这个条件肯定是成立的。为什么?SVM的优化问题可以用图5来描述,相切时,正好等号成立,只要把等高线圈圈再往外扩一点,就能取到支持向量回归超参数的设置 支持向量回归优缺点_泛化_174让不等式严格成立。),则存在支持向量回归超参数的设置 支持向量回归优缺点_机器学习_175使得支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_164是原始问题的最优解,支持向量回归超参数的设置 支持向量回归优缺点_泛化_177是对偶问题的最优解且有:支持向量回归超参数的设置 支持向量回归优缺点_机器学习_178,并其充分必要条件如下:
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_179

再次强调一下,公式(5.9)是使支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_164为原始问题的最优解,支持向量回归超参数的设置 支持向量回归优缺点_泛化_177为对偶问题的最优解,且支持向量回归超参数的设置 支持向量回归优缺点_机器学习_178的充分必要条件。公式(5.9)中的(1)~(3),是为了求解最优化要求目标函数相对于三个变量支持向量回归超参数的设置 支持向量回归优缺点_泛化_183的梯度为0;(4),(6)为KKT条件(见式3.7),这也是我们为什么要在上文中先介绍KKT条件的原因;(7)为等式约束条件。

6.利用对偶性继续求解。

支持向量回归超参数的设置 支持向量回归优缺点_统计学习_47的优化问题。
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_48

支持向量回归超参数的设置 支持向量回归优缺点_统计学习_47转化为支持向量回归超参数的设置 支持向量回归优缺点_统计学习_187
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_188

但是可以发现,求解支持向量回归超参数的设置 支持向量回归优缺点_统计学习_187需要先接支持向量回归超参数的设置 支持向量回归优缺点_机器学习_17,再解支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_191,这样依然很不方便。于是,再利用刚才介绍过的拉格朗日对偶性,把优化顺序调换一下,先解支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_191,再解支持向量回归超参数的设置 支持向量回归优缺点_机器学习_17,即式(6.2)最巧的是,这两者顺序得到的解是等价的,但是后者的难度却比前者小很多。
支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_194

先求支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_191消去w,b,但是不是真的完全消去,更确切的说,把w,b转化为了另外一种约束。
支持向量回归超参数的设置 支持向量回归优缺点_泛化_174支持向量回归超参数的设置 支持向量回归优缺点_机器学习_197求偏导等于0,

支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_198
于是,我们就得到了
支持向量回归超参数的设置 支持向量回归优缺点_统计学习_199

把上面的式(6.5)、(6.6),代入式(6.2)得到式(6.7)可以发现未知变量只剩下了支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_153了。

支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_201

到这一步,极小值已经求完了,所以问题支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_202就变成了支持向量回归超参数的设置 支持向量回归优缺点_统计学习_203 ,即式(6.8)。好了,就剩下求极大值了,解决这个,SVM就解完了。
支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_204

支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_205

一般在机器学习中,把最后的问题转化为最小化问题,因此,把上式也写为最小化的形势(把负号去掉,max变min就OK了)

支持向量回归超参数的设置 支持向量回归优缺点_统计学习_206

支持向量回归超参数的设置 支持向量回归优缺点_支持向量回归超参数的设置_205

接下来的问题,就是如何求解支持向量回归超参数的设置 支持向量回归优缺点_统计学习_95,求解支持向量回归超参数的设置 支持向量回归优缺点_统计学习_95的方法有很多,最广为人知的就是SMO算法了,但是这是我在这里就不详细解释SMO了,我个人感觉SMO算法像是被神话了一般,其实这也不过众多求解支持向量回归超参数的设置 支持向量回归优缺点_统计学习_95的一种而已,其实梯度下降法也是可以求解的。

7.软间隔。

8. 核函数的使用

9.更一般化的问题(Hinge损失)。