mssRFM.sh

概要:RFM分析を行う

書式:mssRFM.sh [-h]

-h : ヘルプの表示

パラメータ一覧

環境変数 内容
InDat 顧客購買履歴データファイルを指定する
OutDatDir XMLtableやXMLによる結果データを保存するディレクトリを指定する
OutHtmlDir HTMLによる結果データを保存するディレクトリを指定する
CustFldName InDat上の顧客ID項目名(もしくは顧客IDに相当する項目名)
DateFldName InDat上の日付項目名
SelPeriodFrom InDatで利用するレコードの日付選択開始条件
SelPeriodTo InDatで利用するレコードの日付選択終了条件
MoneyFldName InDat上の金額項目名(Monetaryを計算する項目)
DateFldName Recencyを計算するための基準日(Recency=基準日-最近来店日)
latestを指定すればInDat上で観測されるもっとも新しい日付
todayを指定すれば本日
RecencyCnt Recencyをいくつのクラスに分割するか
FreqCnt Frequencyをいくつのクラスに分割するか
MonetaryCnt Monetaryをいくつのクラスに分割するか
BucketMethodR Recencyのクラス分割基準(cnt:件数均等化, rng:範囲均等化, usr:ユーザ指定)
BucketMethodF Frequencyのクラス分割基準(cnt:件数均等化, rng:範囲均等化, usr:ユーザ指定)
BucketMethodM Monetaryのクラス分割基準(cnt:件数均等化, rng:範囲均等化, usr:ユーザ指定)
RangeR BucketMethodR:="usr"の時の範囲条件
RangeF BucketMethodF:="usr"の時の範囲条件
RangeM BucketMethodM:="usr"の時の範囲条件
mssQuiet 途中経過の完了メッセージを出力するなら0、そうでなければ1を指定
TmpDir 作業ディレクトリ
HtmlComment 生成されるindex.htmlのトップに表示するコメント。

入力データ

利用するデータは以下に示すような、顧客購買履歴データのみである。レシートの一行が一レコードに対応するデータである。この分析で利用する項目は、「顧客ID」、「日付」、「金額」の3項目のみである。その他の項目は一切利用しない。といっても入力データに含まれていても問題はない。

顧客ID 日付 時刻 商品 個数 金額
A001
A001
A001
A005
A005
A001
A001
A001
20040105
20040105
20040105
20040105
20040105
20040108
20040108
20040108
101521
101521
101521
102201
102201
131152
131152
131152
パン
牛乳
バター
野菜
ポン酢
ヨーグルト
牛乳
菓子パン
2
2
1
3
1
1
1
2
220
352
253
230
450
98
110
298

また、顧客ID別日付別に金額が集計された以下のような表であっても問題ない。

顧客ID 日付 個数 金額
A001
A005
A001
20040105
20040105
20040108
5
4
4
825
680
506

解説

RFM分析とは、顧客の購買履歴データを利用し、Recency(最新購買日), Frequency(購買頻度), Monetary(購買金額)の三つの観点から顧客のセグメンテーションを行う顧客分析の一手法である。
Recencyとは、最近の来店からどの程度の期間が経過したかを表す。
Frequencyとは、どの程度頻繁に来店したかを表す。
Monetaryとは、どのくらい購買しているか(購入金額)を表す。
これらR,F,Mを通常5つのクラスに分割し、1から5までの番号をふる(5が最も良い値)。例えばFが5の顧客は、最も頻繁に来店してくれる顧客群となる。
分割の方法としては以下の3つの方法が可能である。

1) 件数均等化分割
 件数均等化分割とは、各クラスに属する顧客人数をできるだけ均等にするようにクラスを決める方法である。例えば1000人の顧客を対象に5分割する場合、各クラスとも200人程度となることが期待できる。ただし、例えば購買頻度において同数の顧客が多いケースにおいては、人数分布に偏りが生じることになる。

2) 範囲均等化分割
 範囲均等化分割とは、各RFMのとる範囲を均等に分割することによってクラスを決める方法である。例えば、購買頻度の範囲が1〜50の場合、「1回〜10回」がクラス1、「11回〜20回」がクラス2というように決められる。ただし、この方法では異常値が含まれると好ましくない分割となってしまうので注意が必要である。

3) ユーザ指定による分割
 ユーザが範囲を指定することも可能である。その場合、RFM毎にクラスの範囲を指定する必要がある。

以上のように設定されたクラスを元にして顧客をセグメンテーションしていく。このシナリオにおいては、以下に示すような結果を出力する。

1) 基本情報

2) RFMの各クラスの範囲および人数分布表

3) RFMの人数分布表&棒グラフ