簡體   English   中英

如何優化libsvm matlab的交叉驗證?

[英]how to optimize the crossvalidation for libsvm matlab?

我正在使用libsvm進行分類。 我正在使用交叉驗證來調整參數C和伽瑪。 沒有 我用於交叉驗證的觀察結果大約為6000〜7000。 但是,matlab調整參數需要花費大量時間。 是因為數據集的大小還是我需要優化代碼?

代碼示例:

[labels,data] = libsvmread('newwndwlibfeatures.txt');

labels_stem=labels(labels==1);
feature_stem=data(labels==1,:);
labels_nostem=labels(labels~=1);
feature_nostem=data(labels~=1,:);
L=randperm(length(labels_nostem));
labels_nostem=labels_nostem(L);
feature_nostem=feature_nostem(L,:);
labelscv=[labels_stem; labels_nostem(1:round(.05*length(labels_nostem)))];
featurecv=[feature_stem; feature_nostem(1:round(.05*length(labels_nostem)),:)];
weight=[length(labels_stem)/(length(labels_stem)+round(.05*length(labels_nostem)))  ...
        round(.05*length(labels_nostem))/(length(labels_stem)+round(.05*length(labels_nostem)))];

[C,gamma] = meshgrid(-15:1:10, -15:1:6);
% 
folds=5;
%# grid search, and cross-validation
cv_acc = zeros(numel(C),1);

for i=1:numel(C)
    cv_acc(i) = svmtrain(labelscv, featurecv, ...
                    sprintf('-c %f -g %f -h 0 -v %d -w0 %d -w1 %d', 2^C(i), 2^gamma(i), folds,weight));
end

您的數據集大小不是問題。 您正在嚴格搜索525種可能性的空間5次。 如果每折需要幾秒鍾,您就需要花幾個小時才能完成。 (25行* 21列5折 2秒/ 60秒)我希望使用一種更智能的優化方法,而不僅僅是檢查每個組合。

另外,如果我沒有記錯的話:當我寫論文時,我遇到了同樣的問題,並且某些C的值使訓練花費的時間成倍增加。

暫無
暫無

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

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