Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

SQLでRFM分析に挑戦する

ビジネスデータ解析のためのSQL入門 第3回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2017/08/04 14:00

 本連載ではビジネスデータ解析でデータベースから情報を取得して活用する必要がある方を対象に、ビジネスデータ解析でよく使われる実践的なSQL例を示し、解説します。前回はバスケット分析と時系列分析について取り上げました。今回は顧客分析の代表的な手法の一つであるRFM分析を題材に、具体的な実行例でSQLでのデータ解析に挑戦します。

目次

対象読者

  • SQLの基本は理解しているが、より実践的な分析に取り組みたい方

サンプルの動作確認環境

  • PostgreSQL
  • CentOS6.7

データの準備

 本稿で用いるサンプルデータとして、購買履歴のテーブルを準備しました。

 サンプルデータの作成ためのSQLを、以下に示しておきます。

リスト1 購買履歴 テーブルの作成(create_table_sales_history.sql)
create table sales_history(
item_name char(12),  (商品名)
item_category char(12 ),  (商品カテゴリ)
date date,  (購買日)
place char(8),  (購買地域・場所)
user_id char(8),  (顧客コード)
price int  (料金)
);
リスト2 購買履歴 データの挿入(insert_sales_history.sql)
insert into sales_history values
('鮭','food','2017/5/29','AB Store','UID0001','250'),
('豆乳','food','2017/5/29','AB Store','UID0001','250'),
('豆乳','food','2017/5/30','AB Store','UID0001','200'),
('鮭','food','2017/5/30','AB Store','UID0001','350'),
('卵','food','2017/5/30','AB Store','UID0001','200'),
('鮭','food','2017/5/30','AB Store','UID0001','350'),
('牛肉','food','2017/6/1','AB Store','UID0001','450'),
('牛肉','food','2017/6/2','AB Store','UID0001','450'),
('深皿','zakka','2017/6/3','AB Store','UID0002','980'),
('卵','food','2017/6/4','AB Store','UID0001','250'),
('豆乳','food','2017/6/4','AB Store','UID0003','250'),
('卵','food','2017/6/5','AB Store','UID0001','250'),
('卵','food','2017/6/6','AB Store','UID0001','250'),
('鮭','food','2017/6/7','AB Store','UID0001','250'),
('鮭','food','2017/6/8','AB Store','UID0001','250'),
('卵','food','2017/6/9','AB Store','UID0001','250'),
('豆乳','food','2017/6/10','AB Store','UID0001','250'),
('卵','food','2017/6/10','AB Store','UID0001','250'),
('鮭','food','2017/6/10','AB Store','UID0004','250'),
('卵','food','2017/6/12','AB Store','UID0001','250'),
('卵','food','2017/6/12','AB Store','UID0001','250'),
('鮭','food','2017/6/13','AB Store','UID0001','250'),
('豆乳','food','2017/6/13','AB Store','UID0001','250'),
('深皿','zakka','2017/6/14','AB Store','UID0003','980'),
('深皿','zakka','2017/6/14','AB Store','UID0003','780')
;

RFM分析とは

 RFM分析とは、顧客の購買行動をRecency(最新購買日)、Frequency(購買頻度)、Monetary(購買金額)の3つの指標で分類し分析する手法です。

 第1回で取り上げたデシル分析は一つの指標での分析でしたが、RFM分析は複数の指標の分析となるため、顧客をより詳しく分析したい場合に用いられる手法です。

 RFM分析でもそれぞれの指標をランク分けします。この際、デシル分析のように10段階にしてもいいですが、3指標のため10×10×10=1000通りの分類になります。あまり多くても分析結果が分かりにくいため、3~5程度のランクに分けるのが一般的なようです。

図1 RFM分析による顧客分類の例
図1 RFM分析による顧客分類の例

 図1はRFM分析による顧客分類のイメージです。頻度が高いと常連、低いと新規、購買合計金額が多いと優良、といった分類をします。

 顧客が現在どのような状態か観測するため、また今後どのように変化すよう施策を打つべきか検討するため分析に利用します。

 集計したデータは活用のため、3指標のうちシンプルに2指標のみを使って2次元データで分析する方法もよく用いられます。今回は3指標の集計と2指標の集計を解説します。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 西 潤史郎(ニシ ジュンシロウ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2017年5月時点での登録メンバは52名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:ビジネスデータ解析のためのSQL入門
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5