第92章 クレジットカード詐欺紛争のユースケース
金融業界は、いくつかの分野で意思決定に Pragmatic AI を使用しています。その 1 つは、クレジットカードの請求に関する紛争です。顧客がクレジットカードの請求書に誤った、または認識していない請求を特定した場合、顧客はその請求に異議を申し立てることができます。クレジットカード詐欺の検出に人間の介入が必要な場合もありますが、報告されたクレジットカード詐欺の大部分は、Pragmatic AI で完全にまたは部分的に解決できます。
このユースケースは、架空の Fortress Bank、銀行の顧客である Joe、およびビジネスプロセス管理 (BPM) 開発者の Michelle に関するものです。最初に、銀行が Red Hat Process Automation Manager デジタル意思決定を通じて AI を最初にどのように使用したかを見てから、Michelle が機械学習から作成された予測モデルマークアップ言語 (PMML) モデルで意思決定モデルをどのように強化したかを見ていきます。
Tensorflow™ および R™ などのマシンラーニングモデルは予測可能なモデルを生成します。この予測モデルは、PMML などのオープン標準で保存できます。これにより、Red Hat Process Automation Manager または PMML 標準をサポートする他の製品でモデルを使用できます。
Red Hat Process Automation Manager および Red Hat OpenShift Container Platform
Fortress Bank は、Red Hat OpenShift Container Platform で Red Hat Process Automation Manager を使用して、Fortress Bank デシジョンサービスを開発し、実行します。Red Hat OpenShift Container Platform は、コンテナー化されたアプリケーションを開発し、実行するためのクラウドプラットフォームです。これは、アプリケーションとそれらをサポートするデータセンターを、ほんの数台のマシンとアプリケーションから、数百万のクライアントにサービスを提供する数千のマシンに拡張できるように設計されています。Red Hat Process Automation Manager は、クラウドネイティブのビジネス自動化アプリケーションとマイクロサービスを作成するための Red Hat ミドルウェアプラットフォームです。これにより、企業のビジネスユーザーと IT ユーザーが、ビジネスプロセスおよび決定を文書化、シミュレート、管理、自動化、およびモニターできます。Business Central は Red Hat Process Automation Manager ダッシュボードです。
Red Hat Process AutomationManager でのクレジットカード紛争のデジタル決定
Joe は Fortress Bank の顧客です。毎月、請求書を支払う前に彼は Fortress Bank の Web サイトにログインして、請求書のすべての請求を確認します。今月、Joe が認識しているトランザクションを確認しましたが、金額が正しくありません。ベンダーは彼に 4.50 ドルではなく 44.50 ドルを請求しました。Joe は誤ったアイテムを含む行を選択し、Dispute をクリックします。
このアクションは、紛争に関する一連の質問を開始します。
- これらのトランザクションを破棄する理由
- カードはずっと手許にあったか
- この異議申し立てについて他に何か伝えたいことはあるか
Joe が質問に回答すると、この Web サイトではインシデント番号 000004
が提供されます。
Fortress Bank は、人的調査なしに係争金額を払い戻すか、請求を手動で調査するかを決定する必要があります。人的調査にはより多くのリソースが必要であるため、異議が申し立てられた額の自動処理により、銀行の人的リソースのコストが削減されます。ただし、銀行が異議が申し立てられた金額をすべて自動的に受け入れる場合は、不正請求に対して支払われる金額が原因で、最終的に銀行が負担するコストが高くなります。誰かまたは何かが調査するかどうかを決定しなければなりません。
Credit Card Dispute プロジェクト
この決定を容易にするために、Fortress Bank は Business Central を使用して、その紛争プロセスをモデル化する fraudDispute ビジネスプロセスが含まれる CreditCardDisputeCase プロジェクトを作成します。
プロセス変数
Joe が論争を報告したとき、fraudDispute プロセスのインスタンスがケース ID FR-00000004
で作成されました。Process Variables タブには、CaseID
、caseFile_cardholderRiskRating
(クレジットカード所有者のリスク評価)、および caseFile_disputeRiskRating
(この異議申し立てのリスク評価) など、Joe のアカウントに固有のいくつかの変数と値が含まれています。
この表には、値が true
の casefile_automated
変数も含まれています。これは、異議申し立てが自動的に処理される基準を満たしていることを示しています。
プロセスダイアグラム
Diagram タブには BPMN ダイアグラムが含まれており、自動的に処理されるか手動で処理するかを決定する際に銀行が使用するデシジョンパスが表示されます。
Decision Task タスクには、caseFile_cardholderRiskRating
変数および caseFile_disputeRiskRating
変数の値に基づいて、この異議申し立てが自動的に Joe のアカウントに請求される (Milestone 1) か、さらなる調査が必要 (Milestone 2) かを決定するルールが含まれています。Joe の異議申し立てが自動承認の基準に一致する場合は、Milestone 1 が実行され、異議申し立てられた金額が彼の口座に請求されます。このサブプロセスは非常に無駄がなく効率的です。Joe の異議申し立てが手動評価を必要とする場合は、Milestone 2 のサブプロセスが開始します。これには、人間のアクターの関与が必要であり、処理により多くのリソースが必要になります。
この場合、Decision Task タスクは、Joe の異議申し立てを自動的に処理することを決定したため、Milestone 1: Automatic Chargeback に従いました。
DMN モデル
以下の簡単な DMN モデルは、fraudDispute Decision Task タスクの一部であるデシジョンプロセスを示しています。
入力変数は、Age (カード所有者の年齢)、Incident Count (このカード所有者の以前の異議申し立ての数)、Cardholder Status (スタンダート、シルバー、ゴールド、プラチナ)、および Fraud Amount です。
Red Hat Process Automation Manager は、デシジョンテーブルで入力変数を使用して、デジタルデシジョンをサポートします。デシジョンテーブルは、人間のビジネスアナリストが作成します。アナリストは、利害関係者がレビューおよび承認するドラフトビジネス要件分析ドキュメントまたはスプレッドシートを作成します。プロジェクトデザイナーは、Business Central DMN エディターを使用して、分析ドキュメントのデータを DMN モデルに転送します。Fortress Bank の Credit Card Dispute プロセスには、Cardholder Risk Rating テーブルと Dispute Risk Rating テーブルの 2 つのデシジョンテーブルがあります。Cardholder Risk Rating テーブルには、Incident Count、Cardholder Status、および Age の 3 つの入力変数が含まれます。Dispute Risk Rating テーブルには Cardholder Status 入力変数が含まれます。この表は、カード所有者のステータスと異議申し立ての金額に基づいて、異議申し立てのリスクを計算します。
カード所有者のリスク評価
Joe は、25 歳以上の Silver カードホルダーです。彼は以前に異議申し立てを 2 回以上行ったため、リスク評価は 2 です。Joe がこれまで異議申し立てを行わなかった場合、彼のリスク評価は 0 になります。
異議申し立てリスク評価
Joe はシルバーカード所有者であり、異議申し立て額は 40 ドルであるため、Dispute Risk Rating テーブルでの Joe の格付けは 1 になります。異議申し立てのあった金額が 140 ドルであれば、彼のリスク評価は 2 になります。
DMN モデルで Process Automatically の最終決定の一部として実装された以下の式は、異議申し立てが行われた額を自動的に返還する (Milestone 1) か、より詳細な調査が必要である (Milestone 2) かどうかを決定するために、この 2 つのデシジョンテーブルから得たスコアを使用します。
(Cardholder Risk Rating + Dispute Risk Rating) < 5
Joe の全体的なリスクスコアが 5 未満の場合、異議申し立てが行われた金額は自動的に返金されます (Milestone 1)。全体のスコアが 5 以上の場合、彼の異議申し立ては手動で処理されます (Milestone 2)。
Red Hat Process Automation Manager への機械学習の追加
Fortress Bank には、過去の取引や異議申し立ての履歴など、顧客に関する履歴データがあるため、銀行はそのデータを機械学習で使用して、DMN モデルの意思決定タスクで使用できる予測モデルを作成できます。これにより、ビジネスアナリストが作成したデシジョンテーブルと比較すると、リスクの評価がより正確になります。
Fortress Bank には、リスク予測をより正確に評価するモデルを含む 2 セットの PMML ファイルがあります。1 つのセットは線形回帰アルゴリズムに基づいており、もう 1 つのセットはランダムフォレストアルゴリズムに基づいています。
線形回帰は、統計と機械学習の両方で最も広く使用されているアルゴリズムの 1 つです。これは、数値の入力値と出力値のセットを組み合わせた線形方程式を使用します。ランダムフォレストは、多くのデシジョンツリーを入力として使用し、予測モデルを作成します。
PMML ファイルの追加
Michelle は、PMML ファイル dispute_risk_linear_regression を自分のプロジェクトにインポートします。彼女は、Cardholder Risk Model ビジネスモデルナレッジノードを DMN モデルに追加し、PMML ファイル dispute_risk_linear_regression をノードに関連付けます。Red Hat Process Automation Manager は PMML ファイルを分析し、入力パラメーターをノードに追加します。Michelle は、Cardholder Risk Model ノードを Dispute Risk Rating に関連付けます。
次に、PMML モデル credit_card_holder_risk_linear_regression をこのプロジェクトに追加し、Dispute Risk Model モードの DMN ファイルを作成し、PMML ファイル credit_card_holder_risk_linear_regression を作成してこのノードに関連付けます。Red Hat Process Automation Manager は PMML ファイルを分析し、入力パラメーターをノードに追加します。
次のイメージは、Michelle の完成した DMN モデルです。これは、分析デシジョンテーブルを PMML ファイルの予測モデルに置き換えます。
Michelle は、BPMN モデル fraudDispute に戻り、追加した PMML ファイルでモデルを更新します。その後、プロジェクトを再デプロイします。
スコアの精度の向上
Michelle が PMML モデルを使用して Fortress Bank プロジェクトを再デプロイしたこの新しいシナリオでは、Joe が Fortress Bank アカウントにログインし、同じトランザクションを正しくないと報告するとどうなるかを確認できます。Business Central で、Michelle は Process Instances ウィンドウに移動するように促され、新しい紛争インスタンスを確認します。Michelle は、Process Variables タブで、cardHolderRiskRating の値および disputeRiskRating の値を確認します。モデルは、PMML ファイルを使用するようになったため、変更しています。これにより、履歴データに基づく機械学習モデルを利用することで、リスクをより正確に予測できます。同時に、銀行のポリシーは引き続き DMN 意思決定モデルによって実施されます。リスク予測子は指定されたしきい値を下回っており、この異議申し立てを自動的に処理できます。
モニターリング
最後に、Fortress Bank は、Prometheus を使用してクレジットカードの異議申し立てに関するメトリックスを収集し、Grafana を使用してそのメトリックスをリアルタイムで視覚化します。モニターの上のセクションには、ビジネスメトリックの主要業績評価指標 (KPI) が表示され、下のセクションには、運用メトリックの KPI が表示されます。
92.1. PMML モデルと DMN モデルを使用して、クレジットカード取引の異議申し立てを解決
この例は、Red Hat Process Automation Manager を使用して、PMML モデルを使用してクレジットカード取引の異議申し立てを解決する DMN モデルを作成する方法を示しています。顧客がクレジットカード取引に異議を唱えると、システムは取引を自動的に処理するかどうかを決定します。
前提条件
Red Hat Process Automation Manager が使用可能であり、次の JAR ファイルが Red Hat Process Automation Manager の
~/kie-server.war/WEB-INF/lib
ディレクトリーおよび~/business-central.war/WEB-INF/lib
ディレクトリーに追加されている。kie-dmn-jpmml-7.52.0.Final-redhat-00007.jar
このファイルは、Red Hat カスタマーポータルの Software Downloads ページから利用できる Red Hat Decision Manager 7.11 Maven リポジトリーディストリビューションで利用できます (ログインが必要です)。このファイルのグループ ID、アーティファクト ID、およびバージョン (GAV) 識別子は、
org.kie:kie-dmn-jpmml:7.52.0.Final-redhat-00007
です。詳細は、DMN モデルを使用したデシジョンサービスの作成 の Business Central の DMN ファイルへの PMML モデルの追加セクションを参照してください。- JPMML Evaluator 1.5.1 JAR ファイル
JPMML Evaluator Extensions 1.5.1 JAR ファイル
これらのファイルは、KIE Server と Business Central で JPMML 評価を有効にするのに必要です。
重要Red Hat は、Red Hat Process Automation Manager で PMML を実行するため、Java Evaluator API for PMML (JPMML) との統合をサポートしています。しかし、Red Hat は JPMML ライブラリーを直接サポートしません。Red Hat Process Automation Manager ディストリビューションに JPMML ライブラリーを含む場合は、JPMML の Openscoring.io ライセンス条件を確認してください。
手順
-
「クレジットカード取引紛争の例 PMML ファイル」 の XML 例の内容で
dtree_risk_predictor.pmml
ファイルを作成します。 Business Central で Credit Card Dispute プロジェクトを作成します。
-
Menu
Design Projects に移動します。 - Add Project をクリックします。
-
Name ボックスに
Credit Card Dispute
と入力し、Add をクリックします。
-
Menu
Credit Card Dispute プロジェクトの Assets ウィンドウで、
dtree_risk_predictor.pmml
ファイルをcom
パッケージにインポートします。- Import Asset をクリックします。
Create new Import Asset ダイアログで、Name ボックスに
dtree_risk_predictor
と入力し、Package メニューから com を選択し、dtree_risk_predictor.pmml
ファイルを選択して OK をクリックします。dtree_risk_predictor.pmml
ファイルの内容が Overview ウィンドウに表示されます。
com パッケージで DMN モデル Dispute Transaction Check を作成します。
- プロジェクトウィンドウに戻り、ブレッドクラムの Credit Card Dispute をクリックします。
- Add Asset をクリックします。
- アセットライブラリーで DMN をクリックします。
Create new DMN ダイアログで、Name ボックスに
Dispute Transaction Check
と入力し、Package メニューから com を選択して OK をクリックします。DMN モデル Dispute Transaction Check で DMN エディターが開きます。
tTransaction カスタムデータタイプを作成します。
- Data Types タブをクリックします。
- Add a custom Data Type をクリックします。
-
Name ボックスに、
tTransaction
を入力します。 - Type メニューから Structure を選択します。
データ型を作成するには、チェックマークをクリックします。
tTransaction カスタムデータタイプは、1 つの変数行で表示されます。
-
変数行の Name フィールドに
transaction_amount
と入力し、Type メニューから Number を選択してからチェックマークをクリックします。 -
新しい変数行を追加するには、
transaction_amount
行のプラス記号をクリックします。新しい行が表示されます。 -
Name フィールドに
cardholder_identifier
と入力し、Type メニューから Number を選択してからチェックマークをクリックします。
Risk Predictor
dtree_risk_predictor.pmml
モデルを追加します。- DMN エディターの Included Models ウィンドウで Include Model をクリックします。
-
Include Model ダイアログで、Models メニューから
dtree_risk_predictor.pmml
を選択します。 -
Provide a unique name ボックスに
Risk Predictor
と入力し、OK をクリックします。
Risk Predictor モデルおよび DecisionTreeClassifier モデルで、Business Knowledge Model (BKM) ノード Risk Predictor を作成します。
DMN エディターの Model ウィンドウで、BKM ノードを DMN エディターパレットにドラッグします。
- Risk Predictor ノードの名前を変更します。
ノードの左側にあるごみ箱の配下にある編集アイコンをクリックします。
- Risk Predictor ボックスで F をクリックし、Select Function Kind メニューから PMML を選択します。F が P に変わります。
- First select PMML document ボックスをダブルクリックして、Risk Predictor を選択します。
- Second select PMML model ボックスをダブルクリックして、DecisionTreeClassifier を選択します。
- DMN エディターパレットに戻るには、Back to Dispute Transaction Check をクリックします。
データ型 tTransaction で Transaction 入力データノードを作成します。
DMN エディターの Model ウィンドウで、入力データノードを DMN エディターパレットにドラッグします。
- トランザクション ノードの名前を変更します。
- ノードを選択して、ウィンドウの右上隅にあるプロパティーの鉛筆アイコンをクリックします。
-
Properties パネルで Information Item
Data type tTransaction を選択し、パネルを閉じます。
Transaction Dispute Risk デシジョンノードを作成し、データ入力用の Transaction ノードと、関数の Risk Predictor ノードを追加します。
DMN エディターの Model ウィンドウで、デシジョンデータノードを DMN エディターパレットにドラッグします。
- ノードの名前を Transaction Dispute Risk に変更します。
- Risk Predictor ノードを選択し、ノードの右上にある矢印を Transaction Dispute Risk ノードをドラッグします。
- Transaction ノードを選択し、ノードの右上にある矢印を Transaction Dispute Risk にドラッグします。
Transaction Dispute Risk ノードで、Risk predictor 予測関数を作成します。
- Transaction Dispute Risk ノードを選択し、ノードの左側にある編集アイコンをクリックします。
- Select expression をクリックし、メニューから Invocation を選択します。
- Enter function ボックスに Risk Predictor と入力します。
- P1 をクリックします。
-
Edit Parameter ダイアログボックスで、Name ボックスに
amount
と入力し、Data Type メニューから number を選択して、Enter キーを押します。 - Select expression をクリックし、メニューから Literal expression を選択します。
-
amount の横にあるボックスに
Transaction.transaction_amount
を入力します。 - 1 を右クリックして、Insert below を選択します。パラメーターの Edit Parameter が開きます。
- Name ボックスに holder_index と入力し、Data Type メニューから number を選択し、Enter キーを押します。
- 行 2 で Select expression をクリックし、メニューから Literal expression を選択します。
-
amount の横にあるボックスに
Transaction.cardholder_identifier
と入力します。
データ型 number で、入力データノード Risk Treshold を作成します。
- DMN エディターの Model ウィンドウで、入力データノードを DMN エディターパレットにドラッグします。
- Risk Threshold ノードの名前を変更します。
- ノードを選択して、ウィンドウの右上隅にあるプロパティーの鉛筆アイコンをクリックします。
-
Properties パネルで Information Item
Data type number の順に選択し、パネルを閉じます。
Can be automatically processed? デシジョンノードは、Transaction Dispute Risk ノードおよび Risk threshold ノードの入力として取ります。
- デシジョンノードを DMN エディターパレットにドラッグし、名前を Can be automatically processed? に変更します。
- ノードを選択し、ノードの左上にある編集アイコンをクリックします。
- Select expression をクリックしてから、メニューから Literal expression を選択します。
-
ボックスに
Transaction Dispute Risk.predicted_dispute_risk < Risk Threshold
と入力します。 - Transaction Dispute Risk ノードを選択し、ノードの左上にある矢印を Can be automatically processed? にドラッグします。
- Risk Threshold ノードを選択し、ノードの左上にある矢印を Can be automatically processed? ノードにドラッグします。
モデルを保存し、プロジェクトをビルドします。
- DMN エディターで Save をクリックします。
- 必要な場合は、表示されるエラーを修正します。
- プロジェクトウィンドウに戻り、ブレッドクラムの Credit Card Dispute をクリックします。
- Build をクリックします。プロジェクトが正常にビルドされるはずです。
テストシナリオを追加して実行します。
- Add Asset をクリックします。
- Test Scenario を選択します。
-
Create new Test Scenario ダイアログで、
Test Dispute Transaction Check
の名前を入力し、Package メニューから com を選択して DMN を選択します。 - Choose a DMN asset メニューから Dispute Transaction Check.dmn を選択し、OK をクリックします。テスト用テンプレートがビルドされます。
以下の値を入力して Save をクリックします。
注記Transaction Dispute risk 列に値を追加しないでください。この値は、テストシナリオにより決定されます。
表92.1 テストシナリオパラメーター 説明 リスクのしきい値 cardholder_identifier transaction_amount 自動的に処理可能か リスクしきい値 5、自動的に処理される
5
1234
1000
true
リスクしきい値 4、合計 = 1000、未処理
4
1234
1000
false
リスクしきい値 4、合計 = 180、自動処理
4
1234
180
true
リスクしきい値 1、合計 = 1、未処理
1
1234
1
false
- テストを実行するには、Validate の右側にある Play ボタンをクリックします。結果は、画面の右側の Test Report パネルに表示されます。