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,不得不提的三個前輩:
圖左一是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是兩種都包含.舉個例子,假設對映函式
1.1.2、核對映是如何引入到SVR裡?
1.1.3、核函式的輸出是什麼?
1.1.4、擴充套件:如何構造一個有用的核(一個有用的核應該滿足的條件)?
1.2、SMO(Sequential Minimal Optimization)演算法
1.3、SVR整體把握
1.4、SVR的輸入輸出(如何部署問題)
2.SVR的應用(迴歸與多分類問題)
待整理….