サポートベクターマシン(3):最適化とサポートベクトル回帰

ラグランジュ乗数法 - KKT条件 - 双対問題

サポートベクターマシン(A):分類線形SVM

サポートベクターマシン(2):ソフトマージンSVMのカーネル関数

サポートベクターマシン(3):最適化とサポートベクトル回帰



最適化


、SMOアルゴリズム

想起サポートベクターマシン(2)の中で、\((1.7)\)タイプは、最適化問題の最終的な解決策が必要です。

\ [\開始\ MAX_ \アルファ&\ {整列}; \。\和\ limits_ {i = 1} ^ m個の\ alpha_i - \ frac12 \和\ limits_ {i = 1} ^ m個の\和\ limits_ {i = 1} ^ M \ alpha_i \ alpha_jy_iy_j \ boldsymbol {X} _i ^ { \上部} \ boldsymbol {X} _jの\タグ{1.1} \\ [1EX] \テキスト{ST}&\; \。\和\ limits_ {i = 1} ^ M \ alpha_iy_i = 0タグ\ {1.2} \\ [1EX]&\; \。0 \ leqslant \ alpha_i \ leqslant C、\クワッドI = 1,2、\ ldots M \タグ{1.3} \端{整列} \]

最適取得の条件で\(\ boldsymbol {\アルファ} \) 、モデルパラメータは、SVMを得ることができる((\ boldsymbol {W}、B)\)\を、および超平面を分離し得ることがさらに。一般的な二次計画アルゴリズムによって解くことができる、と二次計画問題\(m個\)変数(\(m個\)は、サンプルの数である)\((第m + 1)\)キー制約ので、サンプルサイズ\(m個\)が大きい場合、問題は解決不可能となり、このセクションで説明SMO(逐次最小最適化)アルゴリズムは、上記の問題を解決するための効率的なアルゴリズムの一つです。

オリジナルの非常に大規模な二次計画問題へのSMOアルゴリズムが解ける非常に小さい二次計画一連の問題に分解されます。SMOアルゴリズムは非常に時間がかかるサイクルを介して取得する必要はありませんこれらの小さな二次計画最適化問題を解決するために、つまり、最も魅力的な部分は、小さな二次計画問題の分解した後、すべての分析ソリューションを持っている、ということです結果。行列計算は、不要であるように、実際のテストSMOアルゴリズムのデータセット、第2の線形複雑さと複雑さとの間の計算複雑。計算の複雑さとSVMモデルSMOアルゴリズムはまた、線形コアSVM高速計算のような関係を有しています。実際の試験では、訓練サンプルデータセットがまばらである場合、SMOアルゴリズムの効率が非常に高くなる可能性があることを発見しました。


2つの変数を選択:基本的な考え方は、SMOアルゴリズムです\(\ alpha_1 \)\(\ alpha_2 \) 他のすべての固定\(\ alpha_i(I = 3 \ ldotsのM)\。) これらの二つの変数のためだけに構築します二次計画問題は、このように、元の複雑な最適化問題よりも多くのことを簡素化します。制約\(\ SUM \ limits_ {I = 1} ^ M \ alpha_iy_i = 0 \) 他方に固定された\(\ alpha_i(I = 3 \ ldotsのM)\) 、利用可能な\(\ alpha_1 Y_1 + \ alpha_2 Y_2 = - \ SUM \ limits_ = {I} 3メートル^ \ alpha_iy_i \) だから、\(\アルファ_1 \)を決定した後、\(\アルファ_2は\) 自動的に取得することができる2つの変数の小さな二次計画問題は同時に更新され、継続的に最適化する新たな変数を選択しました。

右の各ステップを選択する方法\(\アルファ\)を最適化するために?ヒューリスティックな選択方法を使用してSMO変数:最初の変数\(\ alpha_1 \)に対応するKKT条件最悪サンプル点違反通常、選択されたトレーニングサンプル\を(\アルファ\) 第2の可変の\(\ alpha_2 \)が選択され、\(\ alpha_1 \)に対応するサンプル点間の最大サンプルポイント間隔(\アルファ\)を\、その結果しばしば与える更新対物機能の両方大きな変化に。本明細書に具体的にKKT条件を指します。

\ [\ \ alpha_i = 0&\クワッド\ Longleftrightarrow \クワッドy_if(\ boldsymbol {X} _i)\ GE 1 \\ 0 <\ alpha_i <C&\クワッド\ Longleftrightarrow \クワッドy_if(\ boldsymbol {{整列}始まりますX} _i)= 1 \\ \ alpha_i = C&\クワッド\ Longleftrightarrow \クワッドy_if(\ boldsymbol {X} _i)\ル1つの\端{整列} \]

前記\(F(\ boldsymbol {X } _i)= \ boldsymbol {W} ^ \トップの\ boldsymbol {X} _i + B = \合計\ limits_ {J = 1} ^ M \ alpha_jy_j \ boldsymbol {X} _i ^ \トップ\ _Jのboldsymbol {X} + Bの\) もう一つのポイントは、KKT条件のような、あまりにも厳格であるため、ということである(1 \。y_if(\ boldsymbol _i {X})=)\検査時間KKT条件がで特定のエラーになるように、この条件は、達成するのは一般に困難です範囲$ \ $イプシロン試験KKT条件、すなわち\(|。y_if(\ boldsymbol {X} _i) - 1 | <\イプシロン\)



適切な変数を選択した後、どのように以下のソリューションを見て\(\ alpha_1 \)\(\ alpha_2 \)

かかわらず、制約用語\((1.2)\)\((1.3)\) 他のすべての固定されたので(\)\ alpha_i(I = 3 \ ldotsのM)\、そのように構成される\(\ alpha_1 Y_1 + \ Y_2 = alpha_2 - \のSUM \ limits_ = {I} 3メートル^ \ alpha_iy_i =ゼータ\ \) 使用\(Y_I ^ 2 = 1 \ ) 同じ乗算の両側\(Y_1 \) 次いで(\ \ alpha_1 =( \ゼータ- \ alpha_2 Y_2)Y_1 \) 置換\((1.1)\)式及び誘導体の最適によって得られた(\ \ alpha_2 \) 次いで式使用して計算\を(\ alpha_1 \)

しかし、制約用語ので((1.3)\)\、存在する\(\ alpha_1 \)\(\ alpha_2 \)でなければならない\(\ [0、C]時間[0、C] \) の矩形領域に囲まれ内側と拘束項ため\((1.2)\)が存在する、\(\ alpha_1 Y_1 + \ alpha_2 Y_2 = - \のSUM \ limits_ {I = 3} ^ M \ alpha_iy_i =ゼータ\ \) およびので(\ Y_1 \) \(Y_2 \)をのみ取ることができる(\ 1 + \)をし、\( - 1 \) \ - 、最初のケースになるように(Y_1 \)及び(\)\ Y_2ときに異なる符号(\ \ alpha_1 \)\(\ alpha_2 \)直線上の\(\ alpha_1 - \ alpha_2 = \ゼータ\) (ここで撮影した上で\(Y_1 = 1、\; Y_2 = -1 \) 等を回します)図は次のとおりです。


ここで、反復最適化、最適解は反復的な仮定が得られる(\ alpha_1 ^ {\ \を古い} \) 及び({古い\} \ alpha_2 ^ \)\ 反復の現在のラウンドの完了後の溶液、\(\ alpha_1 ^ {\、新しい} \) と\(\ alpha_2 ^ {\、新しい新しい} \) 制約を満たすことにより、\(\ alpha_2 ^ {\、新しい新しい} \)本下限\(Lの\)と上限\(H \) すなわち:\(L \ leqslant \ alpha_2 ^ {\、新しい新しい} \ Hのleqslantの\) 。

必要と仮定する\(\ alpha_2が\)最小である、場合にのみ、図から分かる(\ alpha_1 = 0 \)\場合、\(\ alpha_2 \)矩形領域内の直線であってもよい\ alpha_2 - \(\ alpha_1 = \ゼータ\)最小値を取得します。この時点で、\(\ alpha_2 ^ {\、新しい新しい} = - \ゼータ= \ alpha_2 ^ {\、オールド} - \ alpha_1 ^ {\、旧} \)式バックため\(\ゼータ\)があります図はまた、赤と緑の線を示している)定数(Y \)\軸はで交差\) - \ゼータ\((0、) しかしによる制約\ 0(\ leqslant \ alpha_2 \ )leqslant C \ の図緑色の線に存在する、下端のみ取るべきである\(0)\(\ゼータ)ので、これらの2つの場合の組合せ(\ \ alpha_2 \)下限\(L = \ MAX(0 \ - 、\、 ゼータ)= \ MAX(0、\ \ alpha_2 ^ {\、オールド} - \ alpha_1 ^ {\、旧})\)


同様に必要\(\ alpha_2 \)の最大値、唯一の(\ \ alpha_1 = C)\時間、\(\ alpha_2を\)矩形領域の直線であってもよい( - \ alpha_2 = \ alpha_1 \ \ゼータ\) 最大値の取得について。赤と緑の線\(Y \)軸はで交差\((C、C- \ゼータ)\) しかしによる制約\(0 \ leqslant \ alpha_2 \ leqslant C \)は、図中赤線が存在します。エンドポイントのみに取ることができる\((C + \ゼータ、C)\) そうダウン集積\(\ alpha_2 \)の上限\(H = \分(C 、\、C - \ゼータ)= \分(C 、\、C + \ alpha_2 ^ {\、オールド} - \ alpha_1 ^ {\、旧})\)


第二のケース- \ (Y_1 \)及び(Y_2 \)\同じ数、\(\ alpha_1 \)\(\ alpha_2 \)直線上の\(alpha_1 + alpha_2 = \ゼータ \ \ \) に(ここでとる(。Y_1 = 1、\ ;. 1 Y_2 = \)\以下に示すように、)などを回し、:



假设要求 \(\alpha_2\) 的最小值,从图中可以看到只有当 \(\alpha_1 = C\) 时,\(\alpha_2\) 可以在矩形区域内的直线 \(\alpha_1 + \alpha_2 = \zeta\) 上取得最小值。此时 \(\alpha_2^{\,new} = \zeta - C = \alpha_1^{\,old} + \alpha_2^{\,old} - C\) ,从图中也显示红线和绿线与 \(y\) 轴都相交于 \((C, \zeta - C)\) ,然而由于约束 \(0 \leqslant \alpha_2 \leqslant C\) 的存在,图中绿线的下端点只能取到 \((\zeta, 0)\) ,所以综合这两种情况 \(\alpha_2\) 的下界 \(L = \max(0, \, \zeta - C) = \max(0, \, \alpha_1^{\,old} + \alpha_2^{\,old} - C)\)


同理要求 \(\alpha_2\) 的最大值,只有当 $\alpha_1 = \(0 时,\)\alpha_2$ 可以在矩形区域内的直线 \(\alpha_1 + \alpha_2 = \zeta\) 上取得最大值。红线和绿线与 \(y\) 轴都相交于 \((0, \zeta)\) ,然而由于约束 \(0 \leqslant \alpha_2 \leqslant C\) 的存在,图中红线的上端点只能取到 \((\zeta-C, \, C)\) ,所以综合下来 \(\alpha_2\) 的上界 \(H = \min(C, \, \zeta) = \min(C, \, \alpha_1^{\,old} + \alpha_2^{\,old})\)


于是在 \(L \leqslant \alpha_2^{\,new} \leqslant H\) 的约束范围内求得 \(\alpha_2^{\,new}\) 后,继而从 \(\alpha_1 y_1 + \alpha_2 y_2 = - \sum\limits_{i=3}^m \alpha_iy_i = \zeta\) 中求得 \(\alpha_1^{\,new}\) ,这样 \(\alpha_1\)\(\alpha_2\) 就同时得到了更新。接下来不断选择变量进行优化,当所有 \(\alpha_i\) 都满足 KKT 条件时,算法终止,求得了最优的 \(\alpha_i , \;\; i = 1,2,\ldots m\)




二、Hinge Loss 梯度下降

svm 使用的损失函数为 hinge loss,即为:
\[ L(y,f(x)) = max(0,1-yf(x)) \]

\(\text{hinge loss}\) 使得 \(yf(x)>1\) 的样本损失皆为 0,由此带来了稀疏解,使得 svm 仅通过少量的支持向量就能确定最终超平面。下面来看 hinge loss 是如何推导出来的,支持向量机 (二)\((1.1)\) 式带软间隔的 svm 最后的优化问题为:
\[ \begin{align} \min\limits_{\boldsymbol{w}, b,\boldsymbol{\xi}} & \;\; \frac12 ||\boldsymbol{w}||^2 + C \,\sum\limits_{i=1}^m \xi_i \tag{1.4}\\[1ex] {\text { s.t. }} & \;\; y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{x}_{i}+b\right) \geq 1 - \xi_i, \quad i=1,2, \ldots, m \tag{1.5} \\[1ex] & \;\; \xi_i \geq 0, \quad i=1,2, \ldots m \tag{1.6} \end{align} \]


\((1.5)\) 式重新整理为 $ \xi_i \geqslant 1 - y_i(\boldsymbol{w}^\top\boldsymbol{x}_i + b)$ 。若 \(1 - y_i(\boldsymbol{w}^\top\boldsymbol{x}_i + b) < 0\) ,由于约束\((1.6)\) 的存在,则 \(\xi_i \geqslant 0\) ;若\(1 - y_i(\boldsymbol{w}^\top \boldsymbol{x}_i + b) \geqslant 0\) ,则依然为 $ \xi_i \geqslant 1 - y_i(\boldsymbol{w}^\top \boldsymbol{x}_i + b)$ 。所以\((1.5),\,(1.6)\) 式结合起来:
\[ \xi_i \geqslant \max(0,\, 1 - y_i(\boldsymbol{w}^\top \boldsymbol{x}_i + b)) = \max(0,\, 1-y_if(x_i)) \]
又由于 \((1.4)\) 式是最小化问题,所以取 \(\xi_i\) 的极小值,即令 \(\xi_i = \max(0,1-yf(x))\) 代入 \((1.4)\) 式,并令\(\lambda = \frac{1}{2C}\)
\[ \min \left(C\sum\limits_{i=1}^m \max(0,\, 1-y_if(x_i)) + \frac12 ||\boldsymbol{w}||^2\right) \quad {\large \propto} \quad \min \left( \sum\limits_{i=1}^m \underbrace{\max(0,\, 1-y_if(x_i))}_{hinge \; loss} + \lambda ||\boldsymbol{w}||^2 \right) \]


svm 中最常用的优化算法自然是上文中的 SMO 算法,不过有了损失函数后也可以直接优化。由于 hinge loss 在 \(y_i(\boldsymbol{w}^T\boldsymbol{x}_i + b) = 1\) 处不可导,因而无法直接使用梯度下降,不过可以通过求次梯度 (subgradient) 来进行优化:

\[ \begin{align*} \frac{\partial L}{\partial \boldsymbol w} &= \begin{cases} -y_i \cdot\boldsymbol x_i & \text{if} \;\; y_i(\boldsymbol{w}^\top\boldsymbol{x}_i + b) < 1 \\[1ex] 0 & \text{otherwise} \end{cases} \\[2ex] \frac{\partial{L}}{\partial b} &= \begin{cases} -y_i \quad & \quad\text{if} \;\; y_i(\boldsymbol{w}^\top\boldsymbol{x}_i + b) < 1 \\[1ex] 0 & \quad \text{otherwise} \end{cases} \\[2ex] \boldsymbol{w} &= \boldsymbol{w} - \eta \, \frac{\partial L}{\partial \boldsymbol{w}} \\ b &= b - \eta \, \frac{\partial L}{\partial b} \end{align*} \]






支持向量回归


前文主要叙述支持向量机用于分类问题,当然其也可用于回归问题。给定一组数据 \(\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\left(\boldsymbol{x}_{m}, y_{m}\right)\right\}\) ,其中 \(\boldsymbol{x}_i \in \mathbb{R}^d\)\(y_i \in \mathbb{R}\) ,回归问题希望学得一个模型 \(f(\boldsymbol{x}) = \boldsymbol{w}^\top \boldsymbol{x} + b\) ,使得 \(f(\boldsymbol{x})\)\(y\) 尽可能接近 。传统的回归模型通常基于模型输出 \(f(\boldsymbol{x})\) 与真实输出 \(y\) 之间的差别来计算损失。当且仅当 \(f(\boldsymbol{x})\)\(y\) 完全相同时,损失才为零。支持向量回归 ( Support Vector Regression,以下简称 \(\text{svr}\) ) 与之不同,它假设能容忍 \(f(\boldsymbol{x})\)\(y\) 之间最多有 \(\epsilon\) 的偏差,即仅当 \(|f(\boldsymbol{x}) - y| > \epsilon\) 时,才计算损失。如下图所示,\(\text{svr}\) 相当于以 \(f(\boldsymbol{x})\) 为中心,构建了一个宽度为 \(\epsilon\) 的间隔带。若训练样本落在此间隔带内则被认为是预测正确的。


\(\text{svr}\) 的损失函数由此被称为 \(\epsilon - \text{insensitive error}\) ,形如 :
\[ L(y,f(x)) = \begin{cases} 0 \;\;& \text{if}\;\; |y - f(x)| \leq \epsilon\\ |y - f(x)| - \epsilon \;\; & \text{otherwise} \end{cases} \tag{2.1} \]


本质上我们希望所有的模型输出 \(f(x)\) 都在 \(\epsilon\) 的间隔带内,因而与 支持向量机 (一) 中的 \((1.3)\) 式一样,我们可以定义 \(\text{svr}\) 的优化目标:
\[ \begin{aligned} & \min\limits_{\boldsymbol{w}, b}\frac12 ||\boldsymbol{w}||^2 \\[1ex] & {\text { s.t. }} \;\; |y_{i} - \boldsymbol{w}^{\top} \boldsymbol{x}_{i} - b| \leq \epsilon , \quad i=1,2, \ldots, m \end{aligned} \tag{2.2} \]


同样类似于 支持向量机 (二) 中的 \((1.1)\) 式,可以为每个样本点引入松弛变量 \(\xi > 0\),即允许一部分样本落到间隔带外,使得模型更加 robust 。由于这里用的是绝对值,实际上是两个不等式,也就是说两边都需要松弛变量,我们定义为 \(\xi_i^{\lor}, \xi_i^{\land}\) ,于是优化目标变为:
\[ \begin{align*} \min\limits_{\boldsymbol{w}, b,\boldsymbol{\xi^\lor},\boldsymbol{\xi^\land}}\;\; &\frac{1}{2}||\boldsymbol{w}||^2 + C\sum\limits_{i=1}^{m}(\xi_i^{\lor}+ \xi_i^{\land}) \\[1ex] \text{s.t.} \;\; &-\epsilon - \xi_i^{\lor} \leq y_i - \boldsymbol{w}^\top \boldsymbol{x}_i -b \leq \epsilon + \xi_i^{\land} \\[1ex] & \xi_i^{\lor} \geq 0, \; \xi_i^{\land} \geq 0\quad i=1,2, \ldots, m \end{align*} \tag{2.3} \]


上式中的 \(C\)\(\epsilon\) 分别对应 scikit-learn 的 SVR 中的参数 \(C\)\(\text{epsilon}\)\(C\) 越大,意味着对离群点的惩罚就越大,最终就会有较少的点跨过间隔边界,模型也会变得复杂。而 \(C\) 设的越小,则较多的点会跨过间隔边界,最终形成的模型较为平滑。而 \(\text{epsilon}\) 越大,则对离群点容忍度越高,最终的模型也会较为平滑,这个参数是 \(\text{svr}\) 问题中独有的,svm 中没有这个参数。


对于 \((2.3)\) 式,为每条约束引入拉格朗日乘子 \(\mu_i^{\lor} \geqslant 0, \, \mu_i^{\land} \geqslant 0,\, \alpha_i^{\lor} \geqslant 0, \,\alpha_i^{\land} \geqslant 0\)
\[ \begin{align*} L(\boldsymbol{w},b,\boldsymbol{\alpha^{\lor}}, \boldsymbol{\alpha^{\land}}, \boldsymbol{\xi^{\lor}}, \boldsymbol{\xi}^{\land}, \boldsymbol{\mu}^{\lor}, \boldsymbol{\mu}^{\land}) = &\frac{1}{2}||\boldsymbol{w}||^2 + C\sum\limits_{i=1}^{m}(\xi_i^{\lor}+ \xi_i^{\land}) + \\ &\sum\limits_{i=1}^{m}\alpha_i^{\lor}(-\epsilon - \xi_i^{\lor} -y_i + \boldsymbol{w}^\top \boldsymbol{x}_i + b) + \\ & \sum\limits_{i=1}^{m}\alpha_i^{\land}(y_i - \boldsymbol{w}^\top \boldsymbol{x}_i - b -\epsilon - \xi_i^{\land}) - \\ & \sum\limits_{i=1}^{m}\mu_i^{\lor}\xi_i^{\lor} - \sum\limits_{i=1}^{m}\mu_i^{\land}\xi_i^{\land} \end{align*} \tag{2.4} \]


其对偶问题为:
\[ \begin{aligned} \max_{\boldsymbol{\alpha}, \boldsymbol{\mu}}\min_{\boldsymbol{w},b,\boldsymbol{\xi}} &\;\; L(\boldsymbol{w},b,\boldsymbol{\alpha^{\lor}}, \boldsymbol{\alpha^{\land}}, \boldsymbol{\xi^{\lor}}, \boldsymbol{\xi}^{\land}, \boldsymbol{\mu}^{\lor}, \boldsymbol{\mu}^{\land}) \\[1ex] \text{s.t.} &\;\; \alpha_i^{\lor}, \, \alpha_i^{\land} \geq 0, \quad i=1,2, \ldots m \\[1ex] & \;\;\mu_i^{\lor},\, \mu_i^{\land} \geq 0, \quad i = 1,2, \ldots m \end{aligned} \tag{2.5} \]


上式对 \(\boldsymbol{w}, b, \xi_i^\lor, \xi_i^\land\) 求偏导为零可得:
\[ \begin{align} \frac{\partial L}{\partial \boldsymbol{w}} = \boldsymbol{0} & \implies \boldsymbol{w} = \sum\limits_{i=1}^m (\alpha_i^\land - \alpha_i^\lor) \boldsymbol{x}_i \qquad\qquad \tag{2.6} \\ \frac{\partial L}{\partial b} = 0 & \implies \sum\limits_{i=1}^m (\alpha_i^\land - \alpha_i^\lor) = 0 \qquad\qquad\quad\; \tag{2.7} \\ \frac{\partial L}{\partial \boldsymbol{\xi}^\lor} = 0 & \implies C - \alpha_i^\lor - \mu_i^\lor = 0 \qquad\qquad\quad\; \tag{2.8} \\ \frac{\partial L}{\partial \boldsymbol{\xi}^\land} = 0 & \implies C - \alpha_i^\land - \mu_i^\land = 0 \qquad\qquad\quad\; \tag{2.9} \end{align} \]

\((2.6) \sim (2.9)\) 式代入 \((2.4)\) 式,并考虑由\((2.8), \,(2.9)\) 式得 \(C - \alpha_i = u_i \geqslant 0\) ,因而 \(0 \leqslant \alpha_i \leqslant C\) 得化简后的优化问题:
\[ \begin{aligned} \max_{\boldsymbol{\alpha}^\lor, \boldsymbol{\alpha}^\land} &\;\; \sum\limits_{i=1}^m y_i(\alpha_i^\land - \alpha_i^\lor) - \epsilon(\alpha_i^\land + \alpha_i^\land) - \frac12 \sum\limits_{i=1}^m\sum\limits_{j=1}^m (\alpha_i^\land - \alpha_i^\lor)(\alpha_j^\land - \alpha_j^\lor)\boldsymbol{x}_i^{\top}\boldsymbol{x}_j \\[1ex] \text{s.t.} & \;\; \sum\limits_{i=1}^m (\alpha_i^\land - \alpha_i^\lor) = 0 \\[1ex] & \;\; 0 \leqslant \alpha_i^\lor, \alpha_i^\land \leqslant C, \quad i = 1,2,\ldots m \end{aligned} \tag{2.10} \]


上述求最优解的过程需满足 \(\mathbb{KKT}\) 条件,其中的互补松弛条件为 :
\[ \begin{cases} \alpha_i^{\lor}(\epsilon + \xi_i^{\lor} + y_i - \boldsymbol{w}^\top \boldsymbol{x}_i - b ) = 0 \qquad\qquad\qquad\qquad\qquad (2.11) \\[2ex] \alpha_i^{\land}(\epsilon + \xi_i^{\land} - y_i + \boldsymbol{w}^\top \boldsymbol{x}_i + b ) = 0 \qquad\qquad\qquad\qquad\qquad (2.12) \\[2ex] \mu^\lor_i \xi^\lor_i = (C - \alpha^\lor_i)\xi^\lor_i = 0 \qquad\qquad\qquad\qquad\qquad\qquad\quad\;\; (2.13) \\[2ex] \mu^\land_i \xi^\lor_i = (C - \alpha^\land_i)\xi^\land_i = 0 \qquad\qquad\qquad\qquad\qquad\qquad\quad\;\; (2.14) \end{cases} \]


若样本在间隔带内,则 \(\xi_i = 0\)\(| y_i - \boldsymbol{w}^\top \boldsymbol{x} - b| < \epsilon\) ,于是要让互补松弛成立,只有使 \(\alpha_i^{\lor} = 0, \,\alpha_i^{\land} = 0\) ,则由 \((2.6)\) 式得 \(\boldsymbol{w} = 0\) ,说明在间隔带内的样本都不是支持向量,而对于间隔带上或间隔带外的样本,相应的 \(\alpha_i^\lor\)\(\alpha_i^\land\) 才能取非零值。此外一个样本不可能同时位于 \(f(\boldsymbol{x})\) 的上方和下方,所以 \((2.11)\)\((2.12)\) 式不能同时成立,因此 \(\alpha_i^{\lor}\)\(\alpha_i^\land\) 中至少一个为零。


优化问题 \((2.10)\) 同样可以使用二次规划或 SMO 算法求出 \(\boldsymbol{\alpha}\) ,继而根据 \((2.6)\) 式求得模型参数 \(\boldsymbol{w} = \sum_{i=1}^m (\alpha_i^\land - \alpha_i^\lor) \boldsymbol{x}_i\) 。而对于模型参数 \(b\) 来说,对于任意满足 \(0 < \alpha_i < C\) 的样本,由 \((2.13)\)\((2.14)\) 式可得 \(\xi _i= 0\) ,进而根据 \((2.11)\)\((2.12)\) 式:
\[ b = \epsilon + y_i - \boldsymbol{w}^\top\boldsymbol{x}_i = \epsilon + y_i - \sum\limits_{j=1}^m (\alpha_j^\land - \alpha_j^\lor) \boldsymbol{x}_j^\top \boldsymbol{x}_i \]

\(\text{svr}\) 最后的模型为:
\[ f(\boldsymbol{x}) = \boldsymbol{w}^\top \boldsymbol{x} + b = \sum\limits_{i=1}^m (\alpha_i^\land - \alpha_i^\lor) \boldsymbol{x}_i^\top \boldsymbol{x} + b \]






支持向量机算法总结


支持向量机的优点:

  1. 解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。
  2. 仅仅使用一部分样本决定超平面,内存占用少。
  3. 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。


支持向量机的缺点:

  1. 当采用核函数时,如果需要存储核矩阵,则空间复杂度为 \(\mathcal{O}(m^2)\)
  2. 选择核函数没有通用的标准 (当然其实是有的,见下文~) 。
  3. 样本量很大时,计算复杂度高。


对于第 3 个缺点,scikit-learn 的 SVC 文档中有一句话:

The fit time scales at least quadratically with the number of samples and may be impractical beyond tens of thousands of samples.



我特意去查了下字典,”tens of thousands“ 意为 ”好几万“,也就是说对于几万的数据 svm 处理起来就已经很捉急了,至于百万到亿级的数据基本就不用想了,这在如今这个大数据时代确实不够看,不过这里说的是使用核函数的 svm。而对于线性 svm 来说,情况要好很多,一般为 \(\mathcal{O}(m)\)



LibSVM 的作者,国立台湾大学的林智仁教授在其一篇小文(A Practical Guide to Support Vector Classification)中提出了 svm 库的一般使用流程 :


其中第二步 scaling 对于 svm 的整体效果有重大影响。主要原因为在没有进行 scaling 的情况下,数值范围大的特征会产生较大的影响,进而影响模型效果。

第三步中认为应优先试验 RBF 核,通常效果比较好。但他同时也提到,RBF 核并不是万能的,在一些情况下线性核更加适用。当特征数非常多,或者样本数远小于特征数时,使用线性核已然足够,映射到高维空间作用不大,而且只要对 C 进行调参即可。虽然理论上高斯核的效果不会差于线性核,但高斯核需要更多轮的调参。


下表总结了 scikit-learn 中的 svm 分类库:


scikit-learn 中 svm 库的两个主要超参数为 \(C\)\(\gamma\)\(C\)\(\gamma\) 越大,则模型趋于复杂,容易过拟合;反之,\(C\)\(\gamma\) 越大,模型变得简单,如下图所示:







/

おすすめ

転載: www.cnblogs.com/massquantity/p/11419971.html