[TOC] 更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:<a target="_blank" href="https://www.cnblogs.com/nickchen121/p/11686958.html">http://www.javashuo.com/article/p-vozphyqp-cm.html</a>html
傳統迴歸模型如線性迴歸,對於樣本$(x,y)$是直接基於模型,經過預測值$f(x_i){y}$和真實值$y$之間的差異計算損失,而且當$f(x_i){y}=y$時損失才爲零。python
支持向量迴歸(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便可。