前面七篇文章(從間隔最大化,支持向量開始)系統地推導了適用於二類分類(binary/two-class classification)問題的SVM。在此基礎上可以將SVM推廣到多類分類問題。在理解二類分類SVM後,多類分類SVM也不難理解。
本文對多類分類SVM做簡單介紹,內容如下:
前文在數據集只有兩類 的情況下推導了二類分類SVM(為方便起見,以下稱binary SVM)。現在介紹如何將SVM推廣到數據有 個類的分類問題。
多類分類問題描述如下(參考文獻[6]):
給定含 個樣本的訓練集 ,其中 維特徵向量 ,類標籤 , 。訓練集數據共 個類。任務是找到決策函數 (或者說一個規則)用於預測新數據的類別。
成對分類方法(文獻[6])是基於binary SVM的,也叫one-against-one(文獻[2-3]),pairwise classification(文獻[1]引入)。one-against-one適合實際應用(文獻[3]),也是LIBSVM庫採用的方法(文獻[2])。
設訓練集數據共 個類,one-against-one方法是在每兩個類之間都構造一個binary SVM。以下圖(a)為例,共三類(二維)數據,虛線 表示1類和2類數據之間的binary SVM的決策邊界, 表示1類和3類之間的決策邊界, 則表示2類和3類之間的決策邊界。
對於第 類和第 類數據,訓練一個binary SVM即求解二次規劃問題:
其中,上標表示是 類和 類之間binary SVM的參數;下標 表示 類和 類的並集中樣本的索引; 表示輸入空間到特徵空間的非線性映射。
(當然,求解的是 的對偶問題。)
索引 ,一共需訓練 個binary SVMs。平均每個類包含 個樣本,所以平均每個對偶問題包含 個變數。
第 類和第 類之間binary SVM的決策函數:
(1)式用於判斷數據是屬於 類還是 類。
對於新數據,採用voting strategy(投票策略)進行分類:
圖(b)所示為根據上述投票策略畫出的決策邊界(文獻[1])。若新數據位於橙色區域,則其對1類的得票為3票,會被預測為1類;同理,位於藍色和紅色區域的數據會分別被預測為2類和3類。至於中心灰色區域,對三個類的得票均為1票。
另外一種基於binary SVM的方法是一類對余類方法(文獻[6]),也叫one-against-all(文獻[3]),one-against-the-rest(文獻[4])。
這種方法也好理解:對於每一個類,將其作為+1類,而其餘 個類的所有樣本作為-1類,構造一個binary SVM。如下圖(a)所示,對於黃點所示的1類,將2類和3類都當成-1類,構造binary SVM,其決策邊界為 ;對於藍點所示的2類,則將1類和3類都當成-1類,構造binary SVM,其決策邊界為 ;類似地得到 。
一般地,構造一個binary SVM將第 類與其餘 類分開,即求解二次規劃問題:
其中,下標 表示樣本的索引;上標 ,一共需訓練 個binary SVMs,求解 個包含 個變數的二次規劃問題。
為避免平票,通常去掉決策函數(1)中的符號函數(signum function),第 類的決策函數採用:
(2)式可看作新數據 到第 條決策邊界的帶符號的函數間隔『。因為在問題 中我們把第 類當成+1類,所以如果 屬於第 類,那麼一般來說(2)式應該是正的。
對於 , 個決策函數一共有 個輸出。我們選擇使(2)式最大的類 作為對 的預測(winner-takes-all, [1]),也就是說,採用如下的決策函數來對 進行分類:
圖(b)所示為相應的決策邊界(文獻[1])。若 位於橙色區域,則 最大, 會被預測為1類;同理,位於藍色區域 最大,會被預測為2類;位於紅色區域 最大,會被預測為3類。
<不平衡數據,unbalanced data(文獻[2])>
在某些情況下,不同類別的樣本數量是不平衡的。如採用一類對余類方法時,-1類樣本的數量可能比+1類樣本多很多。
個人理解:這會使得問題 目標函數中的懲罰項主要由-1類樣本的error組成,模型偏向於-1類。
這種情況可以通過對兩類數據設置不同的懲罰參數(penalty parameter)來處理,優化問題變為:
其中, 分別表示+1類和-1類的懲罰參數。對於樣本數更少的+1類,採用更大的懲罰參數 。
相應的對偶問題為:
更一般地,可以對每個樣本都設置一個懲罰參數 。
<參數選擇,parameter selection>
各個binary SVM可以通過交叉驗證(cross-validation)來選擇各自的最優參數(懲罰參數和核參數);也可對所有binary SVM採用相同的參數。
文獻[7]Section 8比較了這兩種方法在one-against-one的 上的應用。文獻[8]也有比較研究。這裡就不做介紹了。
對於多類分類SVM,還有一種只需求解一個優化問題的方法(文獻[4-5])。這種方法類似於one-against-all,構造 個二類的決策函數,其中第 個函數 將第 類和其餘類分開。形成的優化問題如下:
解這個優化問題得到全部 個決策函數。
個人理解:不等式約束(3)表示第 類數據到第 個邊界的函數間隔應該比到其餘 個邊界都要遠。
決策函數為:
文獻[4-5]推導了問題 的對偶問題。
文獻[3]比較了幾種多類分類SVM的方法,並表明one-against-one適合實際應用。
關於支持向量機的學習暫時先到這裡吧。至於 ,sci-kit learn(sklearn)庫的svm模塊等,以後有機會再繼續學習。
[1] Krebel, U. H.-G. 1998. Pairwise classification and support vector machines. In Advances in Kernel Methods – Support Vector Learning, B. Scholkopf, C. J. C. Burges, and A. J. Smola, Eds., MIT Press, Cambridge, MA, 255-268.
[2] C. C. Chang and C. J. Lin. 2001. LIBSVM: a library for support vector machines. http://www.csie. http://ntu.edu.tw/cjlin/libsvm.
[3] C. W. Hsu and C. J. Lin. 2002. A comparison of methods for multi-class support vector machines. IEEE Trans. Neural Netw. 13, 2, 415-425.
[4] J. Weston and C. Watkins. 1998. Multi-class support vector machines. Technical Report CSD-TR-98-04, Department of Computer Science, Royal Holloway, University of London.
[5] J. Weston and C. Watkins. Support vector machines for multi-class pattern recognition. In Proceedings of the Seventh European Symposium on Artificial Neural Networks, April 1999.
[6] 鄧乃揚,田英傑,數據挖掘中的新方法——支持向量機,科學出版社,北京,2004年。
[7] P. H. Chen, C. J. Lin, and B. Scholkopf. 2005. A tutorial on -support vector machines. Appl. Stochas. Models Bus. Indust. 21, 111-136.
[8] W. C. Kao, K. M. Chung, C. L. Sun, and C. J. Lin. 2004. Decomposition methods for linear support vector machines. Neural Computation, 16:1689-1704.
推薦閱讀:
※Kaggle-Titanic生還預測(Top5%)代碼分享※從0開始的機器學習(一)--感知器※機器學習練手項目——Dota2vec※【火爐煉AI】機器學習001-數據預處理技術(均值移除,範圍※Data Augmentation 技術調研
TAG:機器學習 | SVM | 分類演算法 |