{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 応用ユースケース:金融機関と高級時計会社のクロス集計分析\n", "\n", "このチュートリアルでは、AutoPrivacy DCRを使用して、金融機関(銀行)と高級時計会社が保持するデータを安全に突合し、顧客の金融属性と購買行動を分析する応用例を紹介します。\n", "\n", "**重要**: このチュートリアルは、[基本チュートリアル](./basic_apc_cli_tutorial.ipynb)の実行手順を理解していることを前提としています。APC-CLIの具体的なコマンドや実行方法については基本チュートリアルを参照してください。\n", "\n", "---\n", "\n", "## ユースケースの背景\n", "\n", "企業が単独で保有するデータには限界があります:\n", "\n", "- **銀行** → 顧客の「収入・資産・信用度」などの金融的な側面は分かるが、**具体的にどんなモノにお金を使っているか**までは分からない\n", "- **高級時計会社** → 「どの顧客が時計を買ったか」「どのラインに興味があるか」は分かるが、その顧客の**収入水準や資産規模、信用力**は分からない\n", "\n", "## 解決策\n", "\n", "**AutoPrivacy DCR上でIDを元に安全に突合することで「金融属性 × 購買実績」のクロス集計が可能になり、マーケティングROIを高められる**\n", "\n", "異なる企業のデータを組み合わせることで、単独では見えなかった顧客の全体像が明らかになります。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## データ概要\n", "\n", "### 銀行データ(入力1)\n", "- **account_balance**: 口座残高レベル (High/Medium/Low)\n", "- **monthly_income**: 月収レベル (High/Medium/Low) \n", "- **credit_score**: 信用スコア (High/Medium/Low)\n", "\n", "### 高級時計会社データ(入力2)\n", "- **total_purchase_amount**: 累計購入額 (High/Medium/Low)\n", "- **last_purchase_date**: 最終購入日からの経過 (Within_1year/1-3years/Over_3years)\n", "- **store_visits_12months**: 過去12か月の来店回数 (High/Medium/Low)\n", "- **product_category_interest**: 関心商品カテゴリー (Luxury/Classic/Sports)\n", "\n", "### 期待される分析結果\n", "- どの金融属性の顧客がどの購買パターンを持つか\n", "- 来店頻度と購買額の相関\n", "- 商品嗜好と顧客属性の関係\n", "- 潜在的な高価値顧客の発見" ] }, { "cell_type": "markdown", "metadata": { "vscode": { "languageId": "plaintext" } }, "source": [ "## クロス集計表アルゴリズムの概要\n", "\n", "クロス集計表とは、2つ以上のカテゴリカル変数(質的変数)の関係を表形式で表現する統計手法です。このチュートリアルでは、銀行と高級時計会社の2つのデータセットをIDで突合し、クロス集計表を作成します。\n", "\n", "\n", "\n", "**処理の流れ**:\n", "1. 両組織が同一の顧客IDを持つレコードを特定\n", "2. IDが一致するレコード同士を安全に結合\n", "3. 結合されたデータから各属性の組み合わせをカウント\n", "4. カウント結果をクロス集計表として出力\n", "\n", "---\n", "\n", "## 実行方法\n", "\n", "このユースケースの実行手順は、[基本チュートリアル](./basic_apc_cli_tutorial.ipynb)と同じです。以下の点のみ変更してください:\n", "\n", "**必須の変更:**\n", "- **関数のパス**: `FUNCTION_SOURCE_PATH=../../functions/cross_table`\n", "- **入力データのパス**:\n", " - `INPUT_1_PATH=../../functions/cross_table/inputs/bank_input`(銀行データ)\n", " - `INPUT_2_PATH=../../functions/cross_table/inputs/luxury_watch_input`(高級時計会社データ)\n", "- **handler.pyで読み込むファイル名**: `functions/cross_table/function/handler.py`内の入力ファイル名を以下のように変更:\n", " ```python\n", " # 変更前\n", " df_cross_table = cross_table_data(\n", " f\"{INPUT_1_DIR}/input_1.csv\", f\"{INPUT_2_DIR}/input_2.csv\"\n", " )\n", " \n", " # 変更後\n", " df_cross_table = cross_table_data(\n", " f\"{INPUT_1_DIR}/data.csv\", f\"{INPUT_2_DIR}/data.csv\"\n", " )\n", " ```\n", "\n", "**任意の変更(わかりやすくするため変更を推奨):**\n", "- **プロファイル名**: 例として `bank-profile`(銀行用)と `luxury-watch-profile`(高級時計会社用)\n", "- **アプリケーション名**: 例として `cross_table_analysis`\n", "\n", "基本チュートリアルのステップ3〜15に従って、環境変数の設定からクリーンアップまでを実行してください。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## 突合結果の例\n", "\n", "基本チュートリアルの手順に従って実行すると、以下のようなクロス集計結果が得られます:\n", "\n", "```\n", "number_of_rows,0:account_balance,0:credit_score,0:monthly_income,1:last_purchase_date,1:product_category_interest,1:store_visits_12months,1:total_purchase_amount\n", "11,Low,High,High,Over_3years,Sports,High,Low\n", "10,Low,Low,Medium,1-3years,Sports,Low,Low\n", "12,High,Medium,High,Over_3years,Sports,High,High\n", "10,Low,Low,Medium,1-3years,Classic,Low,Low\n", "10,Medium,High,Medium,1-3years,Classic,High,Medium\n", "10,Low,Low,Low,Within_1year,Sports,High,Low\n", "12,Low,Medium,Medium,1-3years,Classic,High,Low\n", "11,Medium,Medium,High,Over_3years,Luxury,Low,Medium\n", "11,Low,High,High,Over_3years,Classic,High,Low\n", "13,Medium,Low,High,Over_3years,Sports,High,Medium\n", "10,Medium,High,Low,Within_1year,Luxury,Low,Medium\n", "10,Low,Medium,High,Over_3years,Classic,High,Low\n", "11,Low,High,Medium,1-3years,Sports,High,Low\n", "10,Medium,High,Medium,1-3years,Classic,Low,Medium\n", "10,Medium,Low,High,Over_3years,Classic,High,Medium\n", "10,Low,Medium,High,Over_3years,Luxury,Low,Low\n", "11,High,High,Low,Within_1year,Luxury,High,High\n", "13,High,High,Medium,1-3years,Luxury,High,High\n", "```\n", "\n", "**データの見方:**\n", "- `number_of_rows`: この属性の組み合わせを持つ顧客数\n", "- `0:` で始まるカラム: 銀行データ(口座残高、信用スコア、月収)\n", "- `1:` で始まるカラム: 高級時計会社データ(購買履歴、来店頻度、関心カテゴリー)\n", "\n", "例えば、1行目は「口座残高Low、信用スコアHigh、月収Highで、3年以上前に購入し、Sports志向で来店頻度がHighだが購買額はLowの顧客が11人いる」ことを示しています。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## 分析結果の考察\n", "\n", "上記のクロス集計表から、顧客の金融属性と購買行動の関係性を読み取ることができます。\n", "\n", "### 1. **来店は多いが購買額は控えめな層が存在**\n", "\n", "→ よく店舗を訪れるものの、購買に至るケースは控えめという傾向が見られる顧客セグメント。\n", "\n", "**アクション例**: \n", "- 試着体験やエントリーモデルの提案を充実させ、購買につなげる\n", "- 来店ポイントプログラムで関係性を強化\n", "\n", "### 2. **嗜好と購買行動に多様性がある**\n", "\n", "→ スポーティなモデルを好む顧客の中には、購買額が安定しない傾向の方もいる。嗜好と購買行動の差異を理解することで、プロモーションや商品ラインナップの工夫が有効。\n", "\n", "**アクション例**:\n", "- 嗜好に応じた価格帯別商品展開\n", "- スポーツモデル愛好者向けアクセサリー提案\n", "\n", "### 3. **金融資産や信用が購買に影響するケース**\n", "\n", "→ 収入水準に関わらず、資産や信用力がある顧客は高額購買につながるケースが確認できる。所得だけでなく、資産・信用の観点から顧客を理解することが重要。\n", "\n", "**アクション例**:\n", "- 金融資産・信用力を基にしたVIPプログラム\n", "- 限定招待イベントでの接点作り\n", "\n", "### 4. **Luxury志向は幅広い層に分布**\n", "\n", "→ 高収入層だけでなく、中間層やその他層にも高級志向のニーズが見られる。高級志向は必ずしも所得や資産と連動せず、幅広い顧客に潜在ニーズが存在する。\n", "\n", "**アクション例**:\n", "- 「手の届くラグジュアリー」商品展開\n", "- 将来的な上位モデルへのステップアッププログラム" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## 他の応用ユースケース\n", "\n", "このクロス集計分析フレームワークは、様々なドメインの組織間データ突合に応用可能です:\n", "\n", "### 1. **銀行 × 小売・EC(消費行動突合)**\n", "\n", "- **目的**: 購買力・嗜好・来店頻度を把握して、パーソナライズマーケティング\n", "- **例**:\n", " - 銀行口座残高・クレジット利用履歴 × スーパー/コンビニの購買履歴\n", " - クレジットカード支払い履歴 × オンラインファッション通販の購入履歴\n", "- **得られる知見**: 「高収入だけど頻度は少ない」「低収入でも嗜好が偏っている」など顧客セグメントの可視化\n", "\n", "### 2. **フィットネスジム × 健康管理アプリ**\n", "\n", "- **目的**: 顧客の健康行動と利用状況の連携\n", "- **例**:\n", " - ジム来店頻度 × 歩数や心拍データ\n", " - クラス予約履歴 × 栄養管理アプリの摂取カロリーデータ\n", "- **得られる知見**: 「ジムは来ているけど運動量は少ない層」「自己管理はしているがジムに来ない層」など\n", "\n", "### 3. **通販 × ソーシャルメディア嗜好**\n", "\n", "- **目的**: 広告ターゲティングや商品開発\n", "- **例**:\n", " - 購買履歴 × InstagramやTikTokのフォロー・いいね履歴\n", " - ECサイトの閲覧履歴 × YouTube動画視聴嗜好\n", "- **得られる知見**: 「ブランド好きだが購買にはつながっていない層」「購入傾向がSNSで予測できる層」\n", "\n", "### 4. **旅行会社 × 交通系カード**\n", "\n", "- **目的**: 顧客の旅行嗜好と消費能力の把握\n", "- **例**:\n", " - 航空券・ホテル予約履歴 × クレジットカード利用履歴\n", " - 移動距離(Suica/Pasmo等) × ホテル滞在履歴\n", "- **得られる知見**: 「旅行好きだけど予算が低い層」「高額旅行も余裕で楽しめる層」\n", "\n", "### 5. **飲食チェーン × 健康データ**\n", "\n", "- **目的**: ヘルシー志向・購買行動の把握\n", "- **例**:\n", " - 来店履歴・注文履歴 × ウェアラブルの食事・歩数データ\n", " - サブスクリプション利用履歴 × 体重・BMI推移\n", "- **得られる知見**: 「健康意識は高いが頻度は少ない層」「頻度は多いが偏った注文傾向の層」\n", "\n", "---\n", "\n", "**まとめ**\n", "\n", "異なるドメインを突合することで **隠れた顧客セグメントや意外な行動パターン**が見えてきます。AutoPrivacy DCRを活用することで、プライバシーを保護しながら、これまで見えなかった顧客インサイトを発見できます。" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 2 }