OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

エラー率によるモデル評価

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

はじめに

機械学習の分類問題において、作成した予測モデルを評価する際にエラー率を確認したい場合があります。
VerticaはERROR_RATE関数を利用するとエラー率による評価を行えます。

ERROR_RATE

コマンド構文

ERROR_RATE ( targets, predictions
              [ USING PARAMETERS num_classes=num‑classes ] )
           OVER()

パラメータ名

内容

targets

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

predictions

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

num_classes

(オプション) 評価するモデルのクラスの数。デフォルトは2。多項分類の場合は対応するクラス数を指定する。


Vertica 9.2から、INTEGER型だけでなく、BOOLEAN型、CHAR/VARCHAR型の入力データもサポートされ、分類アルゴリズムでも利用できるようになりました。

利用例

例として以下のロジスティック回帰を使用して、各車のcyl、wt列の値からがam列の値(0=オートマ、1=マニュアル)を予測し、その結果を評価します。
amが正解情報、predがVerticaが予測した結果です。

dbadmin=> SELECT car_model,
dbadmin->        am,
dbadmin->        PREDICT_LOGISTIC_REG (cyl, wt USING PARAMETERS model_name='logistic_reg_mtcars', type='response') AS pred
dbadmin-> FROM mtcars_test;
   car_model    | am | pred
----------------+----+------
 AMC Javelin    |  0 |    0
 Camaro Z28     |  0 |    0
 Datsun 710     |  1 |    1
 Honda Civic    |  1 |    1
 Hornet 4 Drive |  0 |    0
 Maserati Bora  |  1 |    0
 Merc 280       |  0 |    0
 Merc 450SL     |  0 |    0
 Porsche 914-2  |  1 |    1
 Toyota Corona  |  0 |    1
 Valiant        |  0 |    0
 Volvo 142E     |  1 |    0
(12 rows)

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

dbadmin=> CREATE VIEW pred_mtcars_results AS
dbadmin->        SELECT car_model,
dbadmin->               am AS obs,
dbadmin->        PREDICT_LOGISTIC_REG (cyl, wt USING PARAMETERS model_name='logistic_reg_mtcars', type='response') AS pred
dbadmin->        FROM mtcars_test;
CREATE VIEW

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

dbadmin=> SELECT ERROR_RATE(obs::int, pred::int USING PARAMETERS num_classes=2) OVER()
dbadmin-> FROM pred_mtcars_results;
 class |    error_rate     |                   comment
-------+-------------------+---------------------------------------------
     0 | 0.142857142857143 |
     1 |               0.4 |
       |              0.25 | Of 12 rows, 12 were used and 0 were ignored
(3 rows)

上記結果よりlogistic_reg_mtcarsモデルのエラー率は、0(オートマ)に対する分類では約14%、1(マニュアル)に対する分類では40%、全体では25%であることが確認できます。

参考情報

ERROR_RATE
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Functions/MachineLearning/ERROR_RATE.htm

検証バージョンについて

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

更新履歴

2019/07/09 Vertica 9.2の情報を追加
2018/12/16 本記事を公開