1. 程式人生 > >SVR(Support Vector Regression)演算法詳解

SVR(Support Vector Regression)演算法詳解

Perface
這裡就不講從SVM到SVR了,因為知道SVR怎麼回事後,回過頭便知道SVM其中道理;
工作中的一些心得總結,所有論述均脫敏過,與工作中的專案,技術,專利均無關;
歡迎各位多多指教。

下面按照該演算法的演進思路逐步鋪開闡述,由於涉及較多數學,難免會有大量公式推導,下文將會盡量從應用的角度來說明,
讓理論更加通俗易懂,所有參考書籍,論文均會在文末貼出,如若有何錯誤,侵權之處,敬請告知。
                             目錄
SVM的些許背景
1、SVR相關理論 
  1.1、核對映
    1.1.1、什麼是核對映?
    1.1.2、核對映是如何引入到SVR裡?
    1.1.3、核函式的輸出是什麼?
    1.1.4、擴充套件:如何構造一個有用的核(一個有用的核應該滿足的條件)?
  1.2、SMO(Sequential Minimal Optimization)演算法
  1.3、SVR整體把握
  1.4、SVR的輸入輸出
2、SVR的應用與實現

SVM的些許背景

SVM歷史2
     上圖是關於SVM,不得不提的三個前輩:
     圖左一是Vapnik,(前蘇聯/現俄羅斯),在蘇聯解體前一年到貝爾實驗室,在其任職期間,提出了著名的SVM演算法,當時其主要將其用於手寫字的分別識別,現在Vapnik博士被facebook AI招至麾下,展開又一輪的AI研究。
    圖中間John C. Platt,如果說Vapnik是一個開創者,那麼Platt無疑是一個重要的推動者,由於當時Vapnik提出SVM後,涉及到一些kernel trick,而當時業界普遍的做法是QP(quadratic programming)問題求解,其計算速度,佔用資源限制了其在大樣本中的應用,雖然當時已有的一些方法(Chunking、Osuna等)旨在克服該些問題,當仍為達到理想的效果,98年時,Platt首次提出了SMO(Sequential Minimal Optimization)演算法,極大地克服了SVM在大樣本中的計算問題,為此Platt也時非常值得歷史銘記的一個前輩。
    圖右一時臺大的林智仁教授,如果說Platt是將Vapnik的SVM從學術推向工業,那麼Chih-Jen Lin 則是將其從複雜工程推向了普通人應用,其開發出的LIBSVM包,完全是面向了普通的使用者使用,其有多種語言的實現包括(java、MATLAB、R、CUDA、python等)
    作為一個後人,還有很多關於SVM的前輩值得銘記,在此謹通過以上三位前輩,對所有為SVM的發展而努力的人致以崇高的敬意。

1、SVR相關理論

1.1、核(kernel)對映

關於核的對映,在SVM/SVR裡可謂巧奪天工,如果沒有核這種思想的引入,那麼SVM/SVR就是一種加了距離限制的percetion learning algorithm(感知機:關於PLA,有興趣的可百度,之後有時間再討論這個)。

在SVR裡,關於核對映需要知道的幾點:

1.1.1、什麼是核對映?
準確來說,核函式在大多數機器學習裡應該是一種技巧(trick,大部分論文裡都是這麼稱呼,kernel trick),所以也不應該被過分神話,這種技巧巧在我們無須明確指定核對映的具體形式,便可直接做卷積。
那麼,什麼是核對映(mapping function),通常有三種對映,1是在不增減維度的情況下做變換,2是涉及到維度的增減,3是兩種都包含.舉個例子,假設對映函式Ψ

(x)=((x1)2,(x2)2,),
1、mapping function

1.1.2、核對映是如何引入到SVR裡?

1.1.3、核函式的輸出是什麼?

1.1.4、擴充套件:如何構造一個有用的核(一個有用的核應該滿足的條件)?

1.2、SMO(Sequential Minimal Optimization)演算法

1.3、SVR整體把握

1.4、SVR的輸入輸出(如何部署問題)

2.SVR的應用(迴歸與多分類問題)

待整理….