第7回 アソシエーション分析1
アソシエーション分析とは
アソシエーション分析
前回は、あるスーパー4店舗、半年間分の「嗜好食品」の内の「菓子」データを集めたID-POSデータを使って多重クロス集計による分析をしました。
流通業界では、ID-POSデータを使って「アソシエーション分析(バスケット分析)」を行い、その結果を棚割りなどに活用しています。
ID-POSデータを使った「アソシエーション分析」を行う前に、今回は「アソシエーション分析」とは何かを知っていただき、Excelを使った簡単なアソシエーション分析を行ってみたいと思います。
ID-POSデータを使った「アソシエーション分析」は、次回解説することにします。
まず、「アソシエーション分析」とはどのようなものなのかを簡単に説明し、Excelでどこまでできるかを見極めてみたいと思います。
アソシエーション分析の仕方を動画で紹介しています。
項目ごとにご覧いただく方法と、まとめてご覧いただく方法がございます。
【項目ごとにご覧いただく場合】
ご覧になりたい項目をクリックすると、別ウィンドウで動画が再生されます。
【まとめてご覧になる場合】
画像の[>]をクリックしてください。
※動画で紹介している操作などの詳細については、以下をお読みください。
アソシエーション分析とは
「アソシエーション分析」とは、関連性を分析する手法で、膨大なデータの中から意味のある関連性を見出すことができます。
ID-POSデータを分析する手法を「マーケットバスケット分析(単に「バスケット分析」ともいう)」と言い、「アソシエーション分析」の一部です(以降、アソシエーション分析=バスケット分析として扱います)。
ID-POSデータでは、商品とその商品の売れた個数などが分かり、個数を集計すると「売れ筋商品」と思われるものが分かります。
しかし、「商品Aが買われると商品Bも一緒に買われることが多い」などといったような商品間の関連性は、このままでは分かりません。
そこで、そのルールの関連性を評価する考え方として「アソシエーションルール」が生まれました。
A・Bを事象として「もしAならばBである」、あるいは「Aという条件の時Bが起こる」ということで、「A⇒B」と表します(Aを条件部、Bを結論部という)。
事象は、2つ以上でも問題なく、「もしAかつBならば、Cである((AかつB)⇒C)」でもかまいません。
たとえば、「パンと缶コーヒーを買う人は、一緒にサラダも買う」といったようなルールでも問題ありません。
このような多数のルールの中から有益なルールを評価判断するために、指標が必要になります。
その指標として、「支持度」・「信頼度」・「リフト値」が考えられました。
これらの指標について具体的な例を元に説明します。
① 支持度(support)
「支持度」とは、全体の中で、AとBが同時に買われる確率で、次のようになります。
クリックして拡大
支持度(A⇒B)=(AとBが同時にあるデータ数)/全データ数
例では、
・AとBが同にあるデータ数=4(レシート
No 1・7・9・10)
・全データ数=10
なので次のようになります。
支持度(A⇒B)=4 / 10=0.4
「支持度」が高くなると、Aを買うとBも買う人が多くなります。
しかし逆に低くなると起こり難くなるので、ビジネス上面白味がなくなります。
② 期待信頼度(expected confidence)
「期待信頼度」とは、全体の中で、Bが買われる確率で、次のようになります。
期待信頼度(B)=(Bのデータ数) /全データ数
例では、
・Bのデータ数=6(レシートNo 1・4・6・7・9・10)
・全データ数=10
なので次のようになります。
期待信頼度(B)=6 / 10=0.6
「期待信頼度」が高ければ、Bを買う人が多いことになります。
③ 信頼度(confidence)
「信頼度」とは、(A⇒B)とすると、Aが買われた中で、Bが買われた確率で、次のようになります。
信頼度(A⇒B)=(AとBが同時にあるデータ数) / Aのデータ数
例では
・AとBが同時にあるデータ数=4(レシートNo 1・7・9・10)
・Aのデータ数=7(レシートNo 1・2・3・5・7・9・10)
なので、次のようになります。
信頼度(A⇒B)=4 / 7=0.57
「支持度」が低くても、「信頼度」が高い場合は、Aを買うと、ほぼBも買うことになります。
しかし、Bを買う人が多い場合は、「信頼度」も「支持度」も上がり、多くの人がAもBも買うことになり、特に拡販の企画などは必要ないように思われます。
逆に、Bを買う人が少ない場合は、「信頼度」が低下するので、Aとの併売といったプロモーションを企画できる可能性があります。
このように、「信頼度」は関連性を調べる重要な値ですが、注意が必要です。
このような問題点をチェックする指標として次の「リフト値」があります。
④ リフト値(lift)
「リフト値」とは、Aと一緒にBも購入した人の割合(信頼度(A⇒B))は、全てのデータの中でBを購入した人の割合よりどれだけ多いかを倍率で示したものであり、次のようになります。
リフト値=信頼度(A⇒B) /期待信頼度(B)
例では、
・信頼度(A⇒B)=4 / 7
・期待信頼度(B)=6 / 10
なので、次のようになります。
リフト値=(4 / 7) / (6 / 10)=20 / 21=0.95
「リフト値」が低ければ、Bが単独で売れており、たとえ「信頼度」が高いとしても、Aとの関連性はあまりないとみられます。
一般的には、「リフト値」が1以上の場合は有効なルールとされています。
このように、抽出されたアソシエーションルールは4つの指標を確認しながら、有益な物かどうかを判断します。
しかし、ルールのもとになる事象(商品)の組み合わせは膨大になり、全ての組合せに対し、評価していると相当の時間がかかることが想定されます。
そのため、膨大な組み合わせの中から、意味のある組合せかどうかを判断するため「Aprioriアルゴリズム」が考え出されました。
この「Aprioriアルゴリズム」は、あまり起こらない組合せ(「支持度」が一定値以下のアイテムを含む組み合わせ)は、最初から「信頼度」を計算しないというものです。
このような過程を経て、最終的には分析の目的なども考慮して、いくつかのルールを採用することになります。
Excelによるアソシエーション分析
クリックして拡大
「バスケット分析(アソシエーション分析)」では、数値化されていない事象を、事象の出現回数で数値化し分析します。
出現回数も事象単独の場合と事象の組み合わせの場合があり、それぞれの出現回数を求めています。
Excelでは、事象の組み合わせによる出現回数を求めるのが少々難しいです。
そこで、事象の組み合わせによる出現回数を中心に、Excelを使用してバスケット分析を行うにはどのように行うのかについて調べてみます。
使用するデータは、前節で使用したレシート10枚分のデータで、最初に実際のID-POSデータの構造と同じものを使用して分析します。
10枚のレシートがID-POSデータとしてある場合は、図のように、商品名ごとにレシート番号があります。
一枚のレシートで複数の商品を購入した場合は、商品の種類ごとにレシート番号が付くことになります。
クリックして拡大
このままでは集計しにくいので、レシート番号ごとの購入商品の一覧を作成します。
具体的には前節で示した表のようなものから集計します。
この表の「〇」を「1」に置き換えると集計しやすくなります。
この変換を行うには、Excelのピボットテーブルを利用します。
ピボットテーブルによるデータ変換(集計可能な表形式への変換)
Excelのシートに、レシートNoと購入商品の表を作成し、次の操作を行います。
- 表中のセルをクリックし、[挿入]タブ→[テーブル]グループ→[ピボットテーブル]をクリックします。
- [ピボットテーブルの作成]ダイアログボックスが表示されますので、ピボットテーブルの表示場所を指定します。
(今回は、作成した表と同じシートに作成するので、[既存のワークシート]にチェックを入れ、[場所]の右側にあるボタンをクリックします)
- 新たな[ピボットテーブルの作成]ダイアログボックスが表示されますので、ピボットテーブルを表示させたいセルをクリックし(今回は、[D1]をクリックします)、<閉じる>ボタン([×])をクリックします。
- 再度、[ピボットテーブルの作成]ダイアログボックスが表示されますので、<OK>ボタンをクリックします。
- [ピボットテーブルのフィールド]が表示されるので、[レシートNo]を[行]ボックス、[購入商品]を[列]ボックスへドラッグすると、[行ラベル]に[レシートNo]、[列ラベル]に[購入商品]の名前(A・B・C・D)が表示されます。
- 表示を確認したら、フィールドの[購入商品]を[Σ値]ボックスへドラッグします。
レシートNoごとにどの商品が購入されたかが分かる前節の表になります。
ただし、前は「〇」で表現されていますが、今回は「1」で表現されています。
併売数
次に作成した表で、併売されている商品の「併売数」を求めます。
このためには、Excel の関数を使用して、ピボットテーブルの数値(「1」)を参照します。
この時、操作を誤ってデータを壊すことを防ぐため、表をコピーし、コピーした表をもとに「併売数」を求めます。
操作は次の通りです。なお、表はコピーしてセル「L1」に貼り付け、不要な行や列は削除し、「表頭」を付け見やすくしたものを使用します。
- 2つの商品の組み合わせごとに、同時に「1」があるかをレシートNo1 ~ 10まで調べます。
このため、商品「A ~ D」の内2つの組み合わせ(6通り)が分かるように、セル「S2」からセル「X2」まで見出しを記入します。
- はじめに、商品「A」と商品「B」の併売についてセル「S行」で調べます。
レシートNo1の商品「A」と商品「B」が両方「1」ならば、「1」を記入し、そうでなければ、「0」を記入します。
これと同じことをレシートNo10まで行います。
最後に「1」の数を合計すると、商品「A」と商品「B」の「併売数」がわかります。
これらを行うために、セル「S3」に次の式を入力します。
=IF(AND(M3=1,N3=1),1,0)
<Enter>キーを押すと1が出力されます。
これをレシートNo10の並びのセル(S12)までコピーすると、結果が出ます(レシートNo1,7,9,10が商品「A」と商品「B」を併売していることが分かります)。
総計の行に、セル「S3 ~ S12」までの合計を出すとそれが商品「A」と商品「B」の併売数になります。
これは、次の式で求めることができます。
=SUM(S3:S12)
- 次に商品「A」と商品「C」の併売について、「T行」で調べます。
商品「A」と商品「B」の併売の時使った式を使用すると簡単に求めることができます。
この式は、表中のセルを相対参照しているために、式のあるセルを移動すると、移動した分だけ参照しているセルも移動します。
たとえば、式のセルが右に1つ移動すると、参照しているセルも右に1つ移動します。
「N列」のセルは右に1つ移動すべきなので、そのままでよいですが、「M列」のセルは、移動すべきではなく固定しなければなりません。
しかし、行に関しては式のセルが移動した分、参照しているセルも移動しなければなりません。
このように、行または列を固定して参照する方式が「複合参照」で、「行」または「列」を表す英数字の前に「$」をつけることで指定が行えます。
今回は、商品「A」と商品「B」の併売を調べる式を修正し、それを商品「A」と商品「D」の併売を調べるセルまですべてコピーします。
- セル「S3」にある次の式の「M」の前に「$」を付け修正します。
=IF(AND(M3=1,N3=1),1,0)
修正後の式は、次のようになります。
=IF(AND($M3=1,N3=1),1,0)
- 修正した式をセル「S12」までコピーします(結果は変わりません)。
- セル「S3」から「S13」までをまとめて、「T列」、「U列」までコピーします。これにより、商品「A」と商品「C」、および商品「A」と商品「D」の「併売数」が求められます。
- 次に、商品「B」との併売を調べますが、最初に、3行目の商品「A」との併売を調べる式をコピーし、参照するセルを修正します。修正後の式は、次のようになります。
=IF(AND($N3=1,O3=1),1,0)
これを③と同様にコピーし、総計だけは右のセルをコピーすると商品「B」の併売数が求められます。
- 最後の商品「C」と商品「D」の併売も④と同様に行うと完成します。
レシートの枚数を求めるには、「COUNTA関数」を使います。
今回この「COUNTA関数」でレシートの枚数を求める式は、次のようになります。
=COUNTA(L3:L12)
バスケット分析
各商品の組合せごとの「併売数」、「各商品の売上点数」、「レシートの数」が分かったので、各商品の組み合わせごとの「支持度」、「信頼度」、「リフト値」を求めます。
求めるにあたり、表を整理し、求めた値を表示する表も作成します。結果は下図のようになります。