ローコードでDatabricksを活用してみた
はじめに
みなさん、Databricksというツールを聞いたことはありますでしょうか?
2013年に設立された同名のまだ若い企業が開発したサービスですが、データ分析やデータエンジニアリングの分野に携わっている人であれば誰しも1回は聞いたことのある名前だと思います。
そのデータブリックス社が毎年開催しているイベント、《Data+AI Summit 2022》に参加するため、今回我々ジールのトレンディーな若手3人(+社長)がサンフランシスコに行ってきました。
まだCovid-19が収まらない中での旅にはなりましたが、真夏でも全くジメジメしない素晴らしいサンフランシスコの天気のもと、フィッシャーマンズワーフでクラムチャウダーを食べたり、ゴールデン・ゲート・ブリッジの絶景をカメラに収めたりと、久々の海外を満喫してきました。もっと語りたいことがいっぱいありますが、今回は本題であるDatabricksの話に戻りましょう。
3年ぶりのオンサイト開催になった今年のData+AI Summit2022では様々なDatabricksの新機能が発表されました。いくつか例を挙げると下記のような機能です。
・最先端ストレージフォーマットであるDelta Lakeの完全オープンソース化
・次世代データストリーミングエンジンであるProject Lightspeed
・データガバナンスソリューションのUnity Catalog及び、Unity Catalogのデータリネージュ
・セキュアなデータ共有ソリューション、Delta Sharing
・信頼性の高いデータパイプラインを構築するためのフレームワーク、Delta Live Tables
・ML開発の自動化とスケールに役立つMlflow Pipelines
しかし、これだけだと難しくて何を言ってるのかさっぱり分からないって方もいっぱいいらっしゃるはずです。
続くパートでは、Databricksのツール紹介も兼ねてDatabricksを使ったちょっとしたなチャレンジをしてみたので、その内容をみなさんに公開したいと思います。
具体的にはデータサイエンティストにとって登竜門的なタイタニックのデータを用いて、2021年にDatabricksが買収した8080 Labsが提供していたBamboolibでデータのEDA・前処理、AutoMLでモデルを開発し、ベンチマークを比較していきます。
1.Databricksとは?
Databricksとはデータ分析のプラットフォームです。他のクラウドベンダーが提供するサービスやAIプラットフォームと比較して、Databricksはコーディングベースで少しとっつきづらい印象があるかもしれません。しかし、今回ご紹介するデータサイエンス領域に関してはローコードな実装が可能です。
2.Databricksにおけるノーコード/ローコードな実装方法例
①前処理:Bamboolib
②モデル開発・トラッキング:AutoML
③モデルのステージング:MLflow
①Bamboolib:
PandasのデータフレームをGUIベースで操作できるライブラリ。8080Labsが開発し、2021年にDatabricksが買収した。具体的に、データの前処理、変換、可視化、EDAがノーコードで実施可能。
②AutoML:
テーマやモデルごとに特有な特徴量の抽出、モデルアーキテクチャとハイパーパラメータのグリッドサーチを含めた学習、評価を自動で実施するサービス。Databricksの場合、”glass box”アプローチとして実施した全学習過程をNotebookとして保存するため、再利用が可能。
③MLflow:
MLOpsのためのライブラリ。DatabricksのMLランタイムではデフォルトでインストールされており、モデルのトラッキング、バージョン管理等が容易にできる。
3.タイタニックのデータを使って実装してみよう
データのロード
今回はタイタニックのデータを使用するため、手動でDatabricksのファイルストレージにアップロードしたCSVをPandasのDataFrameに読み込みます。また、読み込んだデータの最初の5行を確認します。
ベンチマークの確認
現状Kaggle上には14,959件サブミットされており、半数以上のスコアが0.75-0.8に集約しています。本稿ではテストデータに対する予測をサブミットまではしませんが、validationデータセットに対するAccuracyの精度のベンチマークを0.8とします。
4.前処理:Bamboolib
EDA:Bamboolibのインストール
今回前処理に使用するBamboolibはPandasのデータの探索、前処理、変換、可視化をローコードで行うことができます。GUIで実施した処理はコードとして出力も可能なため、再利用性が高く、データサイエンティストにとってパワフルなツールです。
DatabricksでBamboolibを使用するには、クラスタにインストールするか、以下のようにNotebook上から%pipコマンドでライブラリをインストールする必要があります。
使い方は非常に簡単で、以下のようにDataFrameを実行するとウィジェットが立ち上がり、クリックベースでデータの探索等が可能です。
EDA:データ理解のための単純な描画
「Create plot」を選択すると、任意のグラフ種類や使用する項目を選び、データを描画することができます。以下では、男性より女性の方が救出された人数が多いことがわかります。
EDA:欠損値チェック
Bamboolibを使用することで欠損値を確認できます。「Age」、「Cabin」、「Embarked」に欠損値が含まれており、特に「Cabin」は半数以上値が欠損していることがわかります。
EDA:外れ値チェック
数値型の項目にはヒストグラムを標準で描画するため、外れ値のチェックを目視で実施できます。「Age」の最小値に浮動小数点が含まれていることから、一部外れ値が含まれていることがわかります。
EDA:相関チェック
数値型の項目に対してCorelationマップを標準で生成するため、目的変数の「Survived」に対する相関を可視化することができます。下図から、「Pclass」、「Fare」の相関がありそうなことがわかります。
Featurization
以下は欠損値補完や新規列作成、列削除をGUIベースで実施し、その過程bamboolibがコードとしてアウトプットしたもので、この程度の簡単な前処理であれば完全にコードレスで実施可能です。
5.モデル作成:AutoML
DatabricksのAutoMLでは以下のように最小限の設定で、最適なモデルのアーキテクチャ、ハイパーパラメータのチューニング等を実施します。また、glass boxアプローチでAutoMLで作成したモデルを再現できるNotebookが生成されるため、AutoMLでクイックにベースラインモデルを作成し、細かいチューニングをデータサイエンティストが実施することで、効率的にモデルの開発を進めることが可能です。
6.モデルの登録・予測
本来はワークフローに組み込み、自動A/Bテスト等と組み合わせるため、ノーコード/ローコードとはいきませんが、GUIベースでモデルのバージョン管理(Staging/Production/Archived)を実施できます。
7.予測結果の可視化、ベンチマーク比較
ValidationデータセットとSubmit用のデータセットとの比較でフェアではないが、AutoMLで作成したモデルは前処理なし/あり両方のAutoMLでベンチマークの0.8を達成していることがわかります。
おわりに(感想)
いかがだったでしょうか?
Databricksはコーディングベースでとっつきづらいという印象が少しは変わったのではないでしょうか。
AutoMLに関しては、それ単体で完結するユースケースはあまりないと思われます。しかし、Notebookの再利用性の高さから、最初のベースラインとなるモデルをスピーディに作成できる点はデモを作るときなどに便利そうだと思いました。面倒なEDAや前処理のGUI化もコーディングが苦手な方には嬉しいですね。是非みなさんも機会があればDatabricksでのローコード、試してみてはいかがでしょうか。
それでは、最後まで読んでいただきありがとうございました。
またの機会にお会いしましょう!