【はじめての Databricks】金融取引データから異常検知 #1 導入/環境構築

はじめに

データ分析プラットフォームである Databricks は、その特性上、主に処理速度やコストの面で他のサービスと比較されがちです。もちろんそれらの点において高く評価されているからこそ欧米でのデファクトスタンダードになっているわけですが、私自身は、サービスとしての完成度の高さが一番の強みだと感じています。例えば、

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

といった点です。つまり、

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

サービスに仕上がっていると言えます。ただ、日本語の情報が少なかったり技術難易度が高いレクチャーが多かったりと、初心者にとってはまだまだハードルが高いのが現状です。本連載がそのハードルを下げるものになれば幸いです。

テーマ選定の背景

本連載は、Databricks 社が展開している以下のコンテンツをベースにしています。
モバイル決済のログデータから、各決済が正常取引か不正取引かを判定しよう、というものです。

Detecting Financial Fraud at Scale with Decision Trees and MLflow on Databricks
※翻訳まとめ

このコンテンツを選んだ理由は以下の通りです。

  • テーマが異常検知
    • どの業界でも普遍的なテーマ
    • 手元のデータだったらどうかという想像がしやすい
    • 継続的な改善が不可欠で、Databricksの利点が生きる (異常の定義は時々刻々と変わる)
  • 決定木のアルゴリズムを使う
    • モデルの説明性・透明性が高く、既存のルールとの比較が容易
    • リモデルに要する工数が低い
    • ドメイン知識を反映しやすい
  • データを入手しやすい
    • Kaggle に登録すればすぐに使える

公式ドキュメントでは、既存の異常検知ロジックをコードで記載、その結果を正解ラベルに用いて機械学習モデルを構築しています。実ビジネスでは最初にこのようなプロセスを踏むのが定石のようですが、今回利用するデータには通常/異常の判定情報が付与されています(詳細は連載#2で触れます)。そこでリモデルまでの流れの見通しをよくするために、本連載ではこれを正解ラベルとしています。

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

連絡目次

  1. 導入/環境設定 → 本稿
  2. Collaborative Notebook でデータ可視化
  3. Anomaly Detector をデータ探索ツールとして使ってみる
  4. 1つ目のモデル構築 (データの偏り 未考慮)
  5. 2つ目のモデル構築 (データの偏り 考慮)

Azure Databricks とは

過去書いた記事のリンクです。

前置きが長くなりました。
では環境構築していきます。

ワークスペースの作成

以下の URL から Azure ポータルへログイン
https://azure.microsoft.com/ja-jp/
image.png

左上のをクリックし、検索窓に Databricks と入力し、候補に出てきた Azure Databricks をクリック
image.png

作成をクリック
image.png

以下のようにワークスペースを設定、作成をクリック
(ワークスペースの展開に2-3分を要します)
image.png

しばらくするとワークスペース展開完了の通知が届くので、リソースに移動をクリック
image.png

こちらの画面に遷移すればワークスペースの作成完了
2020-08-21_13h49_44.png

クラスタの作成

Cluster タブを選択し、Create Cluster をクリック
2020-06-26_12h08_24.png

任意でクラスタ名を設定し、Creater Cluster をクリック
有償版であれば詳細を設定できます。今回はオートターミネーションを 60分 に設定。

2020-06-28_11h18_52.png

しばらく待つと Status が Running に。これで完了。
2020-06-28_11h25_22.png

データのアップロード

以下サイトからデータをダウンロードします。※ Kaggle のユーザーアカウントが必要
Kaggle – Synthetic Financial Datasets For Fraud Detection
image.png

Data タブを選択し、Add Data をクリック
2020-06-26_12h01_49.png

Upload File → browse と進み、ダウンロードしたファイルを選択
2020-06-26_12h03_15.png

アップロードが完了するとこちらの画面に。デフォルトでは File Store にデータが格納されます。
Create Table with UI をクリック
2020-06-26_12h05_47.png

先ほど作成したクラスターを選択し、Preview Table をクリック
2020-06-26_12h53_28.png

デフォルトではアップロードしたファイル名がそのままテーブル名になっているので、これを sim_fin_fraud_detectionに変更します。
オプションは、First row is header (最初の行をカラム名として読み取り)と Infer Schema (各カラムのデータ型自動類推)にチェックを入れ、Create Table をクリック
2020-06-26_12h56_47.png

mlflow experiment 設定

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

Workspace → ユーザー名 → プルダウンで Createと進み、MLflow Experiment をクリック
2020-06-26_13h40_47.png

名称を任意で指定、Create をクリックします。Artifact Loacation は特別に指定しなくてOK
2020-06-26_13h41_41.png

以下の画面に遷移します。Experiment ID は Notebook の中で使うのでメモしておきます。
2020-06-26_13h42_29.png

Collaborative Notebook 作成

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

トップ画面から、Create a Blank Notebook をクリック
2020-06-28_12h17_08.png

任意で名称を変更、作成したクラスタを選択して、Create をクリック
2020-06-28_12h20_01.png

以下の画面になればOKです。
2020-06-28_12h21_05.png

使用方法

灰色のエリア(セル)にコードを書き、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 をクリックします。
2020-06-26_13h58_59.png

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

まとめ

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

参考リンク

Detecting Financial Fraud at Scale with Decision Trees and MLflow on Databricks
Detecting Financial Fraud at Scale with Decision Trees and MLflow on Databricks 翻訳まとめ
Azure Databricks: 1. リソースの作成
Azure Databricks で、他の Notebook を呼び出す、基礎: Hello World レベル
pysparkでデータハンドリングする時によく使うやつメモ