マーケットバスケット分析

英語名 Market Basket Analysis
読み方 マーケット バスケット アナリシス
難易度
所要時間 2〜4時間
提唱者 ラケシュ・アグラワル(Aprioriアルゴリズム、1993年)
目次

ひとことで言うと
#

購買データから「AとBは一緒に買われやすい」というルール(アソシエーションルール)を自動発見する分析手法。「ビールとおむつ」の有名な逸話に代表される、予想外の組み合わせの発見が最大の強み。

押さえておきたい用語
#

押さえておきたい用語
支持度(Support)
ある商品の組み合わせが全トランザクションの何%で出現するかを示す指標。値が低すぎるルールはたまたまの可能性が高い。
信頼度(Confidence)
商品Aを買った人のうち商品Bも買った割合のこと。「パンを買った人の60%が牛乳も買う」なら信頼度60%。
リフト値(Lift)
その組み合わせが偶然以上に一緒に買われているかを示す指標。1より大きければ偶然以上、1なら偶然と同程度。最も重視すべき指標。
Aprioriアルゴリズム
大量のトランザクションデータから効率的にアソシエーションルールを抽出するアルゴリズム。最小支持度でフィルタリングし計算量を削減する。
トランザクション
1回の買い物(1回の会計)で購入された商品の集合のこと。マーケットバスケット分析の基本単位。

マーケットバスケット分析の全体像
#

購買データからルールを抽出し、レコメンドやクロスセルに活用する
購買データ準備1行=1トランザクション形式1,000件以上のデータを推奨3つの指標支持度・信頼度・リフト値リフト値 > 1.5 で有意な関連Aprioriでルール抽出最小支持度・信頼度を設定しルールを自動発見リフト値の高い順にソートして上位を確認ビジネスアクションに変換レコメンド・クロスセル・セット販売・店舗レイアウト
マーケットバスケット分析の実行フロー
1
データ準備
トランザクション形式でデータを整理
2
指標理解
支持度・信頼度・リフト値を把握
3
ルール抽出
Aprioriでアソシエーションルールを発見
施策実行
レコメンド・セット販売に活用

こんな悩みに効く
#

  • レコメンド機能を作りたいが、何をおすすめすればいいかわからない
  • クロスセルを強化したいが、どの商品の組み合わせが効果的か不明
  • 店舗の商品配置を最適化したいが、根拠となるデータがない

基本の使い方
#

ステップ1: 購買データ(トランザクションデータ)を準備する

分析に必要なデータをトランザクション単位で整理する。

必要なデータ形式:

  • 1行 = 1回の買い物(トランザクション)
  • 各行に購入した商品のリスト

例:

トランザクションID購入商品
T001パン、牛乳、卵
T002パン、バター、ジャム
T003牛乳、卵、チーズ

ポイント: 最低でも1,000件以上のトランザクションがあると信頼できる結果が出やすい。商品数が多すぎる場合はカテゴリレベルでまとめることも有効。

ステップ2: 3つの指標を理解する

マーケットバスケット分析の結果を読み解くための3つの指標を押さえる。

  • 支持度(Support): その組み合わせが全トランザクションの何%で出現するか
    • 例: パンと牛乳が一緒に買われた割合 = 30%
  • 信頼度(Confidence): Aを買った人のうち、Bも買った割合
    • 例: パンを買った人の60%が牛乳も買っている
  • リフト値(Lift): その組み合わせが偶然以上に一緒に買われているか
    • リフト値 > 1: 偶然以上に一緒に買われている
    • リフト値 = 1: 偶然と同程度
    • リフト値 < 1: 一緒に買われにくい

ポイント: リフト値が最も重要。信頼度が高くても、リフト値が1に近ければそれは単に人気商品同士が出現しているだけ。

ステップ3: Aprioriアルゴリズムでルールを抽出する

Aprioriアルゴリズムを使ってアソシエーションルールを自動抽出する。

パラメータ設定:

  • 最小支持度: 0.5%〜5%(小さすぎると無意味なルール、大きすぎると発見が少ない)
  • 最小信頼度: 30%〜70%(ビジネスの文脈で調整)
  • 最小リフト値: 1.5以上(偶然を超える組み合わせに絞る)

ツール: Python(mlxtend ライブラリ)、R(arules パッケージ)、Excel(小規模なら手計算可能)。

ポイント: ルールが大量に出る場合は、リフト値の高い順にソートして上位から確認する。

ステップ4: ルールをビジネスアクションに変換する

発見したルールを具体的な施策に落とし込む。

活用方法:

  • レコメンド: 「この商品を買った人はこれも買っています」
  • クロスセル: カート画面で関連商品を提案
  • セット販売: リフト値の高い組み合わせをセット商品として企画
  • 店舗レイアウト: 一緒に買われる商品を近くに配置
  • メール施策: 商品Aの購入者に商品Bのクーポンを送る

ポイント: ルールの因果関係を考える。「パンを買う→牛乳も買う」と「牛乳を買う→パンも買う」は意味が異なる。

具体例
#

例1:オンライン書店がジャンル横断レコメンドで月間売上を12%向上させる

状況: オンライン書店で、現在は「同じジャンルの人気書籍」を単純におすすめしている。もっと精度の高いレコメンドにしたい。

マーケットバスケット分析の結果(上位ルール):

ルール支持度信頼度リフト値
Python入門書 → データ分析の教科書3.2%45%4.8
ビジネス英語 → TOEIC問題集2.8%52%3.2
育児書 → 時短レシピ本1.5%38%5.1
Excel入門 → PowerPoint入門2.1%41%3.8

発見: 「育児書→時短レシピ本」はジャンルが異なるため、従来のジャンルベースレコメンドでは表示されなかった組み合わせ。リフト値5.1と最も高い。

施策: マーケットバスケット分析に基づくレコメンドを商品ページに追加。「育児書×時短レシピ」のセット割引キャンペーンを実施。

結果: レコメンド経由の購入率が2.3%→5.8%に改善。1注文あたりの平均冊数が1.4冊→1.7冊に増加。月間売上が12%向上。

例2:スーパーマーケットが売場レイアウト変更で客単価を8%向上させる

状況: 地域スーパー(1日来店客数800人)。客単価が伸び悩んでおり、売場レイアウトの最適化を検討。

分析: 3ヶ月分のPOSデータ(72,000トランザクション)でマーケットバスケット分析を実施。

発見された意外なルール:

ルールリフト値
ベビーフード → ビール3.8
サラダチキン → プロテインバー4.2
パスタソース → サラダ用ドレッシング2.9

施策: サラダチキンとプロテインバーを隣接陳列。パスタソースコーナーにドレッシングのサテライト棚を設置。

結果: 対象商品カテゴリの併売率が22%向上。全体の客単価が1,850円→2,000円(8%向上)。

例3:SaaS企業が機能利用の併用パターンからアップセル対象を特定する

状況: プロジェクト管理SaaS。無料プランから有料プランへのアップグレード率を改善したい。

応用: 購買データの代わりに「機能利用データ」でマーケットバスケット分析を実施。1トランザクション=1ユーザーの月間利用機能セット。

発見:

ルール信頼度リフト値
ガントチャート利用 → 有料化62%4.5
API連携 + レポート機能 → 有料化78%5.8
タスク管理のみ → 無料継続85%1.2

施策: ガントチャートやAPI連携を試用した無料ユーザーに、有料プランの価値を訴求するターゲットメールを配信。

結果: ターゲット配信の有料化率が通常の3.2倍。月間のアップグレード数が45件→120件に増加。

やりがちな失敗パターン
#

  1. 人気商品同士の組み合わせに騙される — 信頼度が高くても、両方とも売れ筋商品なだけかもしれない。必ずリフト値を確認し、偶然以上の関連性があるかを判断する
  2. データ期間を考慮しない — 季節商品(サンダルとサングラスなど)は時期限定で一緒に買われる。季節効果を排除するか、季節別に分析することが必要
  3. 発見したルールを検証せずに施策に使う — 過去のデータから見つけたルールが未来も成り立つとは限らない。A/Bテストで効果を検証してから本格展開する
  4. 商品粒度が粗すぎる — 「食品→飲料」のような大カテゴリのルールは当たり前すぎて使えない。**施策に落とし込める粒度(ブランド・SKUレベル)**で分析する

まとめ
#

マーケットバスケット分析は、購買データから「一緒に買われやすい商品の組み合わせ」を発見する手法。レコメンド、クロスセル、店舗レイアウトの最適化に直結する強力なツール。まずは自社の購買データでリフト値の高い組み合わせを探し、レコメンドに活用するところから始めよう。