2017-04-17 27 views
0

我正在使用Scikit中的一類SVM分類器OneClassSVM來確定數據集中的異常值。我的數據集有30000個樣本,1024個變量。我使用其中10%作爲培訓數據。scikit中的OCSVM:異常點的距離始終爲負

clf=svm.OneClassSVM(nu=0.001,kernel="rbf",gamma=1e-5) 
clf.fit(trset) 
dist2hptr=clf.decision_function(trset) 
tr_y=clf.predict(trset) 

如上,我計算使用decision_function(x)函數的決策函數每個樣品的距離。當我比較預測結果和距離結果時,它總是顯示預測輸出中標記爲+1的樣本和標記爲-1的樣本的負距離值的正距離。

我認爲距離沒有符號,因爲它不處理方向。我想了解如何在OneClassSV scikit分類器中計算距離。標誌是否僅表示樣本位於由SVM計算的決策超平面之外?

請幫忙。

回答

2

sklearn's OneClassSVM選自下列paper實現爲解釋here

伯恩哈德·斯科爾科夫,約翰C.普拉特,約翰C. Shawe-泰勒,亞歷克斯J.斯莫拉島,和Robert C.威廉森。 2001.估計對高維分佈的支持。神經計算。 13,7(2001年7月),1443-1471。 DOI:https://doi.org/10.1162/089976601750264965

讓我們來看看這紙here的抽象:

假設你正在給從底層概率 分佈P得出了一些數據集,並想估計一個「簡單「輸入 空間的子集S,使得從P畫出的測試點位於S之外的概率等於0和1之間的某個先驗指定值。

我們提出一種通過嘗試估計一個 函數f來解決這個問題,該函數在S上爲正,在補碼爲上爲負。

所以抽象定義函數的OneClassSVM之後是sklearn f