機械学習で利用できる「トレーニング」「推論」「説明」のSQL関数を理解しよう

2022年7月1日(金)
稲垣 大助

機械学習モデルの管理

MySQL HeatWave MLではML_TRAIN による「トレーニング」を行うと、終了後にML_SCHEMA_<username>.MODEL_CATALOG テーブルに対して、「トレーニング」済みのモデルが追加されます。これはMySQLユーザーがそれぞれモデルのカタログを持ち、他のユーザーとはモデルを共有しません。

モデルの読み込み

ML_TRAIN以外のHeatWave MLルーチンを実行する前に、モデルをモデルカタログからHeatWaveにロードする必要があります。 モデルはロードされたままであり、ML_MODEL_UNLOADルーチンを使用してアンロードされるまで、またはHeatWaveクラスターが再起動されるまで、HeatWave MLルーチンによって繰り返し呼び出すことができます。またモデルをロードできるのは、モデルを作成したMySQLユーザーのみです。

モデルのアンロード

ML_MODEL_UNLOADは、HeatWave MLからモデルをアンロードします。複数のモデルをロードすることは許可されていますが、メモリ内のスペースを取りすぎないように、ロードされるモデルの数を3つに制限してください。

ML_MODEL_UNLOAD(「トレーニング」済みモデル名)
「 トレーニング」済みモデル名:
モデルハンドルまたはモデルハンドルを含むセッション変数を指定

【実行例】 
mysql> CALL sys.ML_MODEL_UNLOAD(@iris_model);
Query OK, 0 rows affected (5.3438 sec)

https://dev.mysql.com/doc/heatwave/en/hwml-ml-model-unload.html

モデルの共有

モデルを共有するには、別のユーザーにモデルカタログ権限を付与する必要があります。モデルを共有できるのは、同じMySQL DBシステム上の別のMySQLユーザーのみです。

GRANT SELECT, ALTER, INSERT, CREATE, UPDATE, DROP, GRANT OPTION ON ML_SCHEMA_user1.MODEL_CATALOG TO 'user2'@'%';

モデルの削除

モデルは、所有しているユーザーまたはMODEL_CATALOGテーブルで必要な特権を付与されているユーザーが削除できます。

DELETE FROM ML_SCHEMA_user1.MODEL_CATALOG WHERE model_id = 3;

モデルのスコアリング

ML_SCOREにて、ラベル付きデータセットの特徴列を入力として使用して推論を生成し、その推論をラベル付きデータセットのターゲット列の教師データと比較することでモデルをスコアリングします。ML_SCOREで使用されるデータセットには、モデルのトレーニングに使用されるデータセットと同じ特徴列が必要ですが、データサンプルはモデルのトレーニングに使用されるデータとは異なる必要があります。

スコアが低いモデルはパフォーマンスが低下することが予想され、信頼できない推論と説明が生成されます。低いスコアは通常、提供された特徴列がターゲット値の適切な予測子ではないことを示します。この場合、トレーニングデータセットに行または有益な機能を追加することを検討してください。

トレーニングデータセットとラベル付きテストデータセットでML_SCOREを実行し、結果を比較してテストデータセットがトレーニングデータセットを表していることを確認することもできます。トレーニングデータセットのスコアが高く、テストデータセットのスコアが低い場合は、テストデータセットがトレーニングデータセットを表していないことを示しています。この場合、テストデータセットをより適切に表す行をトレーニングデータセットに追加することを検討してください。

ML_SCORE(テーブル名,対象列名,モデル名,メトリック,スコア)
テーブル名:
ラベル付けされたトレーニングデータセットを含むテーブルの名前。テーブル名は有効で完全修飾されている必要があり、スキーマ名.テーブル名の形でスキーマ名を含める
対象列名:
ターゲット列名の名前
モデル名:
モデルハンドルまたはモデルハンドルを含むセッション変数
メトリック:
別途下記参照
スコア:
計算されたスコアのユーザー定義変数名を指定。ML_SCOREでは、変数にデータが設定される

【実行例】 
mysql> CALL sys.ML_SCORE('ml_data.iris_validate', 'class', @iris_model,'balanced_accuracy', @score);

mysql> SELECT @score;
+--------------------+
| @score             |
+--------------------+
| 0.9583333134651184 |
+--------------------+

https://dev.mysql.com/doc/heatwave/en/hwml-ml-score.html

メトリック

スコアリングメトリックの詳細は下表のとおりです。一般的には分類メトリックではaccuracy、balanced_accuracy、precision、recallが使用され、回帰メトリックではneg_mean_squared_error、neg_absolute_squared_error、r2が使用されます。

モデル メトリックス 説明
分類 accuracy 推論するラベルの割合
balance_accuracy 不均衡なデータセットの均衡のとれた精度
f1 F1のスコア
f1_micro F1のスコア(マイクロ平均)
f1_macro F1のスコア(マクロ平均)
f1_weighted F1のスコア(加重)
f1_samples F1のスコア(マルチラベルサンプル)
recall リコール
recall_micro リコールのスコア(マイクロ平均)
recall_macro リコールのスコア(マクロ平均)
recall_weighted リコールのスコア(加重)
recall_samples リコールのスコア(マルチラベルサンプル)
precision 精度
precision_micro 精度(マイクロ平均)
precision_macro 精度(マクロ平均)
precision_weighted 精度(加重)
precision_samples 精度(マルチラベルサンプル)
回帰 neg_mean_squared_error 平均二乗誤差回帰損失
neg_mean_absolute_error 平均絶対誤差回帰損失
r2 R2(決定係数)回帰スコア関数
neg_mean_squared_log_error 平均二乗対数誤差回帰損失
neg_median_absolute_error 中央絶対誤差回帰損失

説明の重要性と
HeatWave MLでの実装と実例

MySQL HeatWave MLでは、機械学習における主要部分を全自動で行います。これは逆の言い方をするとプロセスが全てブラックボックス化されており、実行者にとっては学習結果(出力)の内容をそのまま受け入れて良いのか判断できません。MySQL HeatWave MLに限らず、機械学習における最終的な判断は実行者に委ねられます。機械学習の「説明」には、その学習結果を適切で信頼できるという確証を提供する必要があり、下図の項目を提供することが求められています。なお、MySQL HeatWave MLでは全ての項目を提供します。

ここからは、実例を紹介します。ある金融機関ではお客様に定期預金の案内をしていますが、「今まで蓄積されたデータをベースにトレーニングを実施し、今後の営業活動の指標にしよう」と考えています。実際に機械学習のプロセスを実行(実質的にはML_TRAINとML_PREDICT_TABLEの2つのSQLを実行したのみ)後、分類の出力結果として「Prediction – yes:定期預金を契約してくれる / no:定期預金は契約しない」が得られました。

しかし、この学習結果には人間の感覚では直感的に受け入れ難い出力結果もあるかもしれません。なぜこのような結果が導かれたのでしょうか。機械学習の「説明」を使って明らかにしていきます。

「説明」による特徴量と重要度の提供により、定期預金の開設にはお客様の現時点の預金額は大きな要素ではなく、季節的要因と勧誘の通話時間が重要という情報を取得できました。これは、賞与時期や長く通話することで、お客様が興味を持つ内容を訴求できている等のコンテンツに関することが内包されているのかもしれません。

この「説明」の情報が信頼できた場合は、機械学習の結果を実際の課題解決やサービスに適用します。しかし、この「説明」の情報が実行者にとって信頼できず、教師あり学習のラベル付きデータと大幅に乖離したものであれば、トレーニングデータを見直しする必要があるかもしれません。いずれの場合も機械学習の「説明」は機械任せの判断を鵜呑みにすることなく、重要な判断材料および信頼性を得るために非常に重要なものとなります。

以上で、MySQL HeatWave MLの機能概略の解説は終了です。次回からは、実際にツール等のセットアップ手順や接続手順を解説していきます。

日本オラクル Principal Solution Engineer MySQL Global Business Unit
2017年より日本オラクルでMySQLのプリセールスを担当。広く使われているオンプレミス上のMySQLに限らず、オラクルクラウド上のMySQL Database Service 及びMySQL HeatWave Service導入時の技術支援等も行う。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています