OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

MSE/RMSEによるモデル評価

公開日:
更新日:
基本操作
機械学習
#機械学習

はじめに

機械学習の回帰問題において、作成した予測モデルを評価する際にMSE/RMSEを用いることがあります。
VerticaはMSE関数を利用するとMSE/RMSEによる評価を行えます。

MSE

コマンド構文

MSE ( targets, predictions)
     OVER()

パラメータ名

内容

targets

目的変数(正解情報)が格納されている列

predictions

予測結果が格納されている列

利用例

例として以下のサポートベクターマシン回帰(SVR)を使用して、イエローストーン国立公園の間欠泉の噴火継続時間(分)を予測し、その結果を評価します。
eruptionsが正解情報、predがVerticaが予測した結果です。

dbadmin=> SELECT id, 
dbadmin(>        eruptions, 
dbadmin(>        ROUND(PREDICT_SVM_REGRESSOR(waiting USING PARAMETERS model_name='svm_faithful'),3) AS pred 
dbadmin(> FROM faithful_testing;

 id | eruptions | pred
----+-----------+-------
  4 |     2.283 | 3.121
  5 |     4.533 | 4.278
  8 |       3.6 | 4.278
  9 |      1.95 | 2.567
 11 |     1.833 | 2.718
 12 |     3.917 | 4.228
 14 |      1.75 | 2.366
 20 |      4.25 | 3.976
 22 |      1.75 | 2.366
 23 |      3.45 | 3.926
(10 rows)

MSE関数を利用し、上記の予測結果を評価します。
事前準備として、予測結果の呼び出しを簡素化するために、上記SQLをビューとして登録しておきます。

dbadmin=> CREATE VIEW pred_faithful_results AS
dbadmin(>        SELECT id, 
dbadmin(>               eruptions, 
dbadmin(>               PREDICT_SVM_REGRESSOR(waiting USING PARAMETERS model_name='svm_faithful')  AS pred 
dbadmin(>        FROM faithful_testing;
CREATE VIEW

作成したpred_faithful_resultsビューに対してMSE関数を実行します。

dbadmin=> SELECT MSE (eruptions::float, pred::float) OVER() FROM 
dbadmin->        (SELECT eruptions, pred FROM pred_faithful_results) AS prediction_output;

        mse        |                   Comments
-------------------+-----------------------------------------------
 0.353707793807197 | Of 110 rows, 110 were used and 0 were ignored
(1 row)

上記結果よりsvm_faithfulモデルのMSEは0.353707793807197であることが確認できます。
また、MSEの結果に対してSQRT(平方根)関数を使用することで、RMSEを求めることができます。

dbadmin=> SELECT SQRT(mse) AS RMSE
dbadmin->        FROM (SELECT MSE (eruptions::float, pred::float) OVER() FROM
dbadmin(>                         (SELECT eruptions, pred FROM pred_faithful_results) AS prediction_output) AS MSE;
       RMSE
-------------------
 0.594733380437989
(1 row)

上記結果よりsvm_faithfulモデルのRMSEは0.594733380437989であることが確認できます。

参考情報

MSE
https://www.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/MachineLearning/MSE.htm

SQRT
https://www.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/Mathematical/SQRT.htm

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。