はじめに
はじめまして。社内でデータサイエンティストを務めております @shosuke_kondo です。
NTTデータ テクノロジーコンサルティング事業本部では、顧客視点の提供価値の高度化(CXイノベーション)、バリューチェーンや業務プロセスの効率化(バリューチェーン・イノベーション)、新たな価値を提供するビジネスモデルの創出(ビジネスモデル・イノベーション)の3つの考え方を取り込んだデジタル変革の取り組みをデジタルサクセスと名付けて展開しています。
デジタルサクセス™を支えるテクノロジー・ソリューションについては、IT基盤としてTrusted Data Foundation®、iQuattro®、Snowflake、情報分析・活用ソリューションとしてDataRobot、Tableau、ThoughtSpotなどを、お客様の成熟度に合わせて適切な組み合わせでご提供しています。特に、DataRobot、Tableauのご提供に際しては、各社がもつカスタマーサクセスのプログラムである、AIサクセスプログラム、Tableau Blueprintをデジタルサクセス™プログラムと組み合わせてご提供しています。
本記事では、DataRobotで手軽に未来を予測し、Tableauで予測結果を速く簡単に視覚的な形でデータ分析した「携帯キャリアの解約予測に基づくLTV(ライフタイムバリュー)算出による優良顧客分析」の仮想事例をご紹介をさせていただきます。
DataRobotとは
DataRobot社は、人工知能(AI)に対するユニークなコラボレーション型のアプローチであるバリュー・ドリブン AIのリーダーです。
DataRobot社の製品であるDataRobotは、自動機械学習(AutoML)プラットフォームであり、機械学習モデルの構築、トレーニング、評価、デプロイメントを自動化することができます。複雑なデータ分析を迅速かつ簡単に実行し、優れた予測モデルの作成をサポートすることが可能です。
Tableauとは
Tableauは膨大なデータをわかりやすく視覚化する分析プラットフォームであり、Excelでは扱えないような膨大なデータでも、ドラッグアンドドロップなどの簡単な操作で、様々な形式に視覚化することができます。Tableauはその使い勝手と視覚表現の豊富さから多くのユーザに支持されており、世界中の企業・ユーザに利用されています。多種多様なデータを一元的にビジュアル化することを目的に作られているため、多岐にわたるデータソースから情報を抽出・結合させ、分析において必要な項目を任意にグラフへと落とし込める点は特徴として上げられます。
本テーマの全体像
架空の携帯キャリアのマーケティング部門において、顧客のLTVを起点としたマーケティング戦略を立てたいという要望があった際に想定される分析の流れを説明します。LTV算出を行えば、顧客生涯価値が高い優良顧客の特徴が分かるので、その後のアクションとして、マーケティング投資の最適化、顧客維持戦略の強化、商品やサービスの改善、新規顧客獲得戦略の立案、クロスセルとアップセルの機会の特定などがデータドリブンに行えるようになります。
本記事ではDataRobotを使ってLTV予測に必要な解約予測用のAIを素早く作成し、Tableauを使ってLTVの高い顧客の特性を素早く・綺麗に可視化していきます。実際のビジネス案件では、データ準備の前段階で業務要件を整理したり、モデル構築前にモデル精度改善のためのデータ加工、予測前に精度の確認を行う必要がありますが、今回は流れを簡単化するため省略しております。
データ準備
下表のような顧客データを下記のPythonコードで作成しました。今回作成するデータは顧客IDに対して、顧客情報を付随させたデータです。様々な切り口から分析できるように、16種類のカラムを作成しました。顧客IDと予測対象カラム(解約)を除いた14種類のカラムから、予測対象カラムである「解約」の値(0,1)を推定します。
項目名 | 内容 | 入力値の例 |
---|---|---|
顧客ID | 顧客の一意の識別子 | 11111 |
加入日 | サービスに加入した日付 | 2023-07-01 |
購入場所 | 顧客が購入した場所 | 大手家電量販店 |
性別 | 顧客の性別 | 男性 |
年齢 | 顧客の年齢 | 35 |
都道府県 | 顧客が住んでいる都道府県 | 東京都 |
シニア | 顧客がシニアかどうかを示す指標 (1: シニア, 0: シニアでない) | 1 |
パートナー | 顧客がパートナー(配偶者)を持っているかどうか | はい |
扶養家族 | 顧客が扶養家族を持っているかどうか | あり |
在職期間 | 顧客が現在の会社で働いている期間(年数) | 10 |
契約期間 | 顧客の契約期間 | 1年 |
毎月の請求額 | 毎月の請求金額 | 5000.00 |
合計請求額 | 合計の請求金額 | 60000.00 |
次回も同じブランドを買いたいか | 次回も同じブランドを買いたいと思う頻度 | 高頻度 |
契約のきっかけ | 顧客が契約を決めた理由 | 他社に比べて価格が安いため |
乗り換え頻度 | 顧客が他のサービスに乗り換える頻度 | 低頻度 |
解約 | 5年以内に解約したかどうか (1: 解約した, 0: 解約してない) | 1 |
import numpy as np
import pandas as pd
import random
from faker import Faker
fake = Faker('ja_JP') # 日本語のデータを生成
# データ数を設定
num_records = 90000 # 顧客数
num_years = 3 * 12 # 3年間のデータ:月単位
# 加入日の範囲設定
start_date = pd.Timestamp('2022-01-01')
end_date = pd.Timestamp('2024-12-31')
# 各説明変数の生成
data = {
'顧客ID': [fake.uuid4() for _ in range(num_records)],
'加入日': [fake.date_between_dates(date_start=start_date, date_end=end_date) for _ in range(num_records)],
'購入場所': [random.choice(['大手家電量販店', 'ショッピングモール', '自社ショップ']) for _ in range(num_records)],
'性別': [random.choice(['男性', '女性']) for _ in range(num_records)],
'年齢': [random.randint(18, 80) for _ in range(num_records)],
'都道府県': [fake.prefecture() for _ in range(num_records)],
'シニア': [random.choice([1, 0]) for _ in range(num_records)],
'パートナー': [random.choice(['はい', 'いいえ']) for _ in range(num_records)],
'扶養家族': [random.choice(['あり', 'なし']) for _ in range(num_records)],
'在職期間': [random.randint(1, 40) for _ in range(num_records)],
'契約期間': [random.choice(['1年', '2年', '指定なし']) for _ in range(num_records)],
'毎月の請求額': [round(random.uniform(3000, 10000), 2) for _ in range(num_records)],
'合計請求額': [round(random.uniform(3000, 10000) * num_years, 2) for _ in range(num_records)],
'次回も同じブランドを買いたいか': [random.choice(['高頻度', '中頻度', '低頻度']) for _ in range(num_records)],
'契約のきっかけ': [random.choice(['他社に比べて価格が安いため', '旧キャリアは電波が繋がりにくいため', '割引やキャンペーン目当て', '親族や友人とのキャリア統一', '国際ローミングの利便性']) for _ in range(num_records)],
'乗り換え頻度': [random.choice(['高頻度', '中頻度', '低頻度']) for _ in range(num_records)]
}
# データフレームの生成
df = pd.DataFrame(data)
# 解約フラグを設定する関数
def determine_cancellation(row):
if (row['乗り換え頻度'] == '高頻度' or
row['契約のきっかけ'] in ['他社に比べて価格が安いため', '割引やキャンペーン目当て']):
return 1 if random.random() < 0.6 else 0 # 解約率を60%に設定
elif (row['性別'] == '男性' or
row['都道府県'] in ['千葉県', '埼玉県', '神奈川県', '大阪府', '東京都'] or
row['年齢'] <= 30 or
row['毎月の請求額'] >= 8000):
return 1 if random.random() < 0.3 else 0 # 解約率を30%に設定
else:
return 1 if random.random() < 0.05 else 0 # 解約率を5%に設定
# 解約フラグの設定
df['解約'] = df.apply(determine_cancellation, axis=1)
# 加入日を基準にデータを分割
df['加入日'] = pd.to_datetime(df['加入日'])
train_df = df[(df['加入日'] >= start_date) & (df['加入日'] <= pd.Timestamp('2023-12-31'))]
test_df = df[(df['加入日'] >= pd.Timestamp('2024-01-01')) & (df['加入日'] <= end_date)]
# データをファイルに保存
train_df.to_csv('train_data.csv', index=False)
test_df.to_csv('test_data.csv', index=False)
モデル構築
続いて、DataRobotでのモデル構築手順をご説明します。流れとしては、データセットの登録・確認 → モデリングの設定 → モデリング開始といった流れになっております。
(1)DataRobotにサインインし、最近のアクティビティからユースケースを作成します。ユースケースの名前(解約予測)を設定し、上記プログラムで作成したtrain_data.csvをドラッグ&ドロップして、データセットの登録を行います。
データセットを登録すると探索的データ分析が自動で行われ、特徴量のヒストグラムや欠損値、平均値といったデータセットに関する基礎的な分析結果を見ることが出来ます。
(2)データを登録・確認し終えたら、モデリングを行います。モデリングの流れはデータセットの選択 → モデリング方法の設定 → 追加設定の順で行います
登録したデータセットの右側にある3つの点からモデリングを開始を選択し、遷移先の画面で学習方法やターゲット(目的変数)の設定といったモデリング設定を行います。
その後パーティションの設定やウェイトの設定などの追加設定を行い、右上のモデリングを開始をクリックします。
(3) 特徴量の解析・加工が終わると、モデルが作成され始めます。
(4)モデル構築が終わると、モデルタブの最上部にデプロイ推奨モデル(複数のアルゴリズムとデータ処理の組み合わせの中で最も精度が高い組み合わせとなったブループリント)が表示されます。説明タブからは予測の根拠などモデルの説明性、パフォーマンスタブからはROC曲線やリフトチャートなどモデルの精度を確認できますが、ここでは省略します。
予測
最も精度が高いデプロイ推奨モデルで予測を行います。モデルのアクション>予測を作成から、下画像の画面に遷移し、データ準備で作成したtest_data.csvをドラッグ&ドロップして予測を実行します。予測が完了したら、予測結果をダウンロードします。
予測結果をTableauで分析
Tableauでは顧客データのようなExcelでの処理が難しいビッグデータの処理やリアルタイムでの可視化、様々な切り口からの探索的なデータ分析、ダッシュボードの作成が必要なシーンでは特に有効です。今回は顧客データについて、探索的にデータ分析する必要があったため、Tableauを利用しています。
LTVの算出
顧客ごとの契約開始後5年間のLTVを算出します。Tableauの計算フィールドで契約開始から5年間のLTVを定義します。1年目の売り上げ期待値=毎月の請求額×12カ月×継続率(=1-解約率)となります。これを5年分計算する訳ですが、5年間で解約率は変わらないと仮定を置いた場合、n年目の売り上げは1~n-1年目で解約しなかった場合に生じるので、n年目の売り上げ=毎月の請求額×12カ月×(1-解約率)^nとなります。そのため、5年間のLTVは下画像1枚目のようになります。画像1枚目は5年間のLTVの合計値になりますが、これを顧客IDの数で割ることで顧客1人あたりの5年間のLTVが算出きます。例えば、特定の都道府県の顧客全員の5年間のLTVの合計値を見てインパクトの大きい都道府県を探したい場合は前者の指標、特定の都道府県の顧客1人あたりの5年間のLTVの合計値を見て1人の顧客獲得で得られる利益が大きい都道府県を探したい場合は後者の指標を利用すると良いです。
優良顧客分析
マーケティング戦略は①3C分析などの環境分析>②STPの策定>③マーケティングミックスの策定>④目標設定・効果測定の4ステップを踏んで作成します。LTV算出に基づいた優良顧客分析は、基本的に「②STPの策定」のターゲティング戦略策定のためのセグメンテーション分析の中で行われるため、ここではセグメンテーション分析を行います。
・STPの策定とは
STPはSegmentation, Targeting, Positioningの頭文字をとったもので、市場の顧客を様々な切り口で細分化し(セグメンテーション)、どのセグメントの顧客獲得を目指すか決め(ターゲティング)、競合他社や市場に対してどのようなスタンスをとり顧客に価値提供を行うかを決める(ポジショニング)マーケティング戦略を考える上で、基本的なフレームワークです。
・セグメンテーションのフレームワーク
顧客を細分化する際の大きな最初の切り口として、地理・人・行動・心理の4つの切り口が挙げられます。それぞれの切り口は、ジオグラフィック(地理的変数)・デモグラフィック(人口動態的変数)・ビヘイビアル(行動的変数)・サイコグラフィック(心理的変数)といった呼ばれ方をしています。それぞれ人口密度・気候、性別・年齢、購買経験・満足度、価値観・趣味といった観点は顧客ニーズの分析をする上で様々なユースケースにおいて参考になるため、フレームワーク化されています。本テーマでもこの4つの切り口から分析を行います。
セグメンテーション:ジオグラフィック
都道府県ごとの5年間のLTV(1人あたり)
ジオグラフィックの切り口から分析では、顧客ニーズに地域差が見られる場合に有効です。例えば、今回の例では都道府県ごとの5年間のLTV(1人あたり)を色の濃さで表現していますが、色が濃い(=1人あたりの5年間におけるLTVが大きい)都道府県では1人の顧客獲得で得られる利益が大きくなるため、顧客獲得コストを大きくかけることができる地域と解釈することもできます。下画像を見ると、京都・福井・岡山・三重・奈良の1人あたりの5年間におけるLTVが大きいことが分かります。ネクストアクションとしては、上記5府県がLTVが大きくなる原因を分析し、LTVが高くなる顧客の特徴を深掘っていく分析を行う必要があります。
セグメンテーション:デモグラフィック
性別・年齢とLTVの関係
デモグラフィックの切り口から分析では、年齢や性別、職業など履歴書に書かれそうな項目に顧客ニーズの差が見られる場合に有効です。例えば、今回の例では性別・年齢とLTVの関係を棒グラフ(縦軸:5年間のLTVの合計値、横軸:年齢、色が濃いほど1人あたりの5年間におけるLTVが大きい)で表現していますが、女性の方がLTVの合計・1人あたりのLTVが大きい傾向がみられています。また、男性は年齢におけるLTVの差が大きく見られませんでしたが、女性は35~69歳においてLTVが高くなる傾向が見られています。(60~64歳は例外的に低くなっている。)上記の分析結果を見ると、愚直に捉えるのであれば女性顧客の獲得を目指したキャンペーン・広告を打つという方針が考えられます。
セグメンテーション:ビヘイビアル
毎月の請求額と解約率・LTVの関係
ビヘイビアルの切り口から分析では、購買経験や商品の認知状況など人の行動特性に差が見られる場合に有効です。下の2つの画像では毎月の請求額と解約率の関係、毎月の請求額とLTVの関係を表していますが、毎月の請求額が増えても解約率は下がることなく、毎月の請求額が増えるとLTVが増えていくような関係が見られました。この結果を愚直に捉えると、毎月の請求額を増やせば増やすほど、利益が上がるように見えますが、データ背景には顧客の獲得競争もあるため、高い価格でも価格競争で他社に対して勝てているから、解約率が上がっていないと捉えることもできます。ただし、都心の家電量販店ではなく地方の直営店など、価格競争が生じていない領域では価格を上げて、LTVを大きくしていくといった戦略も考えることができます。
セグメンテーション:サイコグラフィック
乗り換え頻度・契約のきっかけとLTVの関係
サイコグラフィックの切り口から分析では、価値観やパーソナリティなど人の心理面に顧客ニーズの差が見られる場合に有効です。下の図では乗り換え頻度・契約のきっかけ別の5年間のLTVの合計値を表しており、色が濃いほど1人あたりの5年間におけるLTVが大きくなるように可視化しています。乗り換え頻度の高い顧客はLTVが低く、契約のきっかけに「割引・キャンペーン目当て」や「他社より安いこと」を上げている顧客はLTVが低いことが分かります。乗り換え頻度・価格感応度が低い顧客獲得に向けた投資の選択と集中を行うことが戦略として考えられます。
ターゲティング戦略
上記を踏まえると、都心の家電量販店などの価格競争が激しい地域での競争に本格参入して顧客獲得を図るのではなく、地方部でも電波が通じやすいなど他地域に劣らない価値やサービスを地方部でも提供し、その対価として適正な価格設定を行うような戦略や、分析結果に基づいてよりパーソナライズされたサービスや商品、コミュニケーションを提供することで満足度向上を目指すような戦略が検討出来ます。
まとめ
DataRobotを使って顧客の解約率を予測し、TableauでLTVが高い顧客の可視化することで、高速・簡単にマーケティング戦略の考案をすることが出来ました。データドリブンなマーケティング戦略立案の際に本記事がお役立てれば幸いです。この記事はあくまで、LTV予測~戦略決定の流れの理解を目的としており、途中のビジネス要件の確認やモデル精度向上の取り組み、競合分析などを省略しているため、実際のビジネスでの利用を踏まえるとより詳細の要件確認や公平で深いデータ分析が必要となります。デジタルサクセス、DataRobotやTableauの導入のご相談は是非NTTデータ テクノロジーコンサルティング事業本部 デジタルサクセスコンサルティング事業部までお願い致します。ご拝読ありがとうございました!
仲間募集
NTTデータ テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。
1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)
クラウド/プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer
2. データサイエンス領域(データサイエンティスト/データアナリスト)
データ活用/情報処理/AI/BI/統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX/デジタルサクセスを推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist
3.お客様のAI活用の成功を推進するAIサクセスマネージャー
DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。
https://nttdata.jposting.net/u/job.phtml?job_code=804
4.DX/デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》
データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。ソリューション紹介
Trusted Data Foundationについて
~データ資産を分析活用するための環境をオールインワンで提供するソリューション~
https://www.nttdata.com/jp/ja/lineup/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ(Datalake+DWH+AI/BI)を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。
TDFⓇ-AM(Trusted Data Foundation - Analytics Managed Service)について
~データ活用基盤の段階的な拡張支援(Quick Start) と保守運用のマネジメント(Analytics Managed)をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス~
https://www.nttdata.com/jp/ja/lineup/tdf_am/
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。
NTTデータとDatabricksについて
NTTデータは、お客様企業のデジタル変革・DXの成功に向けて、「databricks」のソリューションの提供に加え、情報活用戦略の立案から、AI技術の活用も含めたアナリティクス、分析基盤構築・運用、分析業務のアウトソースまで、ワンストップの支援を提供いたします。NTTデータとTableauについて
ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。
これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。
https://www.nttdata.com/jp/ja/lineup/tableau/
NTTデータとAlteryxについて
Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。
導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。
NTTデータとDataRobotについて
NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。
NTTデータとInformaticaについて
データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。
https://www.nttdata.com/jp/ja/lineup/informatica/
NTTデータとSnowflakeについて
NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。