支持向量机原理(五)线性支持回归

支持向量机原理(一) 线性支持向量机html

    支持向量机原理(二) 线性支持向量机的软间隔最大化模型算法

    支持向量机原理(三)线性不可分支持向量机与核函数微信

    支持向量机原理(四)SMO算法原理网络

    支持向量机原理(五)线性支持回归机器学习

    在前四篇里面咱们讲到了SVM的线性分类和非线性分类,以及在分类时用到的算法。这些都关注与SVM的分类问题。实际上SVM也能够用于回归模型,本篇就对如何将SVM用于回归模型作一个总结。重点关注SVM分类和SVM回归的相同点与不一样点。函数

1、SVM回归模型的损失函数度量

    回顾下咱们前面SVM分类模型中,咱们的目标函数是让\(\frac{1}{2}||w||_2^2\)最小,同时让各个训练集中的点尽可能远离本身类别一边的的支持向量,即\(y_i(w \bullet \phi(x_i )+ b) \geq 1\)。若是是加入一个松弛变量\(\xi_i \geq 0\),则目标函数是\(\frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i\),对应的约束条件变成:\(y_i(w \bullet \phi(x_i ) + b )  \geq 1 - \xi_i \)post

    可是咱们如今是回归模型,优化目标函数能够继续和SVM分类模型保持一致为\(\frac{1}{2}||w||_2^2\),可是约束条件呢?不多是让各个训练集中的点尽可能远离本身类别一边的的支持向量,由于咱们是回归模型,没有类别。对于回归模型,咱们的目标是让训练集中的每一个点\((x_i,y_i)\),尽可能拟合到一个线性模型$y_i ~= w \bullet \phi(x_i ) +b $。对于通常的回归模型,咱们是用均方差做为损失函数,可是SVM不是这样定义损失函数的。性能

    SVM须要咱们定义一个常量$\epsilon >; 0 \(,对于某一个点\)(x_i,y_i)\(,若是\)|y_i - w \bullet \phi(x_i ) -b| \leq \epsilon\(,则彻底没有损失,若是\)|y_i - w \bullet \phi(x_i ) -b| >; \epsilon\(,则对应的损失为\)|y_i - w \bullet \phi(x_i ) -b| - \epsilon\(,这个均方差损失函数不一样,若是是均方差,那么只要\)y_i - w \bullet \phi(x_i ) -b \neq 0$,那么就会有损失。学习

    以下图所示,在蓝色条带里面的点都是没有损失的,可是外面的点的是有损失的,损失大小为红色线的长度。大数据

    总结下,咱们的SVM回归模型的损失函数度量为:

\[ err(x_i,y_i) =  \begin{cases} 0 & {|y_i - w \bullet \phi(x_i ) -b| \leq \epsilon}\\ |y_i - w \bullet \phi(x_i ) -b| - \epsilon & {|y_i - w \bullet \phi(x_i ) -b| >; \epsilon} \end{cases} \]

2、SVM回归模型的目标函数的原始形式

    上一节咱们已经获得了咱们的损失函数的度量,如今能够能够定义咱们的目标函数以下:
\[ min\;\; \frac{1}{2}||w||_2^2  \;\; s.t \;\; |y_i - w \bullet \phi(x_i ) -b| \leq \epsilon (i =1,2,...m) \]

    和SVM分类模型类似,回归模型也能够对每一个样本\((x_i,y_i)\)加入松弛变量\(\xi_i \geq 0\), 可是因为咱们这里用的是绝对值,其实是两个不等式,也就是说两边都须要松弛变量,咱们定义为\(\xi_i^{\lor}, \xi_i^{\land}\), 则咱们SVM回归模型的损失函数度量在加入松弛变量以后变为:
\[ min\;\; \frac{1}{2}||w||_2^2 + C\sum\limits_{i=1}^{m}(\xi_i^{\lor}+ \xi_i^{\land}) \]

\[ s.t. \;\;\; -\epsilon - \xi_i^{\lor} \leq y_i - w \bullet \phi(x_i ) -b \leq \epsilon + \xi_i^{\land} \]

\[ \xi_i^{\lor} \geq 0, \;\; \xi_i^{\land} \geq 0 \;(i = 1,2,..., m) \]

    依然和SVM分类模型类似,咱们能够用拉格朗日函数将目标优化函数变成无约束的形式,也就是拉格朗日函数的原始形式以下:

\[ L(w,b,\alpha^{\lor}, \alpha^{\land}, \xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor}, \mu^{\land}) = \frac{1}{2}||w||_2^2 + C\sum\limits_{i=1}^{m}(\xi_i^{\lor}+ \xi_i^{\land}) + \sum\limits_{i=1}^{m}\alpha^{\lor}(-\epsilon - \xi_i^{\lor} -y_i + w \bullet \phi(x_i) + b) + \sum\limits_{i=1}^{m}\alpha^{\land}(y_i - w \bullet \phi(x_i ) - b -\epsilon - \xi_i^{\land}) - \sum\limits_{i=1}^{m}\mu^{\lor}\xi_i^{\lor} - \sum\limits_{i=1}^{m}\mu^{\land}\xi_i^{\land} \]

    其中 \(\mu^{\lor} \geq 0, \mu^{\land} \geq 0, \alpha_i^{\lor} \geq 0, \alpha_i^{\land} \geq 0\),均为拉格朗日系数。

3、SVM回归模型的目标函数的对偶形式

    上一节咱们讲到了SVM回归模型的目标函数的原始形式,咱们的目标是
\[ \underbrace{min}_{w,b,\xi_i^{\lor}, \xi_i^{\land}}\; \;\;\;\;\;\;\;\;\underbrace{max}_{\mu^{\lor} \geq 0, \mu^{\land} \geq 0, \alpha_i^{\lor} \geq 0, \alpha_i^{\land} \geq 0}\;L(w,b,\alpha^{\lor}, \alpha^{\land}, \xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor}, \mu^{\land})  \]

    和SVM分类模型同样,这个优化目标也知足KKT条件,也就是说,咱们能够经过拉格朗日对偶将咱们的优化问题转化为等价的对偶问题来求解以下:
\[ \underbrace{max}_{\mu^{\lor} \geq 0, \mu^{\land} \geq 0, \alpha_i^{\lor} \geq 0, \alpha_i^{\land} \geq 0}\; \;\;\;\;\;\;\;\;\underbrace{min}_{w,b,\xi_i^{\lor}, \xi_i^{\land}}\;L(w,b,\alpha^{\lor}, \alpha^{\land}, \xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor}, \mu^{\land})  \]

    咱们能够先求优化函数对于\(w,b,\xi_i^{\lor}, \xi_i^{\land}\)的极小值, 接着再求拉格朗日乘子\(\alpha^{\lor}, \alpha^{\land}, \mu^{\lor}, \mu^{\land}\)的极大值。

    首先咱们来求优化函数对于\(w,b,\xi_i^{\lor}, \xi_i^{\land}\)的极小值,这个能够经过求偏导数求得:
\[ \frac{\partial L}{\partial w} = 0 \;\Rightarrow w = \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})\phi(x_i) \]

\[ \frac{\partial L}{\partial b} = 0 \;\Rightarrow  \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor}) = 0 \]

\[ \frac{\partial L}{\partial \xi_i^{\lor}} = 0 \;\Rightarrow C-\alpha^{\lor}-\mu^{\lor} = 0 \]
\[ \frac{\partial L}{\partial \xi_i^{\land}} = 0 \;\Rightarrow C-\alpha^{\land}-\mu^{\land} = 0 \]
 

    好了,咱们能够把上面4个式子带入$L(w,b,\alpha^{\lor}, \alpha^{\land}, \xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor}, \mu^{\land}) \(去消去\)w,b,\xi_i^{\lor}, \xi_i^{\land}$了。

    看似很复杂,其实消除过程和系列第一篇第二篇文章相似,因为式子实在是冗长,这里我就不写出推导过程了,最终获得的对偶形式为:
\[ \underbrace{ max }_{\alpha^{\lor}, \alpha^{\land}}\; -\sum\limits_{i=1}^{m}(\epsilon-y_i)\alpha_i^{\land}+ (\epsilon+y_i)\alpha_i^{\lor}) - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})(\alpha_j^{\land} - \alpha_j^{\lor})K_{ij} \]

\[ s.t. \; \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor}) = 0  \]

\[ 0 <; \alpha_i^{\lor} <; C \; (i =1,2,...m) \]

\[ 0 <; \alpha_i^{\land} <; C \; (i =1,2,...m) \]

     对目标函数取负号,求最小值能够获得和SVM分类模型相似的求极小值的目标函数以下:
\[ \underbrace{ min}_{\alpha^{\lor}, \alpha^{\land}}\; \frac{1}{2}\sum\limits_{i=1,j=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})(\alpha_j^{\land} - \alpha_j^{\lor})K_{ij} + \sum\limits_{i=1}^{m}(\epsilon-y_i)\alpha_i^{\land}+ (\epsilon+y_i)\alpha_i^{\lor}   \]

\[ s.t. \; \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor}) = 0  \]

\[ 0 <; \alpha_i^{\lor} <; C \; (i =1,2,...m) \]

\[ 0 <; \alpha_i^{\land} <; C \; (i =1,2,...m) \]

    对于这个目标函数,咱们依然能够用第四篇讲到的SMO算法来求出对应的\(\alpha^{\lor}, \alpha^{\land}\),进而求出咱们的回归模型系数\(w, b\)

4、4. SVM回归模型系数的稀疏性

    在SVM分类模型中,咱们的KKT条件的对偶互补条件为: \(\alpha_{i}^{*}(y_i(w \bullet \phi(x_i) + b) - 1+\xi_i^{*}) = 0\),而在回归模型中,咱们的对偶互补条件相似以下:
\[ \alpha_i^{\lor}(\epsilon + \xi_i^{\lor} + y_i - w \bullet \phi(x_i ) - b ) = 0 \]

\[ \alpha_i^{\land}(\epsilon + \xi_i^{\land} - y_i + w \bullet \phi(x_i ) + b ) = 0  \]

    根据松弛变量定义条件,若是\(|y_i - w \bullet \phi(x_i ) -b| <; \epsilon\),咱们有\(\xi_i^{\lor} = 0, \xi_i^{\land}= 0\),此时\(\epsilon + \xi_i^{\lor} + y_i - w \bullet \phi(x_i ) - b \neq 0, \epsilon + \xi_i^{\land} - y_i + w \bullet \phi(x_i ) + b \neq 0\)这样要知足对偶互补条件,只有\(\alpha_i^{\lor} = 0, \alpha_i^{\land} = 0\)

    咱们定义样本系数系数
\[ \beta_i =\alpha_i^{\land}-\alpha_i^{\lor} \]

    根据上面\(w\)的计算式\(w = \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})\phi(x_i) \),咱们发现此时\(\beta_i = 0\),也就是说\(w\)不受这些在偏差范围内的点的影响。对于在边界上或者在边界外的点,\(\alpha_i^{\lor} \neq 0, \alpha_i^{\land} \neq 0\),此时\(\beta_i \neq 0\)

5、SVM 算法小结

    这个系列终于写完了,这里按惯例SVM 算法作一个总结。SVM算法是一个很优秀的算法,在集成学习和神经网络之类的算法没有表现出优越性能前,SVM基本占据了分类模型的统治地位。目前则是在大数据时代的大样本背景下,SVM因为其在大样本时超级大的计算量,热度有所降低,可是仍然是一个经常使用的机器学习算法。

    SVM算法的主要优势有:

    1) 解决高维特征的分类问题和回归问题颇有效,在特征维度大于样本数时依然有很好的效果。

    2) 仅仅使用一部分支持向量来作超平面的决策,无需依赖所有数据。

    3) 有大量的核函数可使用,从而能够很灵活的来解决各类非线性的分类回归问题。

    4)样本量不是海量数据的时候,分类准确率高,泛化能力强。

    SVM算法的主要缺点有:

    1) 若是特征维度远远大于样本数,则SVM表现通常。

    2) SVM在样本量很是大,核函数映射维度很是高时,计算量过大,不太适合使用。

    3)非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。

    4)SVM对缺失数据敏感。

    以后会对scikit-learn中SVM的分类算法库和回归算法库作一个总结,重点讲述调参要点,敬请期待。

(欢迎转载,转载请注明出处。欢迎沟通交流: 微信:nickchen121) 

\xi_i^{*}

相关文章
相关标签/搜索