Tableauでバスケット分析(併売分析)のやり方
Tableauでのバスケット分析のやり方を紹介します!
使うデータ
サンプルスーパーストアのデータを使います。
リレーションシップを使ってつなぎます。
顧客IDでつなぎます。(1回のオーダー単位で見たい場合はオーダーIDでつなぐ)
購入率(併売率)を集計する
併売率はいろいろな粒度で計算することができます。
今回はサブカテゴリで計算します。
行にプライマリのサブカテゴリと、セカンダリのサブカテゴリ(注文1)を入れます。
また、購入した顧客数を以下の計算式で出し、テキストに入れます。
countd([顧客 Id])
これでサブカテゴリ間の顧客数を出すことができました。
バスケット分析では人数だけでなく、Aを買った人がBを買う確率を出すことが一般的です。
Aをサブカテゴリ、Bをサブカテゴリ(注文1)とします。
Aを買った顧客数はFIXEDを使って出します。集計値にしておいた方が扱いやすいため、さらにSUMを加えて以下のような計算にします。
sum({FIXED [サブカテゴリ]:countd([顧客 Id])})
これで分子と分母が出たので、サブカテゴリ間の購入率を出します。
//商品AからBへの購入率
countd([顧客 Id]) / sum({FIXED [サブカテゴリ]:countd([顧客 Id])})
これで購入率まで出ました。
Tableauで計算式を作る場合、間違っていても数字が出ることが多々あります。
計算間違いを減らすために、計算式を1ステップごと作り、数字を確認しながら進めていくことをオススメします。
面倒ですが、これが一番確実です。
リフト値を計算する
バスケット分析で非常に便利な数字、リフト値を出します。
リフト値は商品Aを買った場合に商品Bを買う確率がn倍になるかが分かる指標です。
リフト値が2だった場合、Aを買うとBを買う確率が2倍高い。
リフト値が0.5だった場合、Aを買うとBを買う確率が半分になる。
計算式は
商品Aを買った時に商品Bを買う確率 / 商品Bが買われる確率
で出します。
分母の商品Bが買われる確率は
商品Bを買った人数 / 全体の人数
で出します。
リフト値を使う理由は、商品Bが大半の顧客が購入する場合、どの組み合わせでも上位に表示され傾向が見えづらくなります。
例えば顧客全体の70%が購入する商品があったとします。
そこに商品Aを買った人に絞ると75%の確率で、
商品Bを買った人に絞ると65%の確率になったとします。
商品Aとのリフト値は 75% / 70% = 1.07
商品Bとのリフト値は 65% / 70% = 0.93
となり、購入率が高い組み合わせでも相性の良さが分かります。
また、リフト値の「リフト」は、ある商品を買った場合に別の商品をどれだけ買うを持ち上げるかという意味から来ています。
Tableauで出そうとすると以下のようになります。
//商品Bの購入率
sum({FIXED [サブカテゴリ (注文1)]:countd([顧客 Id])}) / sum({FIXED :countd([顧客 Id])})
これを分母として、先ほどのAからBの購入率を分子にしてリフト値も出します。
//リフト値
(countd([顧客 Id]) / sum({FIXED [サブカテゴリ]:countd([顧客 Id])})) /
(sum({FIXED [サブカテゴリ (注文1)]:countd([顧客 Id])}) / sum({FIXED :countd([顧客 Id])}))
これを表に入れたものです。
リフト値はAとBが同じ項目の場合、大きく出る性質があるため、同じ項目を除くフィルタを作ります。
//同じサブカテゴリを表示しないフィルタ
[サブカテゴリ] <> [サブカテゴリ (注文1)]
上記のフィルタを追加し、分かりやすくするためにクロス表にして、リフト値で色を付けます。
色の不透明度が100%だと目に優しくない色になるので、60%まで落としています。
このデータを見ると、
もっともリフト値の高い組み合わせ:テーブルとアプライアンス
もっともリフト値の低い組み合わせ:テーブルと事務機器
という結果になりました。
サンプルデータなのでよくわかりませんね。。。
バスケット分析は面白いので、ぜひ一度試してみてください!
使ったワークブックは以下からご覧いただけます。
https://public.tableau.com/app/profile/seiji.sunagawa/viz/_16891751308080/sheet0?publish=yes
質問はTwitterにてお願いします!
この記事が気に入ったらサポートをしてみませんか?