Verticaでは、機械学習の分類アルゴリズムとしてランダムフォレストを利用できます。

ランダムフォレストとは

ランダムフォレストは、機械学習における教師あり学習で、分類を行う際に利用できます。

ランダムフォレストの利用例は以下の通りです。
・クレジットカードの不正利用検出
・テキストの分類

以降では、サンプルデータを例にVerticaでランダムフォレストを利用する手順をご紹介します。

Verticaでランダムフォレストを利用する手順

サンプルスキーマ、データのダウンロード

以下URLよりサンプルファイルをダウンロードします。
https://github.com/vertica/Machine-Learning-Examples

画面右上にある「Clone or Download」をクリックします。


展開される画面の右下にある「Download ZIP」をクリックしてファイルを保存します。



サンプルスキーマの作成、データのロード

ダウンロードしたファイルをVerticaサーバ上の任意のディレクトリに転送します。
転送後、以下コマンドでファイルを解凍します。


解凍後に以下コマンドでサンプルスキーマとテーブルの作成、データロードを実行します。


ランダムフォレストモデルの作成

本記事では機械学習のサンプルデータとしてよく用いられるirisデータを使用します。
irisデータには「あやめ」の3品種「setosa」、「versicolor」、「virginica」のSepal(がく片)の長さと幅、及びPetal(花びら)の長さと幅の情報が含まれています。

アヤメのイメージ写真

Sepal(がく片)の長さと幅、及びPetal(花びら)の長さと幅の情報を用いて機械学習を行い、学習データから花の品種を予測する分類を行います。

サンプルデータセットでは、すでにirisデータを分割した学習データ(iris1)とテストデータ(iris2)が用意されています。そのため、iris1テーブルを用いてランダムフォレストによる機械学習を行います。

ランダムフォレストによる機械学習を行うには、RF_CLASSIFIER関数を利用します。


【参考】パラメータの意味

パラメータ名意味
myRFModel任意のモデル名
iris1学習データのテーブル名
Species予測したい列(目的変数)
Sepal_Length, Sepal_Width, Petal_Length, Petal_Width予測に使用する説明変数
ntree(オプション)フォレスト内のツリーの数
sampling_size(オプション)各ツリーをトレーニングするために入力データセットのどの程度ランダムに選択するかを指定する数値


サマリを出力

作成したmyRFModelモデルのサマリ情報を確認します。


作成したモデルの評価

学習時に利用していないテストデータ(iris2)を利用して、作成したモデルの精度を評価します。
ランダムフォレストによる予測を行う場合はPREDICT_RF_CLASSIFIER関数を使用します。

★のデータについては、間違った分類を行っていますが、それ以外は期待した分類が行われていることが確認できます。

また、PREDICT_RF_CLASSIFIER_CLASSES関数を利用することで、分類される条件に合致する確率も併せて求めることができます。


【参考】PREDICT_RF_CLASSIFIER、PREDICT_RF_CLASSIFIER_CLASSES関数のパラメータの意味

パラメータ名意味
sepal_length,sepal_width,petal_length,petal_width予測に使用する列(モデル作成時に指定した説明変数)
MODEL_NAME予測に使用するモデル名


実装

作成したランダムフォレストモデルを実装する場合も、評価時に利用したPREDICT_RF_CLASSIFIER関数を利用できます。


参考情報

Random Forest for Classification
https://my.vertica.com/docs/9.0.x/HTML/index.htm#Authoring/AnalyzingData/MachineLearning/RandomForest/RandomForest.htm

検証バージョンについて

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