0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricks AutoMLを使って回帰問題を解いてみる(GUI編)

Last updated at Posted at 2022-08-15

こちらのGUI編です。

注意
Databricks Community EditionではAutoMLのGUIを使用することはできません。

クラスターを作成する

AutoMLの実行にはDatabricksクラスターが必要となります。機械学習ランタイム(以下の例では11.1ML)を選択してクラスターを作成し、起動しておきます。
Screen Shot 2022-08-15 at 9.02.26.png

データセットを準備する

GUIを使用してAutoMLを実行するには、トレーニングデータセットがデータベースに登録されている必要があります。

  1. ノートブックを作成し、上のステップで作成したクラスターにアタッチします。
    Screen Shot 2022-08-15 at 9.20.30.png
  2. 以下のコマンドを実行します。
    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)
    
    あなたのユーザー名が埋め込まれたデータベース名でデータベースが作成されます。
    Screen Shot 2022-08-15 at 9.21.32.png
  3. 以下のコマンドを実行してテーブルをデータベースに登録します。
    Python
    import sklearn
    input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
    
    # Sparkデータフレームに変換
    input_sdf = spark.createDataFrame(input_pdf.frame) 
    
    # データベースにテーブルcalifornia_housingとして登録
    input_sdf.write.format("parquet").saveAsTable("california_housing")
    

データベースにテーブルが登録されると、サイドメニューのデータからテーブルを確認することができます。
Screen Shot 2022-08-15 at 15.20.21.png
Screen Shot 2022-08-15 at 15.20.43.png

注意
ここでは全てのデータを登録しており、次のステップではトレーニングデータセットとして使用しています。ホールドアウトデータを用いて精度検証を行う場合には、事前にデータを分割しておくことをお勧めします。

AutoMLのGUIにアクセスする

  1. Databricksワークスペースにログインします。画面が日本語になっていない場合は、こちらを参考にGUIを日本語に切り替えてください。
  2. サイドメニューのDatabricksロゴの下にDが表示されている場合にはクリックして、M Machine Learningを選択します。これはペルソナスイッチャーと呼ばれるインタフェースで、作業の内容に応じてペルソナを切り替えることでメニュー項目が切り替わります。
    Screen Shot 2022-08-15 at 8.55.48.png
  3. サイドメニューからエクスペリメントをクリックします。
    Screen Shot 2022-08-15 at 8.56.13.png
  4. エクスペリメント(MLflowランの管理単位)の一覧が表示されます。
    Screen Shot 2022-08-15 at 8.59.37.png
  5. 左上にあるAutoMLエクスペリメントを作成をクリックします。AutoMLの設定画面が表示されます。
    Screen Shot 2022-08-15 at 9.00.53.png

AutoMLのGUIから設定を行う

  1. クラスターでは、上のステップで作成したクラスターを選択します。
    Screen Shot 2022-08-15 at 9.06.19.png
  2. 機械学習の問題のタイプでは回帰を選択します。
  3. データセットでは、Browseをクリックします。上のステップで作成したテーブルを選択して、選択をクリックします。
    Screen Shot 2022-08-15 at 15.24.43.png
  4. すると、トレーニングデータセットのスキーマが表示されます。ここで、トレーニングデータセットに含めるカラムを選択したり、null値の取り扱いを指定することができますが、ここではデフォルトのままとしておきます。
    Screen Shot 2022-08-15 at 15.25.16.png
  5. 予測ターゲットでは、予測対象となる目的変数を選択します。ここでは、住宅価格の中央値であるMedHouseValを選択します。エクスペリメント名はデフォルトのままとしておきます。
  6. 以下のように設定されていることを確認したら、一番下にあるAutoMLを開始ボタンをクリックします。
    Screen Shot 2022-08-15 at 15.25.41.png

AutoMLの実行

  1. トレーニングが始まると進捗を表示する画面に切り替わります。
    Screen Shot 2022-08-15 at 15.27.17.png
  2. リフレッシュボタンを押すと、トレーニングされたモデルの一覧が更新されます。ここでは精度指標としてval_r2_scoreが用いられており、常にベストなval_r2_scoreを出したモデルが上に表示されるようになっています。
    Screen Shot 2022-08-15 at 15.31.18.png
    Screen Shot 2022-08-15 at 15.31.24.png
  3. トレーニングが完了すると完了と表示されます。
    Screen Shot 2022-08-15 at 15.40.45.png

AutoMLの結果の確認

  1. トレーニングに用いたデータの分布などを確認するには、データ調査用ノートブックのリンクをクリックします。
  2. 別タブでノートブックが開きます。
    Screen Shot 2022-08-15 at 15.41.31.png
  3. 各特徴量の分布や特徴量同士の相関などを確認することができます。
    Screen Shot 2022-08-15 at 15.41.54.png
    Screen Shot 2022-08-15 at 15.42.12.png
  4. 一番精度が良かったモデルの詳細を確認するには、最適なモデルのノートブックを表示をクリックするか、モデル一覧の一番上の行のSource列のリンクをクリックしてノートブックを開きます。
    Screen Shot 2022-08-15 at 15.42.52.png
  5. 今回のベストモデルを作成したのはLightGBMであることがわかります。
    Screen Shot 2022-08-15 at 15.43.29.png
  6. ノートブックを下にスクロールしていくと、具体的にどのような処理を行っているのかを確認することができます。こちらを再度実行しても同じ結果を得ることができますし、処理をカスタマイズすることも可能です。
    Screen Shot 2022-08-15 at 15.44.10.png
  7. ここでは各特徴量が予測結果にどのような影響を与えているのかを確認できるSHAP値を表示させてみたいと思います。shap_enabled = Falseとなっている部分をshap_enabled = Trueに変更し、ノートブックをクラスターにアタッチしてノートブックを実行します。
    Screen Shot 2022-08-15 at 15.44.55.png
  8. すると、ノートブック上にSHAP値が表示され、以下の結果からLatitude(地域の緯度)、MedInc(収入の中央値)、Longitude(地域の軽度)が予測に大きな影響を与えていることがわかります。
    Screen Shot 2022-08-15 at 15.46.40.png

まとめ

こちらでは、GUIの操作を主体としたAutoMLを体験いただきました。Databricks AutoMLではGUIもPython APIもサポートしていますが、それよりも重要なのは中身の処理が全てわかるようになっているガラスボックスアプローチであると考えています。これには以下のメリットがあります。

  • 機械学習プロジェクトにおけるベースラインモデルをクイックに構築し、以降のカスタマイズを容易に行えます。
  • いわゆるシチズンデータサイエンティストとプロフェッショナルデータサイエンティストのコラボレーションも円滑に行えるようになります(シチズンデータサイエンティストがビジネス知識を活かしてベースラインモデルを構築し、プロフェッショナルデータサイエンティストがチューニングを行う等)。

この他、Databricksでの機械学習に興味がある方はこちらの記事もご覧になってください。

Databricks 無料トライアル

Databricks 無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?