【Databricks】データ分析で異常検知 ~導入編~【入門】

はじめに

データ分析プラットフォームである Databricks は、処理速度やコストの面において高く評価されており、欧米でのスタンダードサービスとなっています。

テーマ選定の背景としては

  • 日本語の情報が少なかったり
  • 技術難易度が高いレクチャーが多い

初心者にとってはまだまだハードルが高いのが現状です。
本連載がそのハードルを下げるものになれば幸いです。

本記事チュートリアルについて

  • 公式ドキュメントでは、既存の異常検知ロジックをコードで記載
  • その結果を正解ラベルに用いて、機械学習モデルを構築

本記事で利用するデータには通常/異常の判定情報が付与されています
(詳細は連載#2で触れます)。
そこでリモデルまでの流れの見通しをよくするために、本連載ではこれを正解ラベルとしています。

データ探索の一部に Azure Anomaly Detector
(時系列データから異常を見つけるマネージドAIサービス) を利用してみたり、
作成したモデル2種それぞれの使い方を考えてみたりと、アレンジを加えています。

個人的に Databricks の好きなところ

  • 知識の共有がしやすい
  • ユーザビリティを強く意識して作られている GUI
  • 他のサービス (データベースとかBIツール) との連携性がいい
  • モデルの利用や継続的な改善に至るまでの導線がスムーズ

これが結果的に下記に繋がると思います。

  • 分析チームの生産性を上げやすくなる
  • 学習コストが低い

チュートリアルの開始

モバイル決済のログデータから、各決済が正常取引か不正取引かを判定していきます。

ワークスペースの作成
以下の URL から Azure ポータルへログイン
https://azure.microsoft.com/ja-jp/

image.png
左上の+をクリックし、検索窓に Databricks と入力し、候補に出てきた Azure Databricks をクリック
image.png
作成をクリック
image.png
以下のようにワークスペースを設定、作成をクリック
(ワークスペースの展開に2-3分を要します)
image.png
しばらくするとワークスペース展開完了の通知が届くので、リソースに移動をクリック
image.png
こちらの画面に遷移すればワークスペースの作成完了
image.png

クラスタの作成

Cluster タブを選択し、Create Cluster をクリック
image.png
任意でクラスタ名を設定し、Creater Cluster をクリック
有償版であれば詳細を設定できます。
今回はオートターミネーションを 60分 に設定。
image.png
しばらく待つと Status が Running に。これで完了。
image.png

データのアップロード

以下サイトからデータをダウンロードします。
※ Kaggle のユーザーアカウントが必要
Kaggle – Synthetic Financial Datasets For Fraud Detection
image.png
Data タブを選択し、Add Data をクリック
image.png
Upload File → browse と進み、ダウンロードしたファイルを選択
image.png
アップロードが完了するとこちらの画面に。
デフォルトでは File Store にデータが格納されます。
Create Table with UI をクリック
image.png
先ほど作成したクラスターを選択し、Preview Table をクリック
image.png
デフォルトではアップロードしたファイル名が、そのままテーブル名になっています。
これを sim_fin_fraud_detectionに変更します。
オプションは、First row is header (最初の行をカラム名として読み取り)と
Infer Schema (各カラムのデータ型自動類推)にチェックを入れ、
Create Table をクリック。
image.png

mlflow experiment 設定

機械学習のライフサイクル管理にとても便利な mlflow ですが、
今回はモデルの比較という用途に絞って最低限の設定を行います。

Workspace → ユーザー名 → プルダウンで Createと進み、MLflow Experiment をクリック
image.png
名称を任意で指定、Create をクリックします。
Artifact Loacation は特別に指定しなくてOK
image.png
以下の画面に遷移します。
Experiment ID は Notebook の中で使うのでメモしておきます。
image.png

Collaborative Notebook 作成

実際にコードを記載して分析ロジックをくみ上げたり、その中にメモを残したりする Collaborative Notebook を作成します。
使い勝手は Jupyter Notebook にかなり近いです。

トップ画面から、Create a Blank Notebook をクリック
image.png
任意で名称を変更、作成したクラスタを選択して、Create をクリック
image.png
以下の画面になればOKです。
image.png

Collaborative Notebook 使用方法

灰色のエリア(セル)にコードを書き、shift + enter を押すことで、セルが実行されます。
image.png
%md の後に文章を入力、セルを実行することで、markdown 形式で Notebook 上にメモを残すことができます。
image.png
セル中央部の下もしくは上にマウスカーソルを当て、+ をクリックすると新しいセルを追加できます。
image.png
セル左上のプルダウンより、対象のセルから上、もしくはセルより下のセルを実行できます。
image.png
セル上部の消しゴムアイコンから clear result を選択することで、実行結果をクリアできます。
image.png
クラスタが停止した場合は、クラスタアイコンから、Start Cluster をクリックします。
image.png
mlflow 初期設定
クラスタに mlflow をインストールするために、 Notebook 上に以下のコマンドを実行します。

= の後に、先ほど作成した mlflow experiment の id を入力、同じく実行します。

結果
MLflow Version: 1.9.1

以上の2つのセルを実行しておくことで、この Notebook 上で行うモデリング処理が mlflow に記録されるようになります。

備考:Notebook のインポート

Databricks の公式事例ページや Github には、そのまま活用できる Collaborative Notebook がアップロードされています。
以下の方法でインポート可能です。

Workspace から User を選択し、以下のプルダウンから Import をクリックします。
image.png

URL を選択し、インポートしたい Notebook の URL を張り付け、Import をクリックします
image.png

おわりに

今まで専門分野ではなく、データ分析を学ぶ必要があったり
機械学習を社内で取り入れていく必要があるが、一から学習するには時間がかかる、、、という時の救世主になるのではないかと思います!

次回はインポートしたデータの中身を見ていきます。お楽しみに!

関連記事リンク

本連載は、Databricks 社が展開している以下のコンテンツをベースにしています。
Detecting Financial Fraud at Scale with Decision Trees and MLflow on Databricks
※翻訳まとめ