MySQLで学ぶ
機械学習ことはじめ
DB TECH SHOWCASE
⽣駒 眞知⼦/Machiko IKOMA
⽇本オラクル株式会社
MySQL Principal Solution Engineer
MySQL Global Business Unit
Nov. 16, 2022
WHY MySQL?
世界でもっとも普及している、オープンソースデータベース
LAMPスタックの"M"
• Webアプリケーションを開発する時のデファクトスタンダード
マルチプラットフォーム対応
• Windows, Linux, macOS
⾼性能、軽量、⾼信頼
• 特にOLTP系の処理が得意
導⼊や運⽤の容易性
• ダウンロードからデータベース起動まで15分以内
• 管理不要なシンプルさ
2
「⼩さく始めて⼤きく育てる」
Copyright © 2022, Oracle and/or its affiliates
• 専⾨的な知識が必要︖
• お⾦かかりそう︖
• 根拠が怪しい︖
…
機械学習どんなイメージですか︖
3 Copyright © 2022, Oracle and/or its affiliates
データ活⽤の延⻑にあるもの
4 Copyright © 2022, Oracle and/or its affiliates
収集・蓄積 ⾒える化・分析 さらなる活⽤
• RDB
• ETLツール
• ファイル転送
• DWH
• BIツール
• 表計算ソフト
• 機械学習
• AI
機械学習がデータ基盤の重要な要素
データ活⽤の延⻑にあるもの
5 Copyright © 2022, Oracle and/or its affiliates
収集・蓄積 ⾒える化・分析 さらなる活⽤
• RDB
• ETLツール
• ファイル転送
• DWH
• BIツール
• 表計算ソフト
• 機械学習
• AI
機械学習活⽤への壁
アジェンダ
1. 機械学習でできること
2. MySQLの機械学習プラットフォーム -HeatWave ML-
3. これであなたもデータサイエンティスト︖︕
4. まとめ
6 Copyright © 2022, Oracle and/or its affiliates
機械学習でできること
7 Copyright © 2022, Oracle and/or its affiliates
活⽤例
モデル化によるタスク実⾏
理想的な顧客像⽣成
既存顧客の維持
キャンペーン最適化
顧客離れリスクのモデル化
発注予測精度の向上
⽣産量・在庫最適化
⽋品の最⼩化
無駄のない⽣産計画のモデル化
効果的なテスト項⽬
チート⾏為の検出
最適なスペックの抽出
効率的な開発⼿法のモデル化
設備の異常検知
混雑・遅延予測
効果的な乗員配置
安全な運⾏プランのモデル化
Copyright © 2022, Oracle and/or its affiliates
8
Copyright © 2022, Oracle and/or its affiliates
9
Arthur Samuel の定義
機械学習とは︖
明⽰的にプログラミングすることなくコンピュータが能⼒を獲得する研究分野
プログラミングの場合
データ
プログラム
出⼒
コンピュータ
機械学習の場合
データ
モデル
出⼒
コンピュータ
モデルを作成・使⽤するには
学習(Training)と推論(Inference)
10 Copyright © 2022, Oracle and/or its affiliates
学習⽤の
⼊⼒データ
機械学習の
アルゴリズム
モデル
モデル
推論⽤の
⼊⼒データ
予測結果
作成したモデルを使って推論⽤の
データから結果を予測する
学習⽤のデータから機械学習の
アルゴリズムを使って学習し、
モデルを作成する
学習
推論
モデルを作成・使⽤するには
学習(Training)と推論(Inference)
11 Copyright © 2022, Oracle and/or its affiliates
学習⽤の
⼊⼒データ
機械学習の
アルゴリズム
モデル
モデル
推論⽤の
⼊⼒データ
予測結果
作成したモデルを使って推論⽤の
データから結果を予測する
学習⽤のデータから機械学習の
アルゴリズムを使って学習し、
モデルを作成する
学習
推論
モデルを作成・使⽤するには
学習(Training)と推論(Inference)
12 Copyright © 2022, Oracle and/or its affiliates
学習⽤の
⼊⼒データ
機械学習の
アルゴリズム
モデル
モデル
推論⽤の
⼊⼒データ
予測結果
作成したモデルを使って推論⽤の
データから結果を予測する
学習⽤のデータから機械学習の
アルゴリズムを使って学習し、
モデルを作成する
学習
推論
データ移動の⼿間、セキュリティのリスク
アルゴリズム/パラメーターの正しい選択
予測結果の説明可能性
そこにある壁2
機械学習のライフサイクル
定期的なモデルの再学習(構築)と継続的な精度改善
13 Copyright © 2022, Oracle and/or its affiliates
0
50
100
150
200
1 2 3 4 5 6
販売数(個)
(⽉)
0
50
100
150
200
1 2 3 4 5 6 7
販売数(個)
(⽉)
6⽉末時点:
1-6⽉のデータを基に7⽉の販売数を予測
5⽉末時点:
1-5⽉のデータを基に6⽉の販売数を予測
そこにある壁2
機械学習のライフサイクル
定期的なモデルの再学習と継続的な精度改善
14 Copyright © 2022, Oracle and/or its affiliates
モデルの
作成
モデルの
実装
モデルの
評価
そこにある壁2
機械学習のライフサイクル
定期的なモデルの再学習と継続的な精度改善
15 Copyright © 2022, Oracle and/or its affiliates
モデルの
作成
モデルの
実装
モデルの
評価
モデルの品質を維持
モデル学習を⾼速実⾏
機械学習のカテゴリ
Copyright © 2022, Oracle and/or its affiliates
16
機械学習
ML
強化学習
分類
回帰
クラスタリング
次元削減
深層学習
DL
⼈間の知能を再現する
処理能⼒やテクノロジー
(推論、認識、判断 etc.)
⼈⼯知能
AI
データ解析により
学習結果を法則化, ⾃動化
⼈間の脳神経回路を
参考にした⼿法で
データから特徴を抽出
教師なし
学習
正解を学習データ
としてそれを再現する
モデルを⽣成
診断や顔認識など画像を使った分類, カテゴライズ
売上、降⽔確率などを定量的に予測
教師あり
学習
教師あり学習の分類, 回帰を提供
MySQL HeatWave MLにおける機械学習
Copyright © 2022, Oracle and/or its affiliates
17
機械学習
ML
強化学習
分類
回帰
クラスタリング
次元削減
深層学習
DL
⼈間の知能を再現する
処理能⼒やテクノロジー
(推論、認識、判断 etc.)
⼈⼯知能
AI
データ解析により
学習結果を法則化, ⾃動化
⼈間の脳神経回路を
参考にした⼿法で
データから特徴を抽出
教師なし
学習
正解を学習データ
としてそれを再現する
モデルを⽣成
診断や顔認識など画像を使った分類, カテゴライズ
売上、降⽔確率などを定量的に予測
教師あり
学習
MySQL HeatWave MLが
サポートする機械学習
MySQLの機械学習プラットフォーム
MySQL HeatWave ML
18 Copyright © 2022, Oracle and/or its affiliates
誰もが使える機械学習を
MySQL HeatWave ML
19 Copyright © 2022, Oracle and/or its affiliates
追加費⽤不要でトランザクション処理、分析処理、予測処理を⼀つのデータベースで
HeatWave ML – MySQL HeatWaveの内部で機械学習エンジンが動作
Copyright © 2022 Oracle and/or its affiliates.
20
• MySQL HeatWave内の
データに対して機械学習
→ ETL不要 & セキュリティの向上
• オラクルのAutoMLによって
機械学習の⼯程を⾃動化
→ 作業効率の向上
• 少数のSQL関数の実⾏のみで
機械学習の各⼯程を実⾏可能
→ DB利⽤者との親和性
• Amazon Redshift MLより
⾼い予測精度をもち「トレーニング」
は25倍以上⾼速かつ1%のコスト
OLAP
Applications
OLTP
Applications
InnoDB
HeatWave
MySQL
Database
Service
Query
accelerator
ML Applications HeatWave ML
機械学習の壁
Copyright © 2022, Oracle and/or its affiliates
21
⼤量のデータを
収集
結論を導く
アルゴリズムを選択
パラメーター
を選択
統計的な演算を⾏ってモデルを
作成するためのアルゴリズムを
「トレーニング」
実際のデータに対して
推論を実⾏
データの移動と加⼯は⼿間
とコスト、時間がかかる⾯倒
な作業
正しいアルゴリズムと
パラメーターを選択できるか︖
推論や予測の精度に⼤きな影響があるため
重要ではあるが、トレーニングに⾮常に
⻑い時間がかかる (※)
ブラックボックス化、
なぜそのモデルがその
選択をしたのか分からない
⼯ 程
データ移動の⼿間、セキュリティのリスク 予測結果の説明可能性
モデル学習を⾼速実⾏
アルゴリズム/パラメーターの正しい選択
モデルの品質を維持
機械学習の壁を超える!
Copyright © 2022, Oracle and/or its affiliates
22
⼤量のデータを
収集
結論を導く
アルゴリズムを選択
パラメーター
を選択
統計的な演算を⾏ってモデルを
作成するためのアルゴリズムを
「トレーニング」
実際のデータに対して
推論を実⾏
⼯ 程
既にDBにあるデータを活⽤ AutoMLの活⽤ 圧倒的に⾼速な「トレーニング」 全てのモデルに対して
「説明」可能
データ移動の⼿間、セキュリティのリスク 予測結果の説明可能性
モデル学習を⾼速実⾏
アルゴリズム/パラメーターの正しい選択
モデルの品質を維持
MySQL上のデータをそのまま活⽤
モデルも含めてデータベースレイヤで管理
23 Copyright © 2022, Oracle and/or its affiliates
8 Copyright © 2021, Oracle and/or its affiliates | Confidential: Internal
Sensitive Model/Data Boundary
Sensitive Model/Data
Boundary
HeatWave ML
ML
Model
Pull
data
Traditional way to run ML on
MySQL data
ML Training
MySQL
Database
ML application
ML Training
Trained
Model
ML
Inference Pull
data
ML
Explanation
Train model
request
Inference
request
Compute
MySQL
Client
Train model
SQL
Inference
SQL
HeatWave
MySQL HeatWave
HeatWave: Native machine learning capability
Neither data nor model leaves MySQL HeatWave
Train
Inference/
Explanation
Trained
Model
ML Inference
ML
Explanation
MySQL
従来の⽅法 MySQL HeatWave ML
8 Copyright © 2021, Oracle and/or its affiliates | Confidential: Internal
Sensitive Model/Data Boundary
Sensitive Model/Data
Boundary
HeatWave ML
ML
Model
Pull
data
Traditional way to run ML on
MySQL data
ML Training
MySQL
Database
ML application
ML Training
Trained
Model
ML
Inference Pull
data
ML
Explanation
Train model
request
Inference
request
Compute
MySQL
Client
Train model
SQL
Inference
SQL
HeatWave
MySQL HeatWave
HeatWave: Native machine learning capability
Neither data nor model leaves MySQL HeatWave
Train
Inference/
Explanation
Trained
Model
ML Inference
ML
Explanation
MySQL
Train model
SQL
Inference
SQL
データ移動の⼿間、セキュリティのリスク
学習/推論⼯程の簡易化
機械学習プラットフォームをMySQLに標準搭載
24 Copyright © 2022, Oracle and/or its affiliates
データセット
データの前処理
アルゴリズムの選択
アダプティブなサンプリング
特徴量の選択
ハイパーパラメーターのチューニング
チューニングされたモデル
モデルの説明
予測の説明
公正性
再現性
因果関係
信頼性
01
02
03
04
05
法令の遵守や規則への準拠
予測結果の説明可能性
アルゴリズム/パラメーターの正しい選択
モデル/予測説明の重要性
学習と説明⽣成の効率化
適切な時間配分で本来の業務にシフト
• データベースの外部に機械学習⽤環境を構築
• 学習と推論の⽣成に⼗分な時間と予算が必要
• 推論はブラックボックス
25 Copyright © 2022, Oracle and/or its affiliates
説明
学習
学習の開始 説明の開始
時間
#1: 学習 + 説明
当初予算で
開始
説明の取得に失敗し
予算超過
#2: 学習 + 説明
より多くの
時間予算が必要
#3: 学習 + 説明
…
説明の⽣成
説明の⽣成
従来の⽅法
MySQL HeatWave ML
説明の取得に失敗し
予算超過
より多くの
時間予算が必要
時間
• 時間予算は考慮不要
• モデルの学習後、オンデマンドで説明を⽣成可能
• モデルと推論の説明をサポート
モデル学習を⾼速実⾏
モデルの品質を維持
データ/クラスターのサイズに応じてスケール
時間のかかる⼯程を⾼速化
26 Copyright © 2022, Oracle and/or its affiliates
7108
3984
2456
1563
1282
0
1000
2000
3000
4000
5000
6000
7000
8000
1 2 4 8 16
Time
(sec)
ヒッグス粒⼦のデータセット
モデルのチューニング
を⾼速化
特徴量の選択
を⾼速化
11倍
8倍
モデル学習を⾼速実⾏
HeatWave MLを使うには︖
MySQL HeatWave環境の構築⽅法&HeatWaveが使える状態にする⽅法
Copyright © 2022, Oracle and/or its affiliates
28
OCIのチュートリアルページにMySQL Database Service、HeatWaveのチュートリアルを掲載しています︕(⼊⾨編︓その9、その10)
画⾯キャプチャー付きで詳細に⼿順を解説しています︕
⼊⾨編 - Oracle Cloud Infrastructure を使ってみよう
https://oracle-japan.github.io/ocitutorials/beginners/
チュートリアル : Oracle Cloud Infrastructure を使ってみよう
https://oracle-japan.github.io/ocitutorials/
これであなたもデータサイエンティスト︖︕
SQLで動かせる機械学習
29 Copyright © 2022, Oracle and/or its affiliates
HeatWave MLでの機械学習処理の流れ
30 Copyright © 2022, Oracle and/or its affiliates
学習データやテストデータはMySQLサーバー上のテーブルとして管理
アプリケーションからはHeatWave MLが⽤意した関数群を実⾏
SQL
ML_TRAIN
MySQL呼び出し 学習データ展開
HeatWave
Cluster
モデル作成
ML_MODEL_LOAD
保存
モデルカタログ
ML_PREDICT_*
ML_EXPLAIN
ML_SCORE
ロード
推論
説明
(アルゴリズム指定)
モデルの検証
トレーニング
モデルのロード
ML_EXPLAIN_*
説明の⽣成
学習データ
/検証データ
(既存データ)
推論データ
(新規データ)
データ準備
データの準備
学習データと推論データ
• モデルの⽣成、評価に使⽤︓学習データ
• 正解が含まれるデータ
• 同じ構成のデータ︓検証データ
• 予測、説明の⽣成に使⽤︓推論データ
• 未知のデータ
31 Copyright © 2022, Oracle and/or its affiliates
ベンチマークサンプルデータ: https://github.com/oracle-samples/heatwave-ml
学習データ
/検証データ
(既存データ)
推論データ
(新規データ)
モデルのトレーニング・⽣成
ML_TRAIN
ML_TRAIN(学習データのテーブル名, 対象列名, [オプション], モデルハンドル)
• オプション
• 分類: JSON_OBJECT(ʻtaskʼ, ʻclassificationʼ) デフォルト
• 回帰: JSON_OBJECT('task', 'regressionʼ)
• 時系列予測: JSON_OBJECT('task', 'forecastingʼ, 'datetime_index', '<column_name> ʼ,
'endogenous_variables', JSON_ARRAY(<endogenous_column>) )
• モデル⽣成後にSELECT <モデルハンドル>; で⽣成されたモデル名を確認
実⾏例︓タイタニック号乗客の⽣存状況モデルを⽣成
32 Copyright © 2022, Oracle and/or its affiliates
ML_TRAIN
トレーニング
ML_MODEL_LOAD
モデルのロード
ML_PREDICT_*
推論
ML_EXPLAIN
説明
ML_SCORE
モデルの検証
ML_EXPLAIN_*
説明の⽣成
推論の⽣成
ML_MODEL_ROAD, ML_PREDICT_ROW, ML_PREDICT_TABLE
ML_MODEL_ROAD(モデル名, ユーザー名)
ML_PREDICT_ROW(対象データ, モデルハンドル)
• 指定した⾏(1レコード)に対する推論を⾏として出⼒
ML_PREDICT_TABLE(対象テーブル, モデルハンドル)
• 指定したテーブル(複数レコード)に対する推論をテーブルとして出⼒
実⾏例︓タイタニック号乗客の⽣存状況推論をテーブルとして出⼒
33 Copyright © 2022, Oracle and/or its affiliates
ML_TRAIN
トレーニング
ML_MODEL_LOAD
モデルのロード
ML_PREDICT_*
推論
ML_EXPLAIN
説明
ML_SCORE
モデルの検証
ML_EXPLAIN_*
説明の⽣成
モデル・推論の説明
ML_EXPLAIN, ML_EXPLAIN_ROW, ML_EXPLAIN_TABLE
ML_EXPLAIN(テーブル名, 対象データ, モデルハンドル, [オプション])
• 推論に最も影響を与える特徴の重要度を-1から1までの値で出⼒
• オプション
• モデル説明⼿法: permutation_importance, shap, fast_shap, partial_dependence(*)
*partial_dependenceを指定する場合は対象のカラム名,カラムが取り得る有効な値をJSON_ARRAYで指定
• 推論説明⼿法: permutation_importance, shap
ML_EXPLAIN_ROW(対象データ, モデルハンドル, [オプション])
• 指定した⾏(1レコード)に対する説明を⾏として出⼒
• オプション
• 推論説明⼿法: permutation_importance, shap
ML_EXPLAIN_TABLE(対象テーブル, モデルハンドル, [オプション])
• 指定したテーブル(複数レコード)に対する説明をテーブルとして出⼒
• オプション
• 推論説明⼿法: permutation_importance, shap
34 Copyright © 2022, Oracle and/or its affiliates
ML_TRAIN
トレーニング
ML_MODEL_LOAD
モデルのロード
ML_PREDICT_*
推論
ML_EXPLAIN
説明
ML_SCORE
モデルの検証
ML_EXPLAIN_*
説明の⽣成
モデル・推論の説明
ML_EXPLAIN, ML_EXPLAIN_ROW, ML_EXPLAIN_TABLE
35 Copyright © 2022, Oracle and/or its affiliates
実⾏例︓タイタニック号乗客の⽣存状況推論の説明をレコードとして出⼒
ML_TRAIN
トレーニング
ML_MODEL_LOAD
モデルのロード
ML_PREDICT_*
推論
ML_EXPLAIN
説明
ML_SCORE
モデルの検証
ML_EXPLAIN_*
説明の⽣成
モデル・推論の説明
ML_EXPLAIN, ML_EXPLAIN_ROW, ML_EXPLAIN_TABLE
36 Copyright © 2022, Oracle and/or its affiliates
実⾏例︓タイタニック号乗客の⽣存状況推論の説明をテーブルとして出⼒
ML_TRAIN
トレーニング
ML_MODEL_LOAD
モデルのロード
ML_PREDICT_*
推論
ML_EXPLAIN
説明
ML_SCORE
モデルの検証
ML_EXPLAIN_*
説明の⽣成
モデルの検証・評価
ML_SCORE
ML_SCORE(テーブル名, 対象データ, モデルハンドル, メトリック, スコア)
• 予測値と既存データを⽐較して0から1の間でスコアリング
• メトリック
• 分類: classification
• accuracy, balanced_accuracy, precision, recall, f1_micro, f1_macro, f1_weighted, f1_samples,
recall_micro, recall_macro, recall_weighted, recall_samples, precision_micro, precision_macro,
precision_weighted, precision_samples
• 回帰: regression
• neg_mean_squared_error, neg_mean_absolute_error, r2, neg_mean_squared_log_error,
neg_median_absolute_error
実⾏例︓タイタニック号乗客の⽣存状況モデルのスコア
37 Copyright © 2022, Oracle and/or its affiliates
ML_TRAIN
トレーニング
ML_MODEL_LOAD
モデルのロード
ML_PREDICT_*
推論
ML_EXPLAIN
説明
ML_SCORE
モデルの検証
ML_EXPLAIN_*
説明の⽣成
モデルの管理
MODEL_CATALOG
• ML_SCHEMA_<user_name>.MODEL_CATALOGテーブルにモデルを格納
• 権限を付与することでモデルの共有
• 既存の学習済みモデル(.onnx)もあわせて管理
38 Copyright © 2022, Oracle and/or its affiliates
モデルカタログ
(MODEL_CATALOGテーブル)
参照可能
モデル作成者
権限付与 参照可能
参照不可
DB管理者
エンコード
インポート
既存モデル
(ONNX)
ノートブックとの連携
Jupyter notebook, Apache Zeppelin
39 Copyright © 2022, Oracle and/or its affiliates
MySQL HeatWave今後の展開
より多くの選択肢を継続して提供
40 Copyright © 2022, Oracle and/or its affiliates
Now in Beta
Announcing MySQL HeatWave Lakehouse
InnoDB
Object Store
Devices Social Voice
Sensors Events
https://www.oracle.com/jp/news/announcement/ocw-oracle-announces-mysql-heatwave-lakehouse-2022-10-18/
まとめ
41 Copyright © 2022, Oracle and/or its affiliates
1.「誰もが使える機械学習」が今後のデータ基盤の重要な要素
2.MySQLで実現する機械学習プラットフォーム HeatWave ML
3.HeatWave MLのメリット
• 機械学習の複雑さとコストを解決
• 機械学習のライフサイクルを簡易化
• ⾼速処理でモデル品質を維持
• 説明機能で実⽤できる予測結果
• 既存開発環境、モデルとの連携
• 継続したイノベーション、機能拡張
機械学習活⽤をHeatWave MLと共に
MySQLで学ぶ機械学習ことはじめ.pdf

MySQLで学ぶ機械学習ことはじめ.pdf