1

イプシロン 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)));
4

1 に答える 1