0
0

More than 1 year has passed since last update.

Databricks AutoMLを使って時系列予測問題を解いてみる(GUI編)

Posted at

こちらの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 pyspark.pandas as ps
    df = ps.read_csv("/databricks-datasets/COVID/covid-19-data")
    df["date"] = ps.to_datetime(df['date'], errors='coerce')
    df["cases"] = df["cases"].astype(int)
    
    # Sparkデータフレームに変換
    input_sdf = df.to_spark()
    
    # データベースにテーブルcovid_19_dataとして登録
    input_sdf.write.format("parquet").saveAsTable("covid_19_data")
    

データベースにテーブルが登録されると、サイドメニューのデータからテーブルを確認することができます。
Screen Shot 2022-08-15 at 16.14.01.png
Screen Shot 2022-08-15 at 16.14.14.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 16.15.41.png
  4. すると、トレーニングデータセットのスキーマが表示されます。
    Screen Shot 2022-08-15 at 16.16.13.png
  5. 以下の設定を行います。
    • 予測ターゲットには予測対象となるカラムを選択します。ここでは、感染者数を示すcasesを選択します。
    • 時間列には記録された日時を示すdateを選択します。
    • 予測期間には30日を指定します。
    • エクスペリメント名はデフォルトのままとしておきます。
    • Output Databaseには予測結果のデータを格納するデータベースを指定することができます。ここでは、Browseをクリックして、上のステップで作成したデータベースを選択して、選択をクリックします。
      Screen Shot 2022-08-15 at 16.20.13.png
  6. 以下のように設定されていることを確認したら、一番下にあるAutoMLを開始ボタンをクリックします。
    Screen Shot 2022-08-15 at 16.20.35.png

AutoMLの実行

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

AutoMLの結果の確認

  1. トレーニングに用いたデータの分布などを確認するには、データ探索用ノートブックの表示をクリックします。
  2. 別タブでノートブックが開き、データの時系列変化などを確認することができます。
    Screen Shot 2022-08-15 at 16.30.32.png
  3. 一番精度が良かったモデルの詳細を確認するには、最適なモデルのノートブックを表示をクリックするか、モデル一覧の一番上の行のSource列のリンクをクリックしてノートブックを開きます。今回のベストモデルを作成したのはARIMAであることがわかります。
    Screen Shot 2022-08-15 at 16.33.47.png
  4. 予測結果も確認することができます。
    Screen Shot 2022-08-15 at 16.34.42.png
  5. また、今回は結果をデータベースに登録しているので以下の画面に表示されれている指示に従うことでデータにアクセスすることができます。
    Screen Shot 2022-08-15 at 16.35.36.png
  6. ノートブックで以下のコマンドを実行して予測結果にアクセスします。
    SQL
    %sql
    select * from automl_takaakiyayoidatabrickscom.forecast_prediction_966f2be7
    
    Screen Shot 2022-08-15 at 16.37.16.png
    Screen Shot 2022-08-15 at 16.41.28.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