【機器學習】Weighted LSSVM原理與Python實現:LSSVM的稀疏化改進

.

一、LSSVM

1、LSSVM用於迴歸

本人在之前的部落格(參考資料【1】)介紹了LSSVM的分類模型,本節將介紹LSSVM的迴歸模型。
對於迴歸演算法,我們希望通過訓練資料中學習到迴歸方程:

y = W φ ( x ) + b y = W \cdot \varphi \left( x \right) + b

其中 φ ( x ) \varphi \left( x \right) 用於將 x x 對映到更高維的特徵空間內。
LSSVR迴歸模型的優化思想是使離迴歸平面距離最大的樣本與迴歸平面之間的距離最小。優化問題為:

min W , b 1 W s . t . y i = W φ ( x i ) + b \begin{array}{l} \mathop {\min }\limits_{W,b} \frac{1}{{\left\| W \right\|}}\\ s.t.{y_i} = W\varphi \left( {{x_i}} \right) + b \end{array}

為了解決存在部分特異點的情況,給每一個樣本引入誤差變數 e i {e_i} ,,並在原始函式中加入誤差變數的L2正則項。這樣LSSVM的優化問題就轉化為:

max W , b 1 2 W 2 + λ 2 i = 1 m e i 2 s . t . y i = W φ ( x i ) + b + e i \begin{array}{l} \mathop {\max }\limits_{W,b} \frac{1}{2}{\left\| W \right\|^2} + \frac{\lambda }{2}\sum\limits_{i = 1}^m {{e_i}^2} \\ s.t.{y_i} = W\varphi \left( {{x_i}} \right) + b + {e_i} \end{array}

由此可見,LSSVM分類模型和LSSVM迴歸模型的求解方法是相同的。
LSSVM迴歸模型的輸出為:
f ( x ) = W φ ( x ) + b = i = 1 m α i k ( x i , x ) + b f\left( x \right) = W \cdot \varphi \left( x \right) + b = \sum\limits_{i = 1}^m {{\alpha _i}k\left( {{x_i},x} \right) + b}

2、LSSVM模型的缺點

缺少稀疏性:對於每一次預測都需要所有的訓練資料參與。因為LSSVM模型求解中的Lagrange乘子都是非零數值(不同於SVM模型,只有支援向量對應的Lagrange乘子才是非零數值)。只有當誤差變數 e i {e_i} 的分佈符合高斯分佈的時候,支援向量數值的估計才是最優的【參考資料2】(個人理解:當誤差變數 e i {e_i} 的分佈符合高斯分佈的時候,有助於將異常的樣本點排除)。

二、WLSSVM的數學原理

WLSSVM的執行步驟(參考資料【2】):

步驟一 :求解LSSVM模型的優化問題,求解出Lagrange乘子序列和誤差 e i {e_i} 序列。

步驟二:求出將誤差 e i {e_i} 序列變為高斯分佈的每一個誤差 e i {e_i} 的權重 v i {v_i} 。具體如下(參考資料【3】):

v i = { 1 i f e k / s ^ c 1 c 2 e k / s ^ c 2 c 1 i f c 1 e k / s ^ c 2 10 4 o t h e r w i s e {v _i} = \left\{ {\begin{matrix} {\begin{matrix} 1&{\begin{matrix} {}&{} \end{matrix}if\begin{matrix} {}&{\left| {{e_k}/\hat s} \right| \le {c_1}} \end{matrix}} \end{matrix}}\\ {\begin{matrix} {\frac{{{c_2} - \left| {{e_k}/\hat s} \right|}}{{{c_2} - {c_1}}}}&{if\begin{matrix} {}&{{c_1} \le \left| {{e_k}/\hat s} \right| \le {c_2}} \end{matrix}} \end{matrix}}\\ {\begin{matrix} {{{10}^{ - 4}}}&{\begin{matrix} {\begin{matrix} {}&{} \end{matrix}}&{} \end{matrix}otherwise} \end{matrix}} \end{matrix}} \right.