こちらのGUI編です。
注意
Databricks Community EditionではAutoMLのGUIを使用することはできません。
クラスターを作成する
AutoMLの実行にはDatabricksクラスターが必要となります。機械学習ランタイム(以下の例では11.1ML)を選択してクラスターを作成し、起動しておきます。
データセットを準備する
GUIを使用してAutoMLを実行するには、トレーニングデータセットがデータベースに登録されている必要があります。
-
ノートブックを作成し、上のステップで作成したクラスターにアタッチします。
- 以下のコマンドを実行します。
Python
import re from pyspark.sql.types import * # ログインIDからUsernameを取得 username_raw = dbutils.notebook.entry_point.getDbutils().notebook().getContext().tags().apply('user') # Username の英数字以外を除去し、全て小文字化。Username をファイルパスやデータベース名の一部で使用可能にするため。 username = re.sub('[^A-Za-z0-9]+', '', username_raw).lower() # データベース名 db_name = f"automl_{username}" # Hiveメタストアのデータベースの準備:データベースの作成 spark.sql(f"DROP DATABASE IF EXISTS {db_name} CASCADE") spark.sql(f"CREATE DATABASE IF NOT EXISTS {db_name}") # Hiveメタストアのデータベースの選択 spark.sql(f"USE {db_name}") print("database name: " + db_name)
- 以下のコマンドを実行してテーブルをデータベースに登録します。
Python
from pyspark.sql.types import DoubleType, StringType, StructType, StructField # スキーマ定義 schema = StructType([ StructField("age", DoubleType(), False), StructField("workclass", StringType(), False), StructField("fnlwgt", DoubleType(), False), StructField("education", StringType(), False), StructField("education_num", DoubleType(), False), StructField("marital_status", StringType(), False), StructField("occupation", StringType(), False), StructField("relationship", StringType(), False), StructField("race", StringType(), False), StructField("sex", StringType(), False), StructField("capital_gain", DoubleType(), False), StructField("capital_loss", DoubleType(), False), StructField("hours_per_week", DoubleType(), False), StructField("native_country", StringType(), False), StructField("income", StringType(), False) ]) # データ読み込み input_df = spark.read.format("csv").schema(schema).load("/databricks-datasets/adult/adult.data") # データベースにテーブルus_adult_censusとして登録 input_df.write.format("parquet").saveAsTable("us_adult_census")
データベースにテーブルが登録されると、サイドメニューのデータからテーブルを確認することができます。
注意
ここでは全てのデータを登録しており、次のステップではトレーニングデータセットとして使用しています。ホールドアウトデータを用いて精度検証を行う場合には、事前にデータを分割しておくことをお勧めします。
AutoMLのGUIにアクセスする
- Databricksワークスペースにログインします。画面が日本語になっていない場合は、こちらを参考にGUIを日本語に切り替えてください。
- サイドメニューのDatabricksロゴの下にDが表示されている場合にはクリックして、M Machine Learningを選択します。これはペルソナスイッチャーと呼ばれるインタフェースで、作業の内容に応じてペルソナを切り替えることでメニュー項目が切り替わります。
- サイドメニューからエクスペリメントをクリックします。
- エクスペリメント(MLflowランの管理単位)の一覧が表示されます。
- 左上にあるAutoMLエクスペリメントを作成をクリックします。AutoMLの設定画面が表示されます。
AutoMLのGUIから設定を行う
-
クラスターでは、上のステップで作成したクラスターを選択します。
-
機械学習の問題のタイプが
分類
であることを確認します。 -
データセットでは、Browseをクリックします。上のステップで作成したテーブルを選択して、選択をクリックします。
- すると、トレーニングデータセットのスキーマが表示されます。ここで、トレーニングデータセットに含めるカラムを選択したり、null値の取り扱いを指定することができますが、ここではデフォルトのままとしておきます。
-
予測ターゲットでは、予測対象となる目的変数を選択します。ここでは、年収である
income
を選択します。エクスペリメント名はデフォルトのままとしておきます。 - 以下のように設定されていることを確認したら、一番下にあるAutoMLを開始ボタンをクリックします。
AutoMLの実行
- トレーニングが始まると進捗を表示する画面に切り替わります。
-
リフレッシュボタンを押すと、トレーニングされたモデルの一覧が更新されます。ここでは精度指標として
val_f1_score
が用いられており、常にベストなval_f1_score
を出したモデルが上に表示されるようになっています。
- トレーニングが完了すると完了と表示されます。
AutoMLの結果の確認
- トレーニングに用いたデータの分布などを確認するには、データ調査用ノートブックのリンクをクリックします。
- 別タブでノートブックが開きます。
- 各特徴量の分布や特徴量同士の相関などを確認することができます。
- 一番精度が良かったモデルの詳細を確認するには、最適なモデルのノートブックを表示をクリックするか、モデル一覧の一番上の行のSource列のリンクをクリックしてノートブックを開きます。
- 今回のベストモデルを作成したのはLightGBMであることがわかります。
- ノートブックを下にスクロールしていくと、具体的にどのような処理を行っているのかを確認することができます。こちらを再度実行しても同じ結果を得ることができますし、処理をカスタマイズすることも可能です。
- ここでは各特徴量が予測結果にどのような影響を与えているのかを確認できるSHAP値を表示させてみたいと思います。
shap_enabled = False
となっている部分をshap_enabled = True
に変更し、ノートブックをクラスターにアタッチしてノートブックを実行します。
- すると、ノートブック上にSHAP値が表示され、以下の結果から
captal_gain
(投資資産による利益)、marital_status
(既婚・未婚)がいずれの予測結果(年収が50Kドルより高い、50Kドル以下)に対しても大きな影響を与えていることがわかります。
まとめ
こちらでは、GUIの操作を主体としたAutoMLを体験いただきました。Databricks AutoMLではGUIもPython APIもサポートしていますが、それよりも重要なのは中身の処理が全てわかるようになっているガラスボックスアプローチであると考えています。これには以下のメリットがあります。
- 機械学習プロジェクトにおけるベースラインモデルをクイックに構築し、以降のカスタマイズを容易に行えます。
- いわゆるシチズンデータサイエンティストとプロフェッショナルデータサイエンティストのコラボレーションも円滑に行えるようになります(シチズンデータサイエンティストがビジネス知識を活かしてベースラインモデルを構築し、プロフェッショナルデータサイエンティストがチューニングを行う等)。
この他、Databricksでの機械学習に興味がある方はこちらの記事もご覧になってください。
- Databricks AutoMLのご紹介 : 機械学習開発の自動化に対するガラスボックスアプローチ
- Databricks AutoMLのマニュアル
- あなたの機械学習プロジェクトをDatabricks AutoMLでスーパーチャージしましょう
- Databricks機械学習ガイド
- Databricksにおける機械学習チュートリアル
- Databricksで機械学習を始めてみる
- 機械学習エンジニアとしてDatabricksを使い始める
- Databricksにおける機械学習モデル構築のエンドツーエンドのサンプル