予測を行うためにしばらくの間、MATLAB LIBSVM に取り組んでいます。75% をトレーニングに使用し、15% を最適なパラメーターを見つけてテストに使用するデータセットがあります。コードを以下に示します。
trainX and trainY are the input and output training instances
testValX and testValY are the validation dataset I use
for j = 1:100
for jj = 1:10
model(j,jj) = svmtrain(trainY,trainX,...
['-s 3 -t 2 -c ' num2str(j) ' -p 0.001 -g ' num2str(jj) '-v 5']);
[predicted_label, ~, ~]=svmpredict(testValY,...
testValX,model(j,jj));
MSE(j,jj) = sum(((predicted_label-testValY).^2)/2);
end
end
[min_val,min_indi] = min(MSE(:));
best_predicted_model_rbf(i) = model(min_indi);
ここでの私の質問は、これが正しいかどうかです。c と g の値が異なるモデル マトリックスを作成しています。ここでキーとなる -v オプションを使用します。予測されたモデルから、予測のために検証データセットを使用し、平均二乗誤差を計算します。この MSE を使用して、最適な c と g を選択します。クロス検証された出力を返す -v を使用しているため、従う手順は正しいですか?