簡體   English   中英

在libsvm Matlab中為交叉驗證標記一個類

[英]Labeling one class for cross validation in libsvm matlab

我想在MATLAB中使用通過LibSVM進行的一類分類。

我想訓練數據並使用交叉驗證,但是我不知道該如何標記異常值。

例如,如果我有此數據:

trainData =  [1,1,1; 1,1,2; 1,1,1.5; 1,1.5,1; 20,2,3; 2,20,2; 2,20,5; 20,2,2];
labelTrainData = [-1 -1 -1 -1 0 0 0 0];  

(前四個是1類的示例,其他四個是離群值的示例,僅用於交叉驗證)

我使用以下方法訓練模型:

model = svmtrain(labelTrainData, trainData , '-s 2 -t 0 -d 3 -g 2.0 -r 2.0 -n 0.5 -m 40.0 -c 0.0 -e 0.0010 -p 0.1 -v 2' );

我不確定使用哪個值來標記一類數據以及將哪些用於異常值。 有人知道該怎么做嗎?

提前致謝。 -傑西卡

根據http://www.joint-research.org/wp-content/uploads/2011/07/lukashevich2009Using-One-class-SVM-Outliers-Detection.pdf的說明: “由於一類中缺少類標簽SVM,無法使用交叉驗證來優化內核參數。” 但是,根據LIBSVM常見問題解答 ,這不太正確:

問:由於訓練數據僅在一類中,我如何為一類SVM選擇參數 您已經預先確定了真實的陽性率,然后搜索達到相似的交叉驗證准確性的參數。

此外,libsvm源的自述文件還對輸入數據進行了說明:“對於分類, label是一個整數,指示類標簽。對於一類SVM,不使用它,因此可以是任何數字。”

我認為您的異常值不應包含在訓練數據中-libsvm將忽略訓練標簽。 您要嘗試做的是找到一個包含良好數據但不包含異常值的超球。 如果您使用數據中的異常值進行訓練,LIBSVM會嘗試找到包含異常值的超球,這正是您所不想要的。 因此,您將需要一個沒有異常值的訓練數據集,一個帶有用於選擇參數的異常值的驗證數據集以及一個最終測試數據集,以查看模型是否可以推廣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM