目錄html
更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython
傳統迴歸模型如線性迴歸,對於樣本\((x,y)\)是直接基於模型,經過預測值\(f(x_i){y}\)和真實值\(y\)之間的差異計算損失,而且當\(f(x_i){y}=y\)時損失才爲零。算法
支持向量迴歸(support vector regression, SVR)則能夠容忍\(f(x_i){y}\)和\(y\)之間有最多\(\epsilon\)的誤差,即當\(|f(x_i){y}-y|>\epsilon\)的時候才計算損失,這至關於以\(f(x_i){y}\)爲中心,構建了一個寬度爲\(2\epsilon\)的間隔帶,若是樣本落入間隔帶,則他的分類就是正確的。數據結構
線性可分SVM目標函數優化問題爲
\[ \begin{align} & \underbrace{\min}_{\omega,b} {\frac{1}{2}}{||\omega||}^2 \\ & s.t. \quad y_i(\omega{x_i}+b)\geq1, \quad i=1,2,\ldots,m \end{align} \]
線性SVM因爲在目標函數中加入了鬆弛因子\(\xi_i>0\),目標函數優化問題爲
\[ \begin{align} & \underbrace{\min}_{\omega,b,\xi} {\frac{1}{2}}{||\omega||}^2 + C\sum_{i=1}^m\xi_i \\ & s.t. \quad y_i(\omega{x_i}+b)\geq1-\xi_i, \quad i=1,2,\ldots,m \\ & \quad\quad \xi_i\geq0, \quad i=1,2,\ldots,m \end{align} \]機器學習
支持向量迴歸因爲有一個間隔帶,所以它的損失度量函數爲
\[ l(f(x_i),y_i) = \begin{cases} 0, & if\,|f(x_i)-y_i|\leq\epsilon \\ |f(x_i)-y_i|-\epsilon, & if\,|f(x_i)-y_i|>\epsilon \\ \end{cases} \]函數
因爲SVR的間隔帶是本身引入的,因此SVR的目標函數變爲
\[ \underbrace{\min}_{\omega,b}\,{\frac{1}{2}}{||\omega||}^2 + C\sum_{i=1}^ml(f(x_i)-y_i) \]
若是和線性SVM同樣引入鬆弛因子,可是因爲咱們的偏差度量中的\(|f(x_i)-y_i|\leq\epsilon\)是絕對值小於,所以這個不等式實際上是兩個不等式,則SVR須要引入兩個鬆弛因子\(\xi_i\)和\(\hat{\xi_i}\),則SVR的優化問題將變成
\[ \underbrace{\min}_{\omega,b,\xi_i,\hat{\xi_i}}{\frac{1}{2}}||w||^2+C\sum_{i=1}^m(\xi_i+\hat{\xi_i}) \]
\[ \begin{align} s.t. & f(x_i)-y_i\leq\epsilon+\xi_i, \\ & y_i-f(x_i)\leq\epsilon+\hat{\xi_i}, \\ & \xi_i\geq0,\hat{\xi_i}\geq0,\,i=1,2,\cdots,m \end{align} \]
對SVR的優化問題引入拉格朗日乘子\(\mu_i\geq0,\hat{\mu_i}\geq0,\alpha_i\geq0,\hat{\alpha_i}\geq0\),經過拉格朗日乘子法便可獲得拉格朗日函數
\[ \begin{align} & L(w,b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu}) \\ & = \frac{1}{2}||w||^2+C\sum_{i=1}^m(\xi_i+\hat{\xi_i})-\sum_{i=1}^m\mu_i\xi_i-\sum_{i=1}^m\hat{\mu_i}\hat{\xi_i} \\ & +\sum_{i=1}^m\alpha_i(f(x_i)-y_i-\epsilon-\xi)+\sum_{i=1}^m\hat{\alpha_i}(y_i-f(x_i)-\epsilon-\hat{\xi_i}) \end{align} \]學習
經過拉格朗日便可獲得支持向量迴歸目標函數的原始形式
\[ \underbrace{min}_{w,b,\xi_i,\hat{\xi_i}} \quad \underbrace{max}_{\mu_i\geq0,\hat{\mu_i}\geq0,\alpha_i\geq0,\hat{\alpha_i}\geq0} L(w,b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu}) \]
能夠發現支持向量迴歸的目標函數的原始形式也知足KTT條件,便可以經過拉格朗日對偶將咱們的問題轉化爲等價的對偶問題,即
\[ \underbrace{max}_{\mu_i\geq0,\hat{\mu_i}\geq0,\alpha_i\geq0,\hat{\alpha_i}\geq0} \quad \underbrace{min}_{w,b,\xi_i,\hat{\xi_i}}L(w,b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu}) \]
首先求優化函數對讓\({w,b,\xi_i,\hat{\xi_i}}\)的極小值,再求拉格朗日乘子\({\mu_i,\hat{\mu_i},\alpha_i,\hat{\alpha_i}}\)的極大值,即先獲得拉格朗日函數\(L(w,b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu})\)分別對\(w,b,\xi_i,\hat{\xi_i}\)求偏導爲0可得
\[ \begin{align} & w = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)x_i, \\ & 0 = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i), \\ & C = \alpha_i + \mu, \\ & C = \hat{\alpha_i} + \hat{\mu_i}, \end{align} \]
將拉格朗日函數對\(w,b,\xi_i,\hat{\xi_i}\)的偏導代入拉格朗日函數,便可得SVR的對偶問題
\[ \underbrace{max}_{\alpha,\hat{\alpha}} \sum_{i=1}^my_i(\hat{\alpha_i}-\alpha_i)-\epsilon(\hat{\alpha_i}+\alpha_i) - \frac{1}{2} \sum_{i=1}^m\sum_{j=1}^m(\hat{\alpha_i}-\alpha_i)(\hat{\alpha_i}-\alpha_j)x_i^Tx_j \]
\[ \begin{align} s.t. & \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)=0 \\ & 0\leq\alpha_i,\hat{\alpha_i}\leq{C} \end{align} \]
對於上述SVR的目標函數的對偶形式取對數,便可變成最小化目標函數的優化問題,即
\[ \underbrace{min}_{\alpha,\hat{\alpha}} -\sum_{i=1}^my_i(\hat{\alpha_i}-\alpha_i)+\epsilon(\hat{\alpha_i}+\alpha_i) + \frac{1}{2} \sum_{i=1}^m\sum_{j=1}^m(\hat{\alpha_i}-\alpha_i)(\hat{\alpha_i}-\alpha_j)x_i^Tx_j \]
\[ \begin{align} s.t. & \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)=0 \\ & 0\leq\alpha_i,\hat{\alpha_i}\leq{C} \end{align} \]
對於這個目標函數,依然能夠使用SMO算法求出對應的\(\alpha_i,\hat{\alpha_i}\),進而求出迴歸模型的\(w,b\)。優化
在對支持向量迴歸的目標函數優化的時候,咱們假設該目標函數知足KKT條件,該KKT條件爲
\[ \begin{cases} \alpha_i(f(x_i)-y_i-\epsilon-\xi_i)=0, \\ \hat{\alpha_i}(y_i-f(x_i)-\epsilon-\hat{\xi_i})=0, \\ \alpha_i\hat{\alpha_i}=0,\xi_i\hat{\xi_i}=0, \\ (C-\alpha_i)\xi_i=0,(C-\hat{\alpha_i}\hat{\xi_i}=0 \end{cases} \]
從上式能夠看出,只有當\(f(x_i)-y_i-\epsilon-\xi_i=0\)的時候\(\alpha_i\)才能夠爲非0解,而且只有當\(y_i-f(x_i)-\epsilon-\hat{\xi_i}=0\)的時候\(\hat{\alpha_i}\)才能夠爲非0解。網站
首先根據鬆弛變量的定義,若是\(|f(x_i)-y_i-\epsilon-\xi_i|<\epsilon\),則樣本點落在間隔帶中,則\(\xi_i=0,\hat{\xi_i}=0\),既能夠獲得\(f(x_i)-y_i-\epsilon-\xi_i\neq0,y_i-f(x_i)-\epsilon-\hat{\xi_i}\neq0\),則能夠獲得\(\alpha_i=0,\hat{\alpha_i}=0\),則\(\hat{\alpha_i}-\alpha_i=0\)。人工智能
即只有樣本點\((x_i,y_i)\)不落入間隔帶中才能使得相應的\(\alpha_i\)和\(\hat{\alpha_i}\)爲非0解,而且因爲樣本點既不能同時在分隔超平面的兩邊,即\(f(x_i)-y_i-\epsilon-\xi_i=0\)和\(y_i-f(x_i)-\epsilon-\hat{\xi_i}=0\)不能同時存在,即\(\alpha_i\)和\(\hat{\alpha_i}\)至少有一個爲0而且不能同時爲0,則\(\hat{\alpha_i}-\alpha_i\neq0\)。
假設\(\alpha_i\)已經經過SMO算法獲得,則能夠獲得\(w=\sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)x_i\),便可得SVR的分離超平面爲
\[ f(x) = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)x_i^Tx+b \]
從上式能夠看出當樣本點落在間隔帶,因爲\(\hat{\alpha_i}-\alpha_i=0\),即\(w=0\),則\(w\)不受這些間隔帶內點的影響,對於間隔帶外的樣本點,則會對\(w\)形成影響,即這些點爲SVR的支持向量。而且因爲SVR的支持向量僅僅是訓練樣本的一部分,因此SVR的解\(w\)具備稀疏性。
SVR對於\(b\)的求解相似於SVM,因爲能獲得多個\(b\)值,因此最後對\(b\)取平均值。
上一節獲得了SVR的分離超平面爲
\[ f(x) = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)x_i^Tx+b \]
若是咱們使用和SVM同樣的核技巧,即對SVR訓練數據作一個樣本映射,即另\(\phi(x)\)表示\(x\)映射後的特徵向量。則分離超平面能夠變爲
\[ \begin{align} f(x) & = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)\phi{(x_i)}^T\phi{(x)}+b \\ & = \sum_{i=1}^m(\hat{\alpha_i}-\alpha_i)k(x,x_i)+b \end{align} \]
其中\(k(x,x_i)\)爲核函數。
SVR除了能夠支持迴歸問題外,其餘方面和SVM差很少,因爲SVR也算做是SVM的一個分支,此處很少說什麼,參考SVM便可。