freeeの開発情報ポータルサイト

【AI-Lab】銀行取引明細の自動分類の改善

こんにちは!freeeのAI-Labで機械学習エンジニアをしているringoです!
freeeのAI-LabはML (Machine Learning、機械学習)やそれに類するテクノロジーを駆使してfreeeユーザーに新たな価値を届けるべく、MLの専門性を持った愉快なメンバーが日々楽しく研究開発しております!

AI-Labではほぼ毎週F4R (Freee time for Research)という勉強会をチーム内で開催しており、各メンバー持ち回りで自分の興味のあるテーマについて深掘り、チームに共有しています。せっかくなので勉強会の内容を対外的にも発信してみようということになり、今回その第一弾として自分の担当した回の内容をシェアさせていただきます!

自己紹介

はじめに軽く自己紹介させていただきます!

  • 経歴:学生時代は航空宇宙工学専攻→新卒は金融→色々あってエンジニアにキャリアチェンジ→約3年前にfreeeに入社→約1年半前にAI-Labに異動(異動戦国という異動希望を出せる制度を使った)
  • 業務:
    • MLはちゃんとやり始めてからまだ半年くらい(AI-Labでは珍しい)
    • 社内のAI活用推進のためにAI系のイベントを開催するイベントネキ業(最近やれてない)
    • など
  • 趣味:フラメンコ、推し活
  • MBTI:ENTP


今回は銀行取引明細の自動分類を改善するべく実験を行い、論文にまとめましたのでその内容について簡単に紹介させていただきます。 (詳細は論文「Two-Stage Classification of Bank Transaction with Decision Trees and MLP-Mixer」をご覧ください。)
ちなみに、今月台湾で開かれるTAAI2025という国際学会で発表予定です。学会発表は学生の時以来約7年ぶり、また台湾は初なのでドキドキです…。

以下、生成AIをフル活用して書いています。

背景:銀行取引明細分類の課題

オープンバンキングAPIの普及に伴い、銀行取引明細の自動分類は金融サービスにおいて重要な技術課題となっています。顧客行動の理解、不正検知、リスク管理、パーソナライズされた金融サービスの提供など、様々な場面で活用されています。

何が難しいのか?

銀行取引明細の自動分類には、以下のような特有の課題があります。

  1. 短く、ノイズが多く、機密性の高いテキスト:取引明細の説明文は非常に短く、省略や誤字も多く含まれます。また個人情報や機密情報を含むため慎重な取り扱いが必要です。
  2. 膨大なカテゴリ数:分類すべきカテゴリが多数存在し、クラス間の境界が曖昧なケースも多いです。
  3. データアクセスの制約:機密性の高さからデータへのアクセスが限定的で、学術研究が少ないのが現状です。
  4. 企業ごとに異なる定義・語彙・支出パターン:同じ取引内容でも、企業によって分類方法が異なります。

    • 例:ある企業では「事務用品費」として処理される取引が、別の企業では「消耗品費」として処理される
従来のアプローチの限界

こうした課題に対する従来のアプローチには、それぞれ限界がありました。

  • 全企業共通の単一モデル:企業固有のパターンや語彙の違いを捉えきれず、分類精度が低下する
  • 企業ごとに個別モデル:データが少ない企業では十分な性能が得られず、また大量の企業それぞれにモデルを保守するコストが高い

つまり、企業固有のパターンを捉えつつ、共通の知識も活用できる仕組みが求められていました。

提案手法:2段階分類モデル

そこで私たちは、企業固有の決定木ルール+全企業共通のMLP-Mixerモデルの2段階モデルを提案しました。

企業固有の決定木ルールと全企業共通のMLP-Mixerモデルを組み合わせた2段階分類モデルの概念図。取引明細データがまず決定木ルールを通過し、ルールに合致しないデータのみがMLP-Mixerモデルで分類される。

第1段階:企業固有の決定木ルール

各企業ごとに決定木を学習し、その木の根から葉までのパスをif-then形式のルールとして抽出します。例えば、「取引説明文に『〇〇』が含まれ、金額が5,000円以下なら事務用品費」といった明確なパターンをルール化します。 ただし、すべてのルールを使うのではなく、訓練データでの正解率が閾値(例:85%)以上の高精度なルールだけを採用します。

第2段階:共通のMLP-Mixerモデル

ルールでカバーできない複雑なケースや稀なパターンは、全企業のデータで学習した共通のMLP-Mixerモデルで分類します。MLP-Mixerは畳み込みやAttentionを使わず、MLPのみで構成されるシンプルながら強力なニューラルネットワークです。

この手法の利点
  1. 高速・低コスト:明確なパターンは軽量な決定木ルールで高速・低コストで処理
  2. 高精度:企業固有のパターンは決定木ルールで捉え、複雑なケースや稀なパターンは高性能な共通モデルで対応
  3. 解釈可能性:決定木ルールは人間が理解・検証しやすい

実験と結果

今回の実験では、3つのモデルを比較しました。

  1. 決定木のみ(企業ごとに個別の決定木を学習)
  2. MLP-Mixerのみ(全企業共通の単一モデル)
  3. 提案手法である2段階モデル(企業固有の決定木ルール + 共通MLP-Mixerモデル)

この比較により、企業固有性と共通知識のそれぞれの貢献と、両者を組み合わせた効果を検証します。

データセット
  1. freee社内データ(非公開):取引量に応じて企業を3グループ(多い順にHeavy/Middle/Light)に分類し、各グループから5,000社をサンプリング。リアルな複数企業環境を反映した大規模データセット。
  2. MoneyData(公開データ):論文「MoneyVis: Open Bank Transaction Data for Visualization and Beyond」より。約6,500件の小売銀行取引データ。都市ごとに「企業」として扱った。
結果1:freee社内データでの精度比較
企業グループ 決定木のみ MLP-Mixerのみ 2段階モデル
Heavy 0.642 0.621 0.715
Middle 0.636 0.626 0.700
Light 0.677 0.612 0.712

すべての企業グループで2段階モデルが最高精度を達成!
また、企業ごと決定木のみが共通MLP-Mixerのみの精度を上回り、企業固有パターンを捉えることの重要性が示されました。
推論時間についても、決定木ルールの処理は非常に高速(Heavy企業グループで196秒)で、MLP-Mixerのみ(推定204時間)と比較して圧倒的に速く、2段階モデル(推定106時間)では処理時間を約半分に削減できました。

結果2:MoneyData(公開データ)での精度・速度比較
決定木のみ MLP-Mixerのみ 2段階モデル
精度 0.955 0.971 0.968
推論時間 (s) 0.007 2.382 0.324

MoneyDataでは共通MLP-Mixerモデルのみが最高精度を達成しましたが、2段階モデルははほぼ同等の精度を7.4倍の速さで実現しました。

まとめ

企業固有の決定木ルール+全企業共通のMLP-Mixerモデルの2段階モデルは精度・速度・解釈可能性・運用コストのバランスがよいことが示されました。
明確なパターンはルールで高速に処理し、複雑なケースは共通モデルで対応するという相補的な仕組みにより、実運用に適したシステムを構築できます。
複雑な問題に対しても、シンプルなルールベースのアプローチが持つ可能性を改めて実感しました。

おわりに

社会人になってから初めてと言っていい研究業務だったので、自分にとってはチャレンジングな部分もありましたが、acceptされてとても嬉しかったです。
周りの人に助けていただいたおかげです。
これからもユーザーの皆様により良い価値を届けていけるよう研究開発を頑張っていきます!