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. 基本上將所有的數據點與零點在特徵空間 分離開,並且最大化分離超平面到零點的距離。這產生一個binary函數能夠獲取特徵空間中數據的概率密度區域。當處於訓練數據點區域時,返回+1,處於其他區域返回-1.
該問題的優化目標與二分類SVM略微不同,但依然很相似
其中 表示鬆弛變數, 類似於二分類SVM中的 ,同時:
- 它為異常值的分數設置了一個上限(訓練數據集裡面被認為是異常的)
- 是訓練數據集裡面做為支持向量的樣例數量的下屆
因為這個參數的重要性,這種方法也被稱為 。採用Lagrange技術並且採用dot-product calculation,確定函數變為:
這個方法創建了一個參數為 的超平面,該超平面與特徵空間中的零點距離最大,並且將零點與所有的數據點分隔開。
3. SVDD
The method of Support Vector Data Description by Tax and Duin (SVDD)採用一個球形而不是平面的方法,該演算法在特徵空間中獲得數據周圍的球形邊界,這個超球體的體積是最小化的,從而最小化異常點的影響。
產生的超球體參數為中心 和半徑 ,體積 被最小化,中心 是支持向量的線性組合;跟傳統SVM方法相似,可以要求所有數據點 到中心的距離嚴格小於 ,但同時構造一個懲罰係數為 的鬆弛變數 ,優化問題如下所示:
在採用拉格朗日運算元求解之後,可以判斷新的數據點 是否在類內,如果z到中心的距離小於或者等於半徑。採用Gaussian Kernel做為兩個數據點的距離函數:
推薦閱讀:
※想研究下SVM,有什麼好的文章或者經驗之談可以分享下不?
※SVM是怎麼對圖像進行分類的?
※達觀數據推薦演算法實現:協同過濾之item embedding
※機器學習演算法實踐-SVM核函數和軟間隔
※如何理解SVM | 支持向量機之我見