SVM多分类问题
SVM本身是一個二值分類器,SVM算法最初是為二值分類問題設計的,當處理多類問題時,就需要構造合適的多類分類器。
1、直接法
:直接在目標函數上進行修改,將多個分類面的參數求解合并到一個最優化問題中,通過求解該最優化問題“一次性”實現多類分類。這種方法看似簡單,但其計算復雜度比較高,實現起來比較困難,只適合用于小型問題中。
以Weston在提出的多值分類算法為代表,在經典SVM理論的基礎上重新構造多值分類模型通過SV方法對新模型的目標函數進行優化實現多值分類,它實際上是標準SVM中二次優化問題的一種自然的推廣。
2、間接法
:主要是通過組合多個二分類器來實現多分類器的構造。
2.1、一對多
在該分類方法中對n個類別僅需構造n個支持向量機?每一個支持向量機分別將某一類的數據從其他類別中分離出來。在測試時?取決策函數輸出值最大的類別為測試樣本的類別。其第i個SVM可通過解決下面的最優化問題得到。
例如:使用這三個訓練集分別進行訓練,然后的得到三個訓練結果文件。在測試的時候,把對應的測試向量分別利用這三個訓練結果文件進行測試。最后每個測試都有一個結果f1(x),f2(x),f3(x)。于是最終的結果便是這三個值中最大的一個作為分類結果。
2.2、基于決策樹的SVMs
首先將所有類別分為兩個類別,再將子類進一步劃分為兩個次級子類,如此循環下去,直到所有的節點都只包含一個單獨的類別為止,此節點也是二叉樹樹種的葉子。該分類將原有的分類問題同樣分解成了一系列的兩類分類問題,其中兩個子類間的分類函數采用SVM。如下圖表示
注意:越上層節點的分類性能對整個分類模型的推廣性影響越大. 因此,在生成二叉樹的過程中, 應該讓最易分割的類最早分割出來, 即在二叉樹的上層節點處分割。
2.3、一對一
在該分類方法中各個類別之間構造分類器對n個類別共需構造n(n-1 )/2個分類器每個分類器函數的訓練樣本是相關的兩個類,?組合這些兩類分類器并使用投票法,得票最多的類為樣本點所屬的類。具體的講對第i類和第j類之間的分類器,我們通過解下面的最優化問題得到:
例如:假設有四類A,B,C,D四類。在訓練的時候我們選擇(A,B)、 (A,C)、(A,D)、(B,C)、(B,D)、(C,D)所對應的向量作為訓練集,然后得到六個訓練結果,在測試的時候,把對應的向量分別對六個結果進行測試,然后采取投票形式,最后得到一組結果。投票是這樣的:
2.4、糾錯編碼支持向量機
由1和0組成的一個碼矩陣設為𝑀^𝑄𝑆其中Q為類別數S為待訓練的分類器數當𝑚_𝑞𝑠= 1 ( 𝑚_𝑞𝑠 = 0)時表示此樣本相對于第q類而言是作為正例(負例)來訓練第s個分類器fs的。
工作分兩步:訓練和測試。在訓練過程中依上述原則訓練分類器f(x)= (f1(x)… fs(x))在測試過程中對于新例x計算分類器f(x)的輸出向量與各類別向量的距離使其距離最小的類即為x所屬的類。
例如:對于該樣本分類時,10個SVM分類器的分類結果(0或1 )構成一個編碼 s,計算碼本內 7個編碼與 s漢明距離,距離最小者所代表的類別即該測試樣本所屬類別。
可能有小伙伴會疑惑,用糾錯編碼SVM使用3次不就是可以分出8類了嗎
但是,對于糾錯編碼SVM有以下使用約定(暫未找到證明)
2.5、有向無環圖SVMs
包括 k ( k ? 1 ) / 2 個節點和 k 個 ”葉“。其中每個節點為一個分類器,并與下一層的兩個節點(或者葉)相連。當對一個未知樣本進行分類時,首先從頂部的根節點開始,根據根節點的分類結果用下一層中的左節點或者右節點繼續分類,知道到達底層某個葉為止,該葉所表示的類別即未知樣本的類別。
微信公眾號:人生夢想實現家
你好,很高興遇見你,愿和你一起看最美的風景!
總結
- 上一篇: linux 内存管理优化,Linux性能
- 下一篇: ezcad旋转轴标刻参数_激光打标机软件