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

はじめに

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

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

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

初心者にとってはまだまだハードルが高いのが現状です。

本連載がそのハードルを下げるものになれば幸いです。

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

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

本記事で利用するデータには通常/異常の判定情報が付与されています

(詳細は連載#2で触れます)。

そこでリモデルまでの流れの見通しをよくするために、本連載ではこれを正解ラベルとしています。

データ探索の一部に Azure Anomaly Detector

(時系列データから異常を見つけるマネージドAIサービス) を利用してみたり、

作成したモデル2種それぞれの使い方を考えてみたりと、アレンジを加えています。

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

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

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

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

チュートリアルの開始

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

ワークスペースの作成

以下の URL から Azure ポータルへログイン

ワークスペースの作成

以下の URL から Azure ポータルへログイン

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

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

image.png
作成をクリック

作成をクリック

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

以下のようにワークスペースを設定、作成をクリック

(ワークスペースの展開に2-3分を要します)

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

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

image.png
こちらの画面に遷移すればワークスペースの作成完了

こちらの画面に遷移すればワークスペースの作成完了

image.png

クラスタの作成

Cluster タブを選択し、Create Cluster をクリック

image.png
任意でクラスタ名を設定し、Creater Cluster をクリック

有償版であれば詳細を設定できます。

今回はオートターミネーションを 60分 に設定。

image.png
しばらく待つと Status が Running に。これで完了。

しばらく待つと Status が Running に。これで完了。

image.png

データのアップロード

以下サイトからデータをダウンロードします。

※ Kaggle のユーザーアカウントが必要

Kaggle – Synthetic Financial Datasets For Fraud Detection

image.png
Data タブを選択し、Add Data をクリック

Data タブを選択し、Add Data をクリック

image.png

Upload File → browse と進み、ダウンロードしたファイルを選択

image.png
アップロードが完了するとこちらの画面に。

デフォルトでは File Store にデータが格納されます。

Create Table with UI をクリック

image.png
先ほど作成したクラスターを選択し、Preview Table をクリック

先ほど作成したクラスターを選択し、Preview Table をクリック

image.png

デフォルトではアップロードしたファイル名が、そのままテーブル名になっています。

これを simfinfraud_detectionに変更します。

オプションは、First row is header (最初の行をカラム名として読み取り)と

Infer Schema (各カラムのデータ型自動類推)にチェックを入れ、

オプションは、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 をクリック

任意で名称を変更、作成したクラスタを選択して、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 上に以下のコマンドを実行します。

dbutils.library.installPyPI("mlflow")

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

mlflow_experiment_id = {your_experiment_id}

import mlflow
import mlflow.spark
import os

print("MLflow Version: %s" % mlflow.__version__)

結果

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

※翻訳まとめ

この記事を書いた人

azure-recipe-user