簡體   English   中英

SVM + matlab和libsvm的准確度非常低

[英]Really low accuracy with SVM + matlab and libsvm

我無法想象通過在語音向量上運行svm獲得的低精度。 我已經交叉驗證數據沒有錯,甚至在它上面使用了一個naives bayes分類器來獲得良好的結果。

首先,我應該提一下,我已經確認我沒有使用相同的文件進行培訓和測試。

我有一組用於培訓的正面和負面類的數據

  pos = ones(size(PositiveTraining,1),1);
  neg = ones(size(NegativeTraining,1),1)*-1;



  Training = [ PositiveTraining ; NegativeTraining ];
  TrainingLabels = [pos;neg];

  model = svmtrain( TrainingLabels , Training, '-t 0' );

在獲得模型后,我使用以下代碼測試向量

testing_label_vector = ones(size(mfcc,1),1); % where mfcc is my testing matrix
[predicted_label, a, b ] = svmpredict(testing_label_vector, File.mfcc, model );
edges = [-1,1];
hist = histc( predicted_label , edges )

但是我發現最大精度在0%到13%之間。

有什么事我做錯了嗎?

假設數據是正確的,有人可以建議我如何提高分類器的准確性嗎?

您需要進行參數選擇 - 您只需使用默認參數。 SVM對其參數非常敏感。 線性內核沒有參數,但您仍然有懲罰參數C.此參數在較大的邊距和錯誤分類的訓練點之間進行折衷。 較大的C意味着分類器將嘗試正確地對所有訓練點進行分類,但這可能不會很好地概括。 較小的C將允許某些點被錯誤分類以提供對噪聲不太敏感的模型。 C的值對於每個數據集都是不同的,因為它在很大程度上取決於縮放和分布等。您的數據集也可能不是線性可分的,即使對於較低的C值,所以非線性內核可能會更好地工作比如RBF內核,這很受歡迎。 但是,請記住,這些內核有更多參數,必須調整它們才能正常工作。

閱讀libsvm作者撰寫的指南,它討論了如何進行參數選擇,並提供了使用SVM進行分類的其他實用技巧。

Chih-Wei Hsu,Chih-Chung Chang和Chih-Jen Lin 支持矢量分類的實用指南

暫無
暫無

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

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