SVM算法實作工具有很多,包括svm light,libsvm,有matlab本身自帶的svm工具包等。
網友們一般都研究Microsoft Research的John C.Platt的SMO算法
大家可以參照:
本文的目的,是用matlab體驗一下如何求解條件極值實作svm對線性資料進行分類。
上一篇文章說,如何求解SVM的權值和偏置,最後通過以下方程的最大值實作:

我們可以使用matlab自帶的fmincon函數,求-Q(a)的最小值來得到分界線。
輸入資料為100個樣本點【其實就是100個坐标點】,由于是二分類問題,網絡結構就一個神經元
具體結果:
代碼中flambda表達式就是我們的 -Q(a)。如果要進行預測的話,輸入第101個坐标,根據現在求得的分界面,可以判斷他屬于哪半面。
對于非線性問題的二分類,可以在用上述公式之前,先用核函數K處理一下,比如: