イプシロン SVR を使用して、8616 個のサンプルで一連のデータをトレーニングおよび交差検証しようとしました。データセットの中で、テスト用に 4368、CV 用に 4248 を使用します。カーネル タイプ = RBF カーネル。Libsvm は、以下に示すような結果を提供します。
optimization finished, #iter = 502363
nu = 0.689607
obj = -6383530527604706.000000, rho = 2884789.960212
nSV = 3023, nBSV = 3004
設定した結果です
-s 3 -t 2 -c 2^28 -g 2^-13 -p 2^12
(a) 「ぬ」とはどういう意味ですか? ときどき、別のパラメータで nu = 0.99xx を取得しました。
(b) 「obj」が意外と大きいようです。正しく聞こえますか?Libsvm FAQ は、これが「デュアル SVM 問題の最適な客観的値」であると述べました。これは f(alpha) の最小値ということですか?
(c) "rho" も大きい。これがバイアス項 b です。データセット ラベル (y) は 82672 から 286026 までの値で構成されています。
トレーニングセットについては、
Mean squared error = 1.26991e+008 (regression)
Squared correlation coefficient = 0.881112 (regression)
交差検証セットの場合、
Mean squared error = 1.38909e+008 (regression)
Squared correlation coefficient = 0.883144 (regression)
選択したパラメーターを使用して、以下の結果を生成しました
kernel_type=2 (best c:2^28=2.68435e+008, g:2^-13=0.00012207, e:2^12=4096)
NRMS: 0.345139, best_gap:0.00199433
Mean Absolute Percent Error (MAPE): 5.39%
Mean Absolute Error (MAE): 8956.12 MWh
Daily Peak MAPE: 5.30%
CV セット MAPE は低い (5.39%)。Bias-Variance テストを使用すると、トレイン セット MAPE と CV セット MAPE の差はわずか 0.00199433 です。これは、パラメータが正しく設定されているように見えることを意味します。しかし、極端に大きい「obj」、「rho」の値は正しいのだろうか…。
私は SVR に非常に慣れていません。解釈または検証方法が正しくない/不十分な場合は、修正してください。
MAPEの算出方法
train_model = svmtrain(train_label, train_data, cmd);
[result_label, train_accuracy, train_dec_values] = svmpredict(train_label, train_data, train_model);
train_err = train_label-result_label;
train_errpct = abs(train_err)./train_label*100;
train_MAPE = mean(train_errpct(~isinf(train_errpct)));