標籤:

One-Class SVM介紹

傳統意義上,很多的分類問題試圖解決兩類或者多類情況,機器學習應用的目標是採用訓練數據,將測試數據屬於哪個類進行區分。但是如果只有一類數據,而目標是測試新的數據並且檢測它是否與訓練數據相似。One-Class Support Vector Machine在過去20里逐漸流行,就是為了解決這樣的問題。本篇博客對One-Class SVM進行介紹,而One-Class SVM也會應用到我的論文中。


1. Just One Class?

首先先看下我們的問題,我們希望確定新的訓練數據是否屬於某個特定類?怎麼會有這樣的應用場景呢?比方說,我們要判斷一張照片里的人臉,是男性還是女性,這是個二分類問題。就是將一堆已標註了男女性別的人臉照片(假設男性是正樣本,女性是負樣本),提取出有區分性別的特徵(假設這種能區分男女性別的特徵已構建好)後,通過svm中的支持向量,找到這男女兩類性別特徵點的最大間隔。進而在輸入一張未知性別的照片後,經過特徵提取步驟,就可以通過這個訓練好的svm很快得出照片內人物的性別,此時我們得出的結論,我們知道要麼是男性,不是男性的話,那一定是女性。以上情況是假設,我們用於訓練的樣本,包括了男女兩類的圖片,並且兩類圖片的數目較為均衡。現實生活中的我們也是這樣,我們只有在接觸了足夠多的男生女生,知道了男生女生的性別特徵差異後(比方說女性一般有長頭髮,男性一般有鬍子等等),才能準確判斷出這個人到底是男是女。

但如果有一個特殊的場景,比方說,有一個小和尚,他從小在寺廟長大,從來都只見過男生,沒見過女生,那麼對於一個男性,他能很快地基於這個男性與他之前接觸的男性有類似的特徵,給出這個人是男性的答案。但如果是一個女性,他會發現,這個女性與他之前所認知的男性的特徵差異很大,進而會得出她不是男性的判斷。但注意這裡的「她不是男性」不能直接歸結為她是女性。

再比如,在工廠設備中,控制系統的任務是判斷是是否有意外情況出現,例如產品質量過低、機器產生奇怪的震動或者溫度上升等。相對來說容易收集到正常場景下的訓練數據,但故障系統狀態的收集示例數據可能相當昂貴,或者根本不可能。 如果可以模擬一個錯誤的系統狀態,但必然無法保證所有的錯誤狀態都被模擬到,從而在傳統的兩類問題中得到識別。


2. Sch?lkopf的OCSVM

The Support Vector Method For Novelty Detection by Sch?lkopf et al. 基本上將所有的數據點與零點在特徵空間 F 分離開,並且最大化分離超平面到零點的距離。這產生一個binary函數能夠獲取特徵空間中數據的概率密度區域。當處於訓練數據點區域時,返回+1,處於其他區域返回-1.

該問題的優化目標與二分類SVM略微不同,但依然很相似

min_{w,zeta_{i},
ho}frac{1}{2}||w||^{2}+frac{1}{
u n}sum_{i=1}^{n}{zeta_{i}}-
ho

s.t. (w^{T}phi(x_{i}))>
ho-zeta_{i},i=1,...,n

zeta_{i}>0

其中 zeta_{i} 表示鬆弛變數, 
u 類似於二分類SVM中的 C ,同時:

  1. 
u 它為異常值的分數設置了一個上限(訓練數據集裡面被認為是異常的)
  2. 
u 是訓練數據集裡面做為支持向量的樣例數量的下屆

因為這個參數的重要性,這種方法也被稱為 
u-SVM 。採用Lagrange技術並且採用dot-product calculation,確定函數變為:

f(x)=sgn((w^{T}phi(x_{i}))-
ho)=sgn(sum_{i=1}^{nn}{alpha_{i}K(x,x_{i})}-
ho)

這個方法創建了一個參數為 w,
ho 的超平面,該超平面與特徵空間中的零點距離最大,並且將零點與所有的數據點分隔開。


3. SVDD

The method of Support Vector Data Description by Tax and Duin (SVDD)採用一個球形而不是平面的方法,該演算法在特徵空間中獲得數據周圍的球形邊界,這個超球體的體積是最小化的,從而最小化異常點的影響。

產生的超球體參數為中心 a 和半徑 R>0 ,體積 R^{2} 被最小化,中心 a 是支持向量的線性組合;跟傳統SVM方法相似,可以要求所有數據點 x_{i} 到中心的距離嚴格小於 R ,但同時構造一個懲罰係數為 C 的鬆弛變數 zeta_{i} ,優化問題如下所示:

min_{R,a}R^{2}+Csum_{i=1}^{n}{zeta_{i}}

s.t. ||x_{i}-a||^{2}leq R^{2}+zeta_{i},i=1,...,n

zeta_{i}geq 0,i=1,...,n

在採用拉格朗日運算元求解之後,可以判斷新的數據點 z 是否在類內,如果z到中心的距離小於或者等於半徑。採用Gaussian Kernel做為兩個數據點的距離函數:

||z-x||^{2}=sum_{i=1}^{n}{a_{i}exp(frac{-||z-x_{i}||^{2}}{sigma^{2}})}geq-R^{2}/2+C_{R}

推薦閱讀:

想研究下SVM,有什麼好的文章或者經驗之談可以分享下不?
SVM是怎麼對圖像進行分類的?
達觀數據推薦演算法實現:協同過濾之item embedding
機器學習演算法實踐-SVM核函數和軟間隔
如何理解SVM | 支持向量機之我見

TAG:機器學習 | SVM |