適切なパラメーターを選択するためにクロス検証が使用されることを知っています。それらを見つけた後、-v オプションを使用せずにデータ全体を再トレーニングする必要があります。
しかし、私が直面している問題は、-v オプションでトレーニングした後、相互検証の精度 (例: 85%) が得られることです。モデルがなく、C とガンマの値が表示されません。その場合、どのように再訓練しますか?
ところで、私は10倍の交差検証を適用しています。例えば
optimization finished, #iter = 138
nu = 0.612233
obj = -90.291046, rho = -0.367013
nSV = 165, nBSV = 128
Total nSV = 165
Cross Validation Accuracy = 98.1273%
それについていくつかの助けが必要..
最高の C とガンマを得るために、LIBSVM FAQ で入手できるこのコードを使用します。
bestcv = 0;
for log2c = -6:10,
for log2g = -6:3,
cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
cv = svmtrain(TrainLabel,TrainVec, cmd);
if (cv >= bestcv),
bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
end
fprintf('(best c=%g, g=%g, rate=%g)\n',bestc, bestg, bestcv);
end
end
別の質問: -v オプションを使用せずにトレーニングし、そのモデルを使用して予測した場合と同様の -v オプションを使用した後の相互検証の精度はありますか? 2つの精度は似ていますか?
別の質問: 相互検証は基本的に、オーバーフィッティングを回避することでモデルの精度を向上させます。そのため、改善する前にモデルを配置する必要があります。私は正しいですか?それに加えて、モデルが異なる場合、クロス検証の精度は異なりますか? 私は正しいですか?
もう 1 つの質問: 交差検証の精度では、C とガンマの値はどのくらいですか?
グラフはこんな感じ
この場合、C の値は 2 で、ガンマ = 0.0078125 です。しかし、新しいパラメーターでモデルを再トレーニングすると。この値は 99.63% と同じではありません。何か理由があるのでしょうか?前もって感謝します...