見出し画像

Transformerモデルを銀行取引データで検証してみた

三菱UFJフィナンシャル・グループ(以下MUFG)の戦略子会社であるJapan Digital Design(以下JDD)にてMUFG AI Studio(以下M-AIS)に所属し、データサイエンティストをしている庄岩です。

本記事では、R&DとしてTransformerモデルを銀行取引データで検証した内容を紹介したいと思います。

INTRODUCTION

銀行の不正検知や信用スコアリング等の業務において、取引履歴データが一般的に利用されています。これまで多くのプロジェクトでは、取引履歴データから人工的に開発した統計特徴量をGBDT系のモデルに投入しています。統計特徴量は予測精度向上に貢献していますが、一方で以下のような欠点もあります。

  1. ドメイン知識に依存するので、ドメイン知識が少ない方にとっては開発が難しい

  2. 定期的に見直しが必要で、見直しを行わないと説明力が失効していく可能性が高い。

EC業界では、顧客のシーケンスデータをそのままDeep Learningモデルに入れることが広く行われています。中でも、近年自然言語処理の分野で高い性能が確認されて以来、さまざまな業界で多く応用されているTransformerモデルは最も流行している手法と言えると思います。

本研究では、顧客のシーケンスデータにおけるシーケンシャルシグナルを捕捉できるTransformerモデルを銀行取引データで検証します。顧客の取引履歴を用いて自動的に特徴量作成・予測タスク実施することが実現可能であれば、今後銀行のさまざまな業務において、より高精度なモデル構築が期待できます。

モデルはEC業界大手のAlibaba社が2019年のKDDで発表した論文「Behavior Sequence Transformer for E-commerce Recommendation in Alibaba」を参照して、実装しました。

元の論文は、複雑なネットワークを使わず、よりシンプルなネットワーク構造で高精度なレコメンド機能が実現されており、多くの論文に引用されました。

ARCHITECTURE


モデルのアーキテクチャー

モデルはEmbedding Layer、Transformer Encoder、MLP、3種類のコンポーネントを利用します。

Transformer Encoderはシーケンスデータの特徴を捉えたrepresentationを学習できます。月次預金平均残高・入出金金額のシーケンスデータはシンプルな時系列予測と同じように直接Transformer Encoderに入れます。季節性を表すための月の情報は、先ずEmbedding Layerに入れて低次元ベクトルに変換した後にTransformer Encoderに入れます。また、顧客情報のデータはEmbedding Layerに入れて、低次元ベクトルに変換します。最後に、3種類のデータを3層のMLPで結合して、隠れ層同士の相互作用を学習させます。

EXPERIMENTS

銀行の取引データを用いて、モデルが金融取引の予測でも有効かを検証します。

今回は問題設定を、法人口座の過去一年分の月次預金平均残高・入金金額・出金金額及び顧客情報を利用して、翌月の預金平均残高を予測することとします。

銀行口座の月次預金残高は重要な指標であり、企業の未来の預金残高を予測できると、企業の未来の経営状況が早期に把握できて、信用スコアリング等の業務に役立ちます。

Dataset

数年分の一般法人口座の取引データを抽出して、学習(3年分)・検証(1年分)・テスト(半年分)のデータセットを作成します。データの件数は全体で数百万件程度となりました。

Models

下記4種類のモデルを実験します。

Single Transformerは、Transformer Encoder 1つだけの構造で、月次預金平均残高・入金金額・出金金額のみを利用します。Double Transformerは、Transformer Encoderを2つ使い、月次預金平均残高・入金金額・出金金額に加えて月の情報のデータも利用します。Full Modelは、Double Transformerの構造に、顧客属性のデータを扱うEmbedding Layerを追加します。また、BaselineとしてLightGBMモデルも作成します。LGBモデルの特徴量は、過去12ヶ月分の月次預金平均残高・入金金額・出金金額と顧客属性・月を利用して合計39種作成しました。

Settings

JDDのDatabricks環境(Python: 3.10.2, Pytorch: 2.0.1)で実施します。またモデルの各種設定は下記の表のようになります。

Evaluation

回帰問題で一般的に利用されているMAPE(Mean Absolute Percentage Error、平均絶対パーセント誤差)をモデルの評価指標として採用します。

Results Analysis

テストセットの精度は Double Transformer > LGB > Full Model > Single Transformer となりました。(事情により具体的な数値は示すことができず、申し訳ございません。)

元のシーケンスデータのTransformer(Single Transformer)に、月の情報を追加する(Double Transformer)場合は、精度改善を確認できました。一方で顧客属性情報は予測精度に全く効きませんでした。今回の実験では、Double TransformerはベースラインのLGBモデルより高い精度を実現することが確認されました。

CONCLUSION

Conclusion

本研究では、Transformerモデルを銀行取引データに適用して、法人口座の翌月の預金平均残高を予測しました。

比較的シンプルな構造であってもTransformerモデルは、銀行取引のシーケンスデータにおいても時系列予測に有効であることが確認できました。また月の情報(positionの情報)を追加することで、精度向上が実現できることが確認できました。ただし、元の参考論文で有効であった顧客属性情報は、今回の実験では預金平均残高予測に効果が見られませんでした。

結論として、Transformerモデルは、各種銀行取引のシーケンスデータにおいても、予測性能が期待できそうです。

Future Work

今後、予測性能向上・実用化のために、下記の研究・実験を進める予定です。

まずは新規データソースの追加です。今回の検証では、顧客属性情報はモデル精度向上に効かなかったですが、新規情報を追加あるいは適切な加工をすることで、精度改善が可能ではないかと考えています。例えば、業種により預金平均残高の振る舞いが違うようであれば、業種別でのモデル作成を検討した方が良いと考えられます。

また、モデル結果の使い方についても、単に翌月の預金平均残高の予測結果だけを使うのではなくて、MLPレイヤーの隠れ層の状態を他のタスク(ローン返済とか)の特徴量として利用できるかもしれません。

最後に、予測の目的変数として預金残高そのものを直接予測する回帰問題だけではなくて、預金平均残高が急減するかどうかの二値分類予測なども試したいと思います。


最後に

Japan Digital Design株式会社では、一緒に働いてくださる仲間を募集中です。カジュアル面談も実施しておりますので下記リンク先からお気軽にお問合せください。

この記事に関するお問い合わせはこちらにお願いします。