はじめに

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

ROC

コマンド構文

パラメータ名内容
targets目的変数(正解情報)が格納されている列
probabilities予測結果(クラスが1である確率)が格納されている列
num‑bins(オプション) 決定境界の数。デフォルトは100です。
output(オプション) AUCを出力するか否か。デフォルトはtrue(出力する)です。

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

利用例



例として以下のロジスティック回帰を使用して作成したタイタニックの生存者予測モデル(titanic_log_regの予測結果を評価します。
survived列が正解情報、predectionがVerticaが予測した結果です。
※0=死亡、1=生存

※本例では説明の都合上、トレーニングデータで評価を実施しています。

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

※ROC/AUCは予測の確率を基に計算を行うため、PREDICT_LOGISTIC_REGのオプションでtype=’probability’を指定して確率表示を行っています。

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

上記結果よりtitanic_log_regモデルのAUCは0.861556582851173であることが確認できます。
また、Excel等で上記結果を利用することでROC曲線を描くことが可能です。

ROC曲線の出力例



参考情報

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

検証バージョンについて

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

更新履歴

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