【DataRobotを用いた異常検知】DataRobotシリーズ その2

こんにちは。スキルアップAI編集部です。

前回の「[【DataRobotの基本的な使い方】DataRobotシリーズ その1](https://qiita.com/skillup_ai/items/e019fdf4761ff1862327)」では、DataRobotの基本的な使い方についてご紹介しました。

前回は簡単な線形回帰モデルの作成方法をご説明しましたが、DataRobotでは異常検知も行うことができます。今回は、DataRobotを用いた異常検知の方法についてご説明します。

<目次>
1.異常検知の考え方
2.DataRobotを用いた異常検知
3.まとめ

# 1.異常検知の考え方
異常検知とは、正常か異常かを判定するタスクです。異常はそもそもめったに起こらず、異常ラベルのついたデータは極めて希少であるため、異常検知は二値分類問題とは区別されます。

異常検知では、正常のパターンを定義した上で、そのパターンから大きく外れたデータを異常であると定義し、未知のデータに対して異常か正常化を判定します。異常検知の具体的なタスクとしては、例えば、クレジットカードの不正利用や機器における故障の検知などが挙げられます。

# 2.DataRobotを用いた異常検知
では、ここからは具体的にDataRobotを用いて異常検知を行う方法をご説明します。

まずはDataRobotにログインした後、用意したデータを正常に読み込むための設定から行います。

![datarobot-2_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/21d1a645-3fe4-ed2f-b6e7-8d479aabc2e3.png)

今回扱うデータはExcelファイルであるため、画面左の欄にある「BOMを含める」をオンにします。BOM（Byte Order Mark）はファイルの先頭に3バイトを加えてエンコードを示すために使用されるバイトシーケンスです。

![datarobot-2_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/f1a00bfc-1803-6442-bd7d-2173aa68f666.png)

次に、用意したデータセットの読み込みを行います。

まずホーム画面中央の「機械学習の開発」から新しいプロジェクトを作成します。

![datarobot-2_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/6b6cd45d-2c09-fd83-775e-b535c846c63e.png)

画面の中央にある青枠内にダウンロードしたデータ「bleedout_unsupervised_train.xlsx」をドラッグ&ドロップして、xlsxファイルをアップロードします。

![datarobot-2_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/e4ba4b18-65be-02fa-1002-05b2367ee50c.png)

データのアップロードが完了すると、以下の画面に遷移します。

![datarobot-2_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/78978fab-3e7f-d277-2c14-54862a855d96.png)

以上でデータの読み込みが完了しました。

次に、この読み込んだデータを用いてモデリングを行います。

![datarobot-2_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/b6809cfe-2355-c8e2-c24a-e59c3ef144a3.png)

中央の「開始」ボタンをクリックするとモデリングが開始されます。
ここで、「開始」ボタン下のモデリングモードを「クイック」にすると、通常の4分の1程度の時間で完了することができます。

![datarobot-2_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/b433da4f-b072-4359-5b14-51058ee1224b.png)

![datarobot-2_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/bbf2b11e-3e03-27d6-20e6-2995d182ba09.png)

以上でモデリングが完了しました。

モデリングができたので、次にモデル評価の確認を行います。
ここでは、DataRobotが擬似的に作成したデータを用いて評価を行います。

![datarobot-2_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/4dec6312-2115-7206-7b45-423b36f249b6.png)

「合成AUC」と表示されている所をクリックすることでモデル評価を確認できます。合成AUCと合成LogLossの2種類が算出されます。

合成AUCは１に近づくほど精度が良いことを表し、合成LogLossは０に近づくほど精度が良いことを表しています。

![datarobot-2_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/122e0b36-140e-bcea-d6a4-15f9a1099fc0.png)

合成AUCと合成LogLossは、疑似的に作成されたデータをもとに算出されたAUCとLogLossであるため、ある程度のモデルの評価には使えますが、実際のデータを扱っているわけではないので実運用時の正確な精度についてはわからないという点に注意が必要です。

![datarobot-2_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/b088a5f7-1ba2-00cd-d2bf-6473beca4ab2.png)

次に、異常スコアに影響している特徴量を確認します。

いくつかのモデルが表示されるので、確認したいモデルを選択します。

![datarobot-2_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/26a6e532-ac51-4ebc-4d1a-ddcae4430a32.png)

「解釈」タブの「特徴量のインパクト」を開き、「特徴量のインパクトを有効化」をクリックすることで、特徴量のインパクトを確認できます。

![datarobot-2_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/8b1d0950-3db0-b2ad-c56d-53c73aa64ec3.png)

特徴量のインパクトでは、異常スコアに対する各特徴量の影響度を表しており、影響度が大きい特徴量を確認できます。

![datarobot-2_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/764ffbfa-6b35-f3c9-c1ae-a4dce4ddc1d2.png)

以上でモデルに大きな影響を与えている特徴量を確認できました。

④「疑似的な評価の確認」では疑似的なデータを用いてモデルの評価を確認しました。しかし、実運用時のモデルの正確な予測精度についてはまだ確認できていません。

そこで、実運用時のモデルの正確な予測精度を検証するため、用意したテストデータを用いて外部テストの実行を行います。

![datarobot-2_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/6f14a688-547e-c1ca-e2be-e225139a3b0f.png)

ここから、外部テストの実行を行っていきます。


![datarobot-2_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/da49fb3e-6340-0db8-41a6-4e70200965f3.png)

用意したテストデータ「bleedout_unsupervised_test.xlsx」をドラッグ&ドロップして、xlsxファイルをアップロードします。

![datarobot-2_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/ffab7904-7765-8c93-873a-cb6fa4dec634.png)

テストデータの読み込みが完了したら、外部テストを実行します。

![datarobot-2_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/9af34b54-a3fb-43fe-b025-1ff93e6de1c2.png)

![datarobot-2_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/40f2b420-b38f-1f15-de2d-61176290ebbb.png)

![datarobot-2_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/14da6aaa-33f6-af04-e0a1-ed4b11bba5dd.png)

![datarobot-2_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/fb84cd71-68e8-66b8-ffe1-2ffe06b40c40.png)

以上で外部テストの実行が完了しました。

以下の画像の場合ですと、「Local Outlier Factor Anomaly Detection with Calibration」のAUCが最も高く、精度が良いことが確認できます。

![datarobot-2_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/bdf785aa-9730-e4f0-6ed2-a5b830afb724.png)

# 3.まとめ
今回は、DataRobotを用いた異常検知の手順についてご紹介しました。

学習を実行した直後に合成AUCや合成LogLossといった評価指標が出力されますが、これらはあくまでも疑似的なものですので、実際に使うモデルを選定する際は外部テストデータを用いた評価を別途行ってから判断するのがよいでしょう。

スキルアップAIでは、関連講座として「[現場で使えるAIプランニング・プロジェクト推進基礎講座（DataRobot活用編）](https://bit.ly/3NmpRyq)」を開講中です。 本講座では、AIプランニング・プロジェクト推進基礎講座で学ぶPoCフェーズにおいて、実際にDataRobotを活用してケースデータに対してPoCを実施することで、アイディエーションに留まらないプロジェクト推進のイメージを持てるように工夫しています。是非ご検討ください。

# 25卒向け！AIエンジニアになるための長期インターンプログラム参加者募集中！
25卒学生向けに、AIの基礎を学びながら就活も一括サポートする無料カリキュラムを提供しています。
修了するとE資格の受験資格も獲得できるプログラムとなっています！

<img width="700" alt="長期インターン" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/bfce4c26-1ebe-c54d-bacb-e804048a7a08.png">

**特長①AIエンジニアやデータサイエンティストの基礎が身に付く**
AIジェネラリスト基礎講座や機械学習のためのPython入門講座など、市場価値向上のための基礎を習得。

**特長②AI・データ分析領域の優良求人を紹介**
非公開求人や選考直結型インターンをご紹介し、早期内定の獲得をサポート。

**特長③長期インターンプログラム専用の学生コミュニティ参加可**
学生同士で就活情報をシェアしたり、学習を進めるうえでアドバイスをしあったりできるコミュニティに参加可能。

＞＞[長期インターン詳細](https://bit.ly/3pXW5JM)

☆☆☆
スキルアップAIのメールマガジンでは会社のお知らせや講座に関するお得な情報を配信しています。
配信を希望される方は[こちら](https://share.hsforms.com/1_XlReV-4Te-zcxCl9lhffA2mtef)

また、SNSでも様々なコンテンツをお届けしています。興味を持った方は是非チェックしてください♪
Twitterは[こちら](https://twitter.com/SkillupAi)
Facebookは[こちら](https://www.facebook.com/skillupai)
LinkedInは[こちら](https://www.linkedin.com/company/skillup-ai)
スキルアップAI公式YouTube AIビジネスチャンネルは[こちら](https://www.youtube.com/AIBusinessChannel)