大規模なデータ・セットからのモデルのトレーニングとデプロイ: 不正検出のユース・ケース
アーキテクチャ
次の図は、このリファレンス・アーキテクチャを示しています。

図cc- fraud- detection- architecture.pngの説明
cc- fraud- detection- architecture- oracle.zip
アーキテクチャには次のコンポーネントがあります。
- 収集
収集フェーズには次のコンポーネントがあります。
- データを生成するデバイス、センサー、および入力。不正検知のユース・ケースでは、データがPOS(POS)システムから生じる。
- リアルタイム・インジェストは、生成時にデータ・ポイントを受信し、モデル・デプロイメントに接続されたストリーミング・サービスを使用してストリームでキューに入れるか、またはアプリケーションがAPIを介して推論サーバーを直接コールする場合があります。リアルタイムおよび履歴データは、データストア(クラウド・ストレージまたはデータベース)で調整されます。
- 前述の方法で取得した履歴データは、通常、データベースまたはオブジェクト・ストレージに格納されます。
- クラウド・ストレージを使用して、探索およびモデル・トレーニングのデータセットをステージングできます。
- Ingest Services (Oracle Cloud Infrastructure Data Integrationサービス、Oracle GoldenGateなど)では、オンプレミスまたはサード・パーティのデータストアに存在するデータセットなどの外部データをリンクおよび転送することもできます。
- 分析
- モデルの探索、分析および設計
探索フェーズでは、データ・サイエンティストは、メモリーに収まることができるデータ・セットの代表的なサブセットを抽出し、そこから手元のタスクにとって意味のあるエンジニア機能まで学習します。または、データ・サイエンティストはOracle Cloud Infrastructure Data ScienceからOracle Cloud Infrastructure Data Flowアプリケーションを実行して、代表的なデータ・セットを抽出できます。不正検出の場合、通常、データには、顧客に関する情報(アカウント番号、住所、性別、生年月日など)と、他の機能の導出元となるトランザクション(日付、時間、業者、業者事業所)が含まれます。これらのトランザクション(時間、年齢、業者への距離、顧客市区町村人口など)。
有意義な機能が設計されると、様々なモデルをテストして最も正確な候補を見つけることができます。これは、サンプル・データ・セットを使用して、メモリー内の小規模でモデルをトレーニングおよび評価することを意味します。これができない場合は、データ・サイエンティストがOracle Cloud Infrastructure Data Scienceからデータ・フロー・アプリケーションを作成して実行し、より大規模なモデルをトレーニングできます
- モデル・トレーニング
Oracle Cloud Infrastructure Data Flowサービスを強化するApache Spark分散処理エンジンを使用すると、メモリー(テラバイトまたはペタバイト)に収まらないデータ・セットで選択したモデルを大規模にトレーニングできます。
データ・フローは、トレーニング・データの量を処理するために選択したシェイプがあるプロビジョニング・ドライバおよびエグゼキュータ・ノードに対応し、必要に応じて自動スケーリングできます。
- モデル・アーティファクトの格納
トレーニングされたモデルはシリアライズされ、オブジェクト・ストレージにエクスポートされます。バッチ推論用のアーティファクトをロードするか、それを使用してリアルタイム推論用のモデルをデプロイできます。
- モデル・カタログ
Oracle Cloud Infrastructureモデル・カタログには、モデル・コードおよびアーティファクトが格納され、来歴およびタクソノミに関連するメタデータを追加でき、入力および出力スキーマをイントロスペクションおよび定義できます。モデル・カタログは、モデル・デプロイメントのソースです。
- モデルの探索、分析および設計
- 処理
- バッチ推論
バッチ推論を使用して、スケジュールに基づいて過去のイベントを評価したり、モデル・パフォーマンスを監査して定期的にドリフトできます。バッチ・推論は、Oracle Cloud Infrastructure Data Flowサービスを使用して大規模に実行されます。Object Storageに格納されたコードおよびモデル・アーティファクトを使用して、Oracle Cloud Infrastructure Data Scienceノートブックから直接、スコアリングまたは推論データ・フロー・アプリケーションを作成できます。
- リアルタイム推論
モデル・デプロイメントを使用して、メモリーに収まる可能性があるイベントの単一または小規模なバッチに対して推論を実行します。データ・フロー・アプリケーションと同様に、データ・サイエンス・ノートブックから直接モデル・カタログにモデルを作成して格納できます。その後、リアルタイム・データのストリームで、またはアプリケーションからの直接APIコールを介して同期的に推論を実行できます。
- オーケストレーションとスケジューリング
バッチの処理時には、スケジュールまたはトリガーでジョブを実行することがよくあります。Oracle Cloud Infrastructure Data Integrationサービスを使用して、このタイプのオーケストレーションを実行できます。このサービスは、取込みタスク、変換およびトレーニング、スコアリングまたは推論ジョブをトリガーおよび制御できます。
- バッチ推論
同様のパターンを、次のような非常に大きなデータ・セットを必要とする他のユースケースで使用できます。
- 予測メンテナンス
予測メンテナンスは、コスト回避と、追加のシフトのスケジュール、超過勤務の支払、運送費の迅速化、その他のコストなど、費用を増やす運用中断を最小限に抑えることです。
- エネルギー生産出力
風や太陽などの代替エネルギー農場のスループットを予測するには、地元の気象パターンや過去の出力など、膨大な量のデータを必要とします。
- Smart ManufacturingおよびInternet of Things (IoT)
スマートな製造業では、収益と利益を増やすために業務効率を改善する方法を見つける必要があります。通常、これには、歩留まり、ボトルネックまたはトレース製品を予測して影響を分析するため、数百から数百万のセンサーからのデータの取込みが必要となり、スループットと出力が増加します。
- 医療保険請求処理
詐欺は、健康保険の請求において広範囲な問題でもあります。送信の完全性を自動的に判断することは、プロセスを効率化させるうえで重要な部分です。
- 処方薬の分析とロジスティクス
場所で必要な処方薬の種類を予測することは、膨大な量のデータしか解決できない複雑な問題です。
- 健康診断
健康診断は、多くの場合、X線やMRIなどのイメージング技術を使用して行われます。機械学習は、病気を予測する際に、非常に有用であり、場合によっては人間よりも優れていることが証明されています。このタイプのアプリケーションには、多次元の性質によって、非常に大きなイメージのデータ・セットが必要です。
推奨
- ゲートウェイ
ゲートウェイは、特定のデータ収集用に設計されたカスタム・ハブにできます。また、Oracle Autonomous Data Warehouse、Oracle NoSQL Database Cloud Serviceなどのデータベース、またはその他のデータベースの場合もあります。
- トランスポート
Oracle Cloud Infrastructure Data Integrationを使用して、すべての履歴データをOracle Cloud Infrastructure Object Storageにオフラインで移行します。データがObject Storageに転送されると、すべてのOracle Cloud Infrastructure (OCI)サービスがデータにアクセスできます。Oracle GoldenGateを使用して、オンプレミス・データベースからデータを移動することもできます。
- ストリーミング
Oracle Cloud Infrastructure Streamingを使用して、Oracle Cloud Infrastructure Object Storageで消費または格納されたイベントおよびデータをリアルタイムで取り込みます。
- データ記憶域
- オブジェクト・ストレージ
Oracle Cloud Infrastructure Object Storageはこのアーキテクチャのデフォルト・ストレージです。Object Storageへの構造化データ、半構造化データおよび非構造化データの格納は、最もコスト効率が高いソリューションです。
- データベース
Oracle Autonomous Data Warehouse、Oracle MySQL Database Serviceまたはその他のSQLおよびNoSQLデータベースを使用して、分析およびレポートのためにアクセスする必要があるデータを格納します。通常、ローイングされたデータおよび処理されたデータのみがデータベースに存在し、アクセス頻度の低いRAWデータはオブジェクト・ストレージにより効率的に格納されます。
- HDFSデータストア
Oracle Big Data Cloud Serviceでは、非常に大量のデータをHDFS (Hadoop Distributed File System)に格納できます。このオプションは、組織が他のHadoopベースのアプリケーションをすでに利用しているか、または移行している場合に役立ちます。Oracleは、推奨されるストレージ・プラットフォームであるOracle Cloud Infrastructure Object StorageへのHDFSコネクタを提供します。
- オブジェクト・ストレージ
- データ・サイエンス
Oracle Cloud Infrastructureデータ・サイエンスは、ホスティングされたJupyter Labの形式でデータ・サイエンティストに使い慣れた開発環境と、複数のcondaベースの環境から選択できます。
データ・サイエンス・サービスでは、Oracle Advanced Data Science (ADS)ライブラリがサポートされているため、モデル・カタログへの機械学習モデルの作成および格納が容易になり、モデル・デプロイメントを通じてモデルをデプロイできます。
提供されている事前パッケージ済のApache Sparkコンダ環境と組み合せたJupyter Labインタフェースにより、Sparkベースのモデルをインメモリー・データセットで探索および設計し、Oracle Cloud Infrastructure Data Flowアプリケーションとしてデプロイし、トレーニングまたはバッチ推論を実行したり、リアルタイムまたはインメモリー推論のモデル・デプロイメントとしてデプロイを簡単に行うことができます。
- 分散データ処理
Oracle Cloud Infrastructure Data Flowは、Apache Spark分散処理エンジンをサービスとして提供し、テラバイト単位またはペタバイト単位のデータの処理ジョブを実行できます。
データ・サイエンス・サービスで開発されたSparkアプリケーションは、Oracle ADSライブラリ・ユーティリティのおかげでデータ・フローアプリケーションに簡単に転送され、任意のスケールで任意のシェイプで実行するように構成できます。
注意事項
大規模なデータセットでモデルを構築およびトレーニングする場合は、次の点を考慮してください。不正検出のユース・ケースに特有のものもありますが、ほとんどのモデル設計プロセスを補間できます。
- データコレクション
機械学習モデルを構築する際、データは非常に重要です。つまり、十分な量の品質データが最も重要です。不正検出サンプル・コードでは、最適な推測のユーザー・プロファイルを使用して生成された、合成トランザクション・データとラベルを使用しました。実際のシナリオでは、トランザクションのラベル付けは行われず、不正ケースが検出されなかったり、ラベル付けされたりしても知られていない場合もあるため、適切なデータ・セットの構築は、対処する最初の課題となります。
- データ量
必要なデータの量は、常に答えにくい質問です。経験則として、より多くの機能が存在するため、より多くのデータが必要です。場合によっては、機能の数を減らすとモデルのパフォーマンスが向上し、過剰なフィッティングを回避できます。ただし、多くの場合、モデルのパフォーマンスを向上させるためにより多くのデータが必要です。
データがメモリーに収まる場合、通常、Apache Spark (またはOracle Cloud Infrastructure Data Flow、管理対象の同等の機能)のような分散処理フレームワークを使用するよりも、単一のノードでトレーニングするのに十分なメモリーを持つコンピュート・シェイプを選択する方が効率的です。
- データ記憶域
RAWデータは揮発的で、分析に直接役立たないことがよくあります。生データを保持することが重要ですが、モデルのトレーニングや再トレーニングにはほとんど使用されないため、Oracle Cloud Infrastructure Object Storageのようなコスト効率の高いソリューションに格納することをお薦めします。
分析やレポートに使用されている集計データ、予測データ、または一般的に使用されるデータは、ライブであり、データベースに格納するのが適切です。データを自発的に使用し、分析に必要な場合、HDFSやOracle Big Data Cloud Serviceなどの分散ストレージ・ソリューションの恩恵を受けることができます。
- 機能エンジニアリングとデータ拡張
収集された未処理データは、情報が十分でないか、形式が間違っていることが多いため、機能をエンジニアリングする必要があります。たとえば、生年月日ではなく、顧客の年齢を使用します。ほとんどの機械学習モデルではわかりにくいカテゴリ・テキストは、
StringIndexer以上の頻度で1ホット・エンコーディングを使用した数値としてエンコードできます。これは、性別をエンコードする場合など、カテゴリ・データが変更されない場合に最適です。ただし、時間の経過とともに変化する場合は、新しい値が入ったときにモデルを再トレーニングする必要があるため、理想的ではありません。この場合、このデータをより適切にエンコードする方法を見つける必要があります。不正検出コード・サンプルでは、すでに生成された経度と緯度を合成データ・セットから顧客住所のプロキシとして使用します。この情報はデバイス・ソースからすぐに利用できなくなり、データの拡張が必要になります。外部ジオコーディング・サービスを呼び出して、データ取込み中または前処理ステップとして住所を地理座標に変換すると、必要な情報が提供されます。
- データの調査
データ探索は通常、メモリーに収まる代表的なサンプル・データ・セットで実行されます。サンプル・データ・セットが本当に完全なデータ・セットの代表であり、フル・データ・セットがメモリーに収まらないと判断する簡単な方法がない場合は、Oracle Cloud Infrastructure Data Flowを使用してデータ・セットに関する集計統計を作成し、完全なデータ・セットの代表である意味のあるサブサンプル・データ・セットを抽出します。フル・データ・セットの代表ではないサンプル・データ・セットの設計機能では、フル・データ・セットのトレーニングによってパフォーマンスが低下するモデルが発生します。
- モデル・トレーニング
Sparkを最適にチューニングすることは困難です。データ・フロー・アプリケーションのサイズ設定を参照し、推奨事項に従って、特定のジョブの実行に必要なエグゼキュータおよびコンピュート・シェイプの数を見積ります。
デプロイ
このリファレンス・アーキテクチャの例は、GitHubでJupyter Notebookとして使用できます。
- GitHubに移動して、サンプル・ノートブックを表示します。
READMEドキュメントの指示に従います。
詳細の参照
Oracle Cloud Infrastructure Data Flowの詳細を参照してください。
次の追加リソースを確認します。
- Oracle Cloud Infrastructure Data Flowドキュメント。
ホームページには、APIドキュメント、SDK、コミュニティ・フォーラムおよびOracle Supportへのリンクが含まれています。
- データ・フロー・アプリケーションのサイズ設定
- Oracle Cloud Infrastructureのベスト・プラクティス・フレームワーク