機械学習を利用した不正検知サービス Amazon Fraud Detector を触ってみる

こんにちは。
ナレッジコミュニケーション　繁松です。

この記事は株式会社ナレッジコミュニケーションが運営する [Amazon AI by ナレコム Advent Calendar 2020](https://qiita.com/advent-calendar/2020/knowcom-amazonai) の 18日目にあたる記事になります。

本日は、機械学習を利用した不正検知サービスの[Amazon Fraud Detector]について書きたいと思います。

## Amazon Fraud Detectorとは
AWSより[引用](https://aws.amazon.com/jp/fraud-detector/features/)

```
Amazon Fraud Detector は完全マネージドサービスであり、オンライン支払い詐欺や偽のアカウントの作成など、潜在的に不正なオンラインアクティビティを簡単に識別できます。
Amazon Fraud Detector は、機械学習 (ML) と AWS およびAmazon.com の 20 年にわたる不正検出の専門知識を使用して、不正行為の可能性を自動的に特定し、より多くの不正行為を迅速に発見できるようにします。
Amazon Fraud Detector は、数回クリックするだけで、ML の経験がまったくない不正検出モデルを作成できます。
これは、Amazon Fraud Detector がすべての ML の手間のかかる作業を処理するためです。
```

**機械学習の知識が無い人でも簡単に詐欺、偽のアカウント作成等の不正検知を取り入れることができるフルマネージドサービスです。**


## Amazon Fraud Detectorを使ってみた

実際に使ってみたいと思います。
手順は以下の手順になります。

AWSブログより[引用](https://aws.amazon.com/jp/blogs/news/amazon-fraud-detector-is-now-generally-available/)

```
ステップ 1: 不正行為について評価したいイベントを定義する。
ステップ 2: 履歴的なイベントデータセットを Amazon S3 にアップロードして、不正検出モデルタイプを選択する。
ステップ 3: Amazon Fraud Detector が履歴データを入力として使用し、カスタムモデルを構築する。
           このサービスは、自動的にデータを調べてリッチ化し、特徴量エンジニアリングを実行して、アルゴリズムの選択、およびモデルのトレーニングと調整を行い、モデルをホストします。
ステップ 4: モデルの予測に基づいて受け入れる、レビューする、またはより多くの情報を収集するかどうかのルールを作成する。
ステップ 5: オンラインアプリケーションから Amazon Fraud Detector API を呼び出して、リアルタイムの不正行為予測を受け取り、設定された検出ルールに基づいて措置を講じる。 
           (例: e コマースアプリケーションは、E メールと IP アドレスを送信し、不正行為スコアとルールからの出力 (例: レビュー) を受け取ることができます)
```

数クリックで簡単に？とは行かなそうですが、実際にやってみたいと思います。
今回は公式のチュートリアルの「パートA：Amazon Fraud Detectorモデルを構築」を参考に進めて行きます。

### 1. サンプルのトレーニングデータの取得、アップロード
AWS公式の架空のトレーニングデータを以下のURLよりダウンロードします。
[ダウンロードはこちら](https://docs.aws.amazon.com/frauddetector/latest/ug/samples/training_data.zip)

次にS3バケットにトレーニングデータをアップロードします。
※今回amazon-fraud-detector-testというバケットを作成しています。
※Zipファイルには、[registration_data_20K_full.csv]と[registration_data_20K_minimum.csv]が入っています。
S3とAmazon Fraud Detectorのリージョンは同じリージョンにする必要があります。
![画像２.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/1ab18a94-da9e-6823-feaf-f3e48e3d1457.jpeg)


今回は[registration_data_20K_minimum.csv]をアップロードします。
![画像１.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/53848243-7701-b718-e41e-cf938035941d.jpeg)


ファイルの中身はこのような感じです。
![画像３.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/4164fac3-477e-5285-9398-0994f1ee548d.jpeg)


### 2. イベント作成
実際にAmazon Fraud Detectorにイベントを作成していきます。
東京リージョンは2020年12月18日現在、未対応ですので、、バージニア北部リージョンに作成します。
![画像４.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/6a52cba3-5314-36d0-2534-b5287aa31d9c.jpeg)

エンティティを作成し、選択します。
![画像５.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/ae18a9c1-35dd-c7cd-1273-e7ae9b33f3a4.jpeg)


[トレーニングデータセットから変数を選択する]を選択し、IAMロールの作成を行います。
IAMロール名は先程作成したS3バケット名と同じ名前にします。
![画像６.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/f3519c86-565a-b9d1-cb23-06d721758340.jpeg)


先程アップロードしたcsvファイルのS3 URLを入力しアップロードを行い、
表示された変数の変数型を指定します。
![画像７.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/f618e168-1457-cc19-4474-2120054078f5.jpeg)

ラベルを少なくとも2つ定義する必要があるので、
[fraud]と[legit]を定義し、イベントタイプの作成を行います。
![画像８.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/4dda9d00-2255-4504-4324-f5f045e6a54f.jpeg)

## 3. モデル作成
イベントタイプ作成が完了したら、モデルの作成を行います。
![画像９.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/6f100363-83a1-bbf2-2dc2-8dd055e04f68.jpeg)


イベントタイプは先程作成したものを選びます
![画像１０.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/afa86c45-4d7f-52e8-e162-eda22aacd93c.jpeg)
![画像１１.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/9c8ffaad-ebb2-1809-9746-480341fa4180.jpeg)


トレーニングの設定不正ラベル正当ラベルを選択します。
![画像１２.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/901efcaa-f56b-645f-e034-2f9e0a0f1bef.jpeg)

モデルはデータのサイズに応じて30~40分から数時間かかるそうです。
![画像１３.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/621e18eb-7e03-ebd6-4c91-881c94be3e29.jpeg)

生成後はパフォーマンスメトリクスの確認と、モデルのデプロイができるようになります。
![2020-12-18_18h14_58.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/36fb4d98-2a8f-679f-4a55-fb2773b38c09.jpeg)
![2020-12-18_18h14_21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147666/7d6bd79f-4db2-d1be-afa6-489d632a971e.jpeg)


Amazon Fraud Detectorを取り入れた運用を考え、不正アクセスなどを防ぎたいですね。
以上 Amazon Fraud Detectorについてでした。

参考文献
https://aws.amazon.com/jp/fraud-detector/features/
https://aws.amazon.com/jp/blogs/news/amazon-fraud-detector-is-now-generally-available/