マーケットバスケット分析とは?指標、例、ユースケース

マーケットバスケット分析(Market basket analysis)は、同じ取引でどの商品が一緒に購入されているかを見つけるための手法です。注文データをスキャンし、偶然予想されるよりも頻繁に発生する商品の組み合わせを探し出します。各パターンは、サポート(support)、コンフィデンス(confidence)、リフト(lift)という3つの指標で表されます。小売業者やオンラインストアは、クロスセル、セット販売、商品の陳列にこれを利用しています。
このガイドでは、この手法の仕組み、各指標の計算方法、および結果の読み解き方について解説します。また、一般的なアルゴリズム、主なユースケース、そしてルールに基づいて行動を起こす前に知っておくべき限界についても説明します。
マーケットバスケット分析とは
マーケットバスケット分析の基本的な考え方はシンプルです。すべての注文は、商品の「バスケット(買い物かご)」です。何千ものバスケットの中で、一部の商品は繰り返し一緒に現れます。この分析では、それらの組み合わせを見つけ出し、それぞれの結びつきの強さを測定します。
出力されるのは、一連のアソシエーションルール(関連性ルール)です。ルールは「もしバスケットにAが含まれているなら、Cも含まれている可能性が高い」と読みます。Aは前提(antecedent)、Cは結論(consequent)と呼ばれます。どちらも単一の商品、または商品のグループのいずれかになります。
この作業に広く使用されている Python ライブラリである mlxtend のドキュメントには、古典的な例が示されています。そこでは、「おむつを買う人はビールも買う可能性が高い」というルールが説明されています。この組み合わせが特定の店舗で実際に成り立つかどうかは別として、これは出力の形を示しています。
この技術は、アソシエーションルール学習と呼ばれるより広い分野に属しています。mlxtend のドキュメントによると、Apriori アルゴリズムは「店舗の顧客による購入など、取引を含むデータベース上で動作するように設計されている」とされています。この手法は小売業から始まりましたが、バスケットで構成されるデータであればどのようなものでも機能します。
仕組み
マーケットバスケット分析は2つの段階で実行されます。
第1段階は、頻出アイテムセットの検出です。アイテムセットとは、{スマホケース, 画面保護フィルム}などの商品のグループのことです。すべての取引のうち、少なくとも最小限の割合で出現する場合に「頻出」とみなされます。この最小値を設定し、これをサポートの閾値(しきいち)と呼びます。
第2段階は、アイテムセットからルールへの変換です。アルゴリズムは、各頻出アイテムセットを前提と結論に分割し、得られたルールをスコアリングします。mlxtend のドキュメントでは、ルールの生成を「頻出パターンのマイニングにおける一般的なタスク」と説明しています。
入力データは常に同じ形状です。各行が1つの取引を表し、各列はその中に商品が含まれていたかどうかを示します。ほとんどの Eコマースプラットフォームからエクスポートした注文データは、ピボット処理によってこの形式に整形できます。
指標を計算する前に、3つの準備の選択肢が結果を左右します。1つ目は、取引(トランザクション)を何とするかを決定することです。通常は1つの注文IDになります。2つ目は、数量ではなく有無を記録することです。そのため、同じ商品が3個購入されても1回とカウントします。3つ目は、詳細度のレベルを選択することです。商品カテゴリ単位にすると、数は少ないものの広範なルールが得られ、個々の SKU 単位にすると、より多くのデータを必要とするものの、より精密なルールが得られます。
3つの主要な指標
すべてのルールには3つの数値が割り当てられます。これらを合わせて読み解くことで、有用なルールと単なる偶然を区別することができます。
サポート
サポートとは、すべての取引のうち、そのアイテムセットが含まれる割合のことです。1,000件の注文のうち60件にスマホケースと画面保護フィルムの両方が含まれている場合、そのペアのサポートは 0.06、つまり 6% になります。
サポートは、そのパターンがどれほど一般的であるかを示します。サポートが非常に低いルールは、実際に存在していても、稀すぎて行動に移せない場合があります。
コンフィデンス
コンフィデンスとは、バスケットにすでに前提が含まれている場合に、結論が現れる確率のことです。これは、ペアのサポートを前提のサポートで割った値に等しくなります。
コンフィデンスには方向性があります。「AからC」へのコンフィデンスは、通常「CからA」へのコンフィデンスとは異なります。以下の具体例でその理由を説明します。
リフト
リフトは、2つの商品が無関係であると仮定した場合に予想される頻度と、実際のペアの出現頻度を比較したものです。これは、ルールのコンフィデンスを結論のサポートで割った値に等しくなります。
mlxtend のドキュメントでは、基準点について明確に説明されています。「AとCが独立している場合、リフト値は正確に 1 になります。」リフトが 1 を超える場合は、偶然よりも頻繁に商品が一緒に現れることを意味します。リフトが 1 未満の場合は、一緒に現れる頻度が偶然よりも低いことを意味します。
具体例
1ヶ月の注文数が 1,000 件のオンライン家電ストアを例に考えてみましょう。
| 指標 | 値 |
|---|---|
| スマホケースを含む注文 | 200 |
| 画面保護フィルムを含む注文 | 100 |
| 両方を含む注文 | 60 |
| ペアのサポート | 60 / 1,000 = 0.06 |
| コンフィデンス(スマホケース → 画面保護フィルム) | 0.06 / 0.20 = 0.30 |
| コンフィデンス(画面保護フィルム → スマホケース) | 0.06 / 0.10 = 0.60 |
| リフト | 0.30 / 0.10 = 3.0 |
結果をわかりやすい言葉で読み解いてみましょう。スマホケースを購入した人の10人に3人が画面保護フィルムも購入しています。画面保護フィルムを購入した人の10人に6人がスマホケースも購入しています。このペアは、偶然予想されるよりも3倍の頻度で一緒に現れています。
完全なルール表が得られたら、決まった順序で読み進めます。まず、リフトでソートして最も強い結びつきを見つけます。次に、設定した最小サポートを下回るルールは、稀すぎて行動に移せないため除外します。その後、コンフィデンスを使用して、どちらの方向で推奨(レコメンド)するかを決定します。
2つのコンフィデンスの数値は、異なるアクションにつながります。画面保護フィルムの購入者にスマホケースを提案する方が、すでに60%の人が購入しているため、より強力な推奨となります。リフトはどちらの方向でも同じ値になります。これが、リフトが結びつき自体の強さを測るためのより優れた指標である理由です。
知っておくべきその他の指標
3つの主要な指標でほとんどのニーズをカバーできますが、ライブラリは弱いルールをフィルタリングするのに役立つ他の指標も報告します。
レバレッジ(Leverage)は、観測された共起と予測された共起の間のギャップを測定します。mlxtend のドキュメントでは、観測された共起と「AとCが独立している場合に予想される頻度」を比較することでこれを定義しています。レバレッジが 0 の場合は独立していることを意味します。
コンビクション(Conviction)は、結論が前提にどれほど強く依存しているかを測定します。リフトと同様に、値が 1 の場合は独立を示します。値が高いほど、偶然に示唆されるよりもルールが破られる頻度が低いことを意味します。
実際には、ほとんどのチームがルールをリフトでソートし、次に最小サポートとコンフィデンスでフィルタリングします。この組み合わせにより、強力で、無視できないほど一般的で、信頼性の高いパターンが浮き彫りになります。
アルゴリズム:Apriori と FP-Growth
Apriori は古典的なアルゴリズムです。mlxtend のドキュメントでは、その情報源として、アソシエーションルールをマイニングするための高速アルゴリズムに関する Agrawal と Srikant の1994年の論文を引用しています。Apriori はアイテムセットをレベルごとに構築し、そのサブセットが頻出でないアイテムセットを刈り取る(プルーニングする)ことで、探索を管理可能な規模に抑えます。
FP-Growth は、異なるルートで同じ頻出アイテムセットに到達します。mlxtend のドキュメントでは、「確立された Apriori アルゴリズムに代わる一般的な選択肢」と説明されています。これは頻出パターンツリー(FPツリー)を構築し、候補の生成を必要としません。ドキュメントによると、これにより「大規模なデータセットに特に魅力的」になるとされています。
サポートの閾値は、どちらのアルゴリズムでも同じように機能します。mlxtend のドキュメントには簡単な例が示されています。閾値が 0.5 の場合、頻出アイテムセットはすべての取引の少なくとも半分に出現する必要があります。小売業における閾値は通常、これよりもはるかに低くなります。なぜなら、人気のあるペアであっても、注文全体に占める割合はわずかだからです。
ほとんどのビジネス上の課題において、アルゴリズムの選択は処理速度を変えるだけで、結果は変わりません。どちらも同じサポート閾値に対して同じアイテムセットを返します。
マーケットバスケット分析の用途
マーケットバスケット分析は小売業や Eコマースで最も一般的ですが、そのユースケースはさらに広がっています。
- クロスセル。 前提となる商品がカートに入っているときに、決済時に結論となる商品を推奨します。
- セット販売(バンドル)。 リフト値の高い商品を1つのオファーとしてパッケージ化します。
- 店舗やページのレイアウト。 頻繁にペアになる商品を、棚や商品ページ上で近くに配置します。
- 在庫計画。 ペアになる商品を一緒に在庫管理し、一方の不足が他方の売り上げを密かに抑制してしまわないようにします。
- コンテンツとメディア。 ユーザーセッションをバスケットとして扱い、どの記事や動画が一緒に消費されているかを見つけます。
- サービス。 銀行や通信業界において、各顧客の契約商品をバスケットとして扱い、どの組み合わせが一緒に利用されやすいかを見つけます。
- キャンペーンの評価。 キャンペーンの前後および期間中でペアのリフト値を比較します。数値の急上昇は、キャンペーンが単に販売量だけでなく、購買行動そのものを変化させたことを示します。
各ユースケースは、同じ問いから始まります。「顧客が1つのものを選ぶとき、他に何を選ぶ傾向があるか?」
その後に取るべきアクションは、コンフィデンスの方向に合わせる必要があります。セット販売は、両方の商品が同時に求められている場合に効果的です。決済時の提案は、一方の商品がもう一方の商品を確実に誘発する場合に効果的です。
マーケットバスケット分析と関連手法の比較
マーケットバスケット分析は、顧客セグメンテーションやレコメンデーションエンジンとしばしば混同されます。以下の表は、それらの違いを示しています。
| 手法 | 分析の単位 | 主な問い | 代表的な出力 |
|---|---|---|---|
| マーケットバスケット分析 | 取引(トランザクション) | どの商品が一緒に購入されるか? | サポート、コンフィデンス、リフトを伴うアソシエーションルール |
| 顧客セグメンテーション | 顧客 | どの顧客が似ているか? | 共通の特徴を持つ顧客グループ |
| 協調フィルタリング | 顧客と商品の履歴 | この人は次に何を好むか? | パーソナライズされたレコメンデーション |
| コホート分析 | 開始日ごとのグループ | 時間の経過とともに行動はどのように変化するか? | 定着率(リテンション)曲線と表 |
これらの手法は互いに補完し合います。セグメンテーションは誰が価値の高い顧客であるかを教えてくれ、マーケットバスケット分析はそれらの顧客が何を一緒に購入しているかを教えてくれます。当社の顧客セグメンテーションレポートの作成ガイドでは前半部分をカバーしており、コホート分析の解説では時間的な次元をカバーしています。
知っておくべき限界
マーケットバスケット分析から得られるルールは有用ですが、過大解釈しがちです。
共起は因果関係ではありません。リフト値の高いペアは、2つの商品が一緒に購入されていることを示しているだけで、一方を購入したことがもう一方を購入する原因になったことを示しているわけではありません。
閾値が結果を左右します。サポートを高く設定しすぎると、ニッチながらも価値のあるペアを見落としてしまいます。低く設定しすぎると、何千ものルールが生成され、その多くがノイズになってしまいます。
珍しい商品は埋もれてしまいます。月に数回しか購入されない高額な商品は、たとえその組み合わせが強力であっても、サポートの閾値に達しない可能性があります。
返品やキャンセルはバスケットを歪めます。返品された商品がデータに残っていると、分析では顧客が取り消した組み合わせまでカウントしてしまいます。当社の商品返品レポートの作成ガイドでは、その側面を個別に測定する方法をカバーしています。
ペアの数が多いと、いくつかの偽のパターンが生じます。500点の商品カタログには、100,000通り以上のペアが存在します。中には、偶然だけで高いリフト値を示すものもあります。重要なルールに基づいて行動を起こす前に、別の期間のデータでそのルールを確認してください。
時期が重要です。ホリデーシーズン中のパターンが、春にも当てはまるとは限りません。レイアウトやセット販売を変更する前に、比較可能な期間で分析を実行してください。
コードを書かずに分析を実行する方法
古典的な方法は、mlxtend などのライブラリを使用した Python、またはペアをカウントするための SQL です。どちらも、注文データを1取引あたり1行、1商品あたり1列の形式に整形する必要があります。
小規模なものであれば、スプレッドシートでも対応可能です。ピボットテーブルで商品ごとの注文数をカウントし、COUNTIFS 関数でペアの両方の商品を含む注文数をカウントします。ただし、商品カタログの規模が大きくなると、可能なペアの数が急速に増加するため、規模に限界があります。
AI ワークスペースを使用すれば、シンプルな注文エクスポートデータから整形とカウントを行うことができます。Powerdrill Bloom は、すべてのプランで Excel や CSV のアップロードに対応しています。どの商品が最も頻繁に一緒に購入されているかを尋ね、上位のペアに対するサポート、コンフィデンス、リフトを要求することができます。
まずはカテゴリレベルで実行して、大まかなパターンを把握します。その後、最も重要なカテゴリについて SKU レベルで再実行します。
スクリプトをチェックするのと同じ方法で出力を確認します。取引数を確認し、1つのペアを手動でスポットチェックし、返品された注文が除外されていることを確認します。CSV AI assistant のページでは、ファイルを優先するワークフローを紹介しています。
注文のエクスポートデータが手元にあれば、それを使って Powerdrill Bloom を試すことができ、上位のペアをチームの予測と比較することができます。
よくある質問
マーケットバスケット分析とは、簡単に言うと何ですか?
顧客がどの商品を一緒に購入する傾向があるかを見つける方法です。多数の注文を調べ、偶然予想される頻度と比較して、各組み合わせがどれほど頻繁に出現するかを測定します。
マーケットバスケット分析におけるリフト(Lift)とは何ですか?
リフトは、2つの商品が無関係である場合に現れる頻度と、実際に一緒に現れる頻度を比較したものです。リフトが 1 の場合は関連性がないことを意味します。1 を超える場合は予想よりも一緒に現れる頻度が高く、1 未満の場合は低いことを意味します。
サポートとコンフィデンスはどのように計算しますか?
サポートは、そのアイテムセットを含む取引数をすべての取引数で割ったものです。コンフィデンスは、ペアのサポートを前提のサポートで割ったものです。どちらも通常、小数またはパーセンテージで表示されます。
マーケットバスケット分析にはどのアルゴリズムが使用されますか?
Apriori が古典的なアルゴリズムであり、FP-Growth が一般的な高速の代替手段です。どちらも取引データから頻出アイテムセットを見つけ出し、それらのアイテムセットからルールが生成され、スコアリングされます。
Excel でマーケットバスケット分析を行うことはできますか?
はい、小規模なデータセットであれば可能です。ピボットテーブルで商品ごとの注文数をカウントし、COUNTIFS 関数でペアを含む注文数をカウントします。大規模なカタログの場合、ペアの数が急速に増加するため、スクリプトや AI ツールの使用がより実用的です。
情報源: mlxtend, Association rules · mlxtend, Apriori。具体例では説明用の数値を使用しています。