📈データ分析・定量スキル

バスケット分析とは?アソシエーションルールで購買パターンを発見する手法

バスケット分析は商品の同時購買パターンを発見するデータ分析手法です。支持度・確信度・リフト値の3指標とAprioriアルゴリズムの仕組みを実務視点で解説します。

#バスケット分析#アソシエーション分析#購買分析#Apriori#データマイニング

    バスケット分析とは

    バスケット分析(マーケットバスケット分析)とは、顧客の購買データから「商品Aを買った人は商品Bも買う傾向がある」という同時購買パターンを発見するデータ分析手法です。英語では Market Basket Analysis と呼ばれ、データマイニングの代表的な手法の一つに位置づけられます。

    この手法の起源は1990年代の小売業界にあります。「ビールとおむつ」という有名な逸話(米国のスーパーでビールとおむつが同時に購入されるパターンが発見されたという話)は、バスケット分析の象徴として語り継がれています。ただし、この逸話は実際のデータ分析結果というよりもマーケティングの都市伝説に近いとされており、元となった分析の詳細や実施企業について確実な一次情報は確認されていません。

    バスケット分析はアソシエーション分析(Association Analysis)とも呼ばれます。厳密にはアソシエーション分析がより広い概念であり、バスケット分析はその一応用分野です。アソシエーション分析は購買データに限らず、Web行動ログや医療データなど、あらゆる「アイテムの共起パターン」の発見に適用できます。

    アソシエーションルールの3つの評価指標

    構成要素

    3つの評価指標

    バスケット分析では「A → B(商品Aを買った人は商品Bも買う)」というルールの有用性を3つの指標で評価します。

    指標定義計算式意味
    支持度(Support)AとBが同時に出現する割合P(A∩B) / 全取引数ルールの出現頻度を測る
    確信度(Confidence)Aを買った人がBも買う確率P(A∩B) / P(A)ルールの信頼性を測る
    リフト値(Lift)偶然を超える度合いP(B|A) / P(B)ルールの有意性を測る

    支持度が高いほどそのルールは頻繁に発生しています。ただし、支持度だけでは「もともと売れ筋の商品が含まれているだけ」という状況を見分けられません。

    確信度は条件付き確率そのものであり、0.5(50%)を超えるルールは「Aを買った人の半数以上がBも買っている」ことを意味します。しかし、B自体が非常に人気の高い商品であれば、確信度が高くても驚くべき発見とは言えません。

    リフト値はこの問題を解決します。リフト値が1.0を超える場合、AとBの同時購買は偶然の水準を上回っており、両者に正の相関があることを示します。リフト値が1.0なら無関係、1.0未満なら負の相関(AがあるとBが買われにくい)を意味します。

    Aprioriアルゴリズム

    バスケット分析の代表的なアルゴリズムがApriori(アプリオリ)です。1994年にAgrawalとSrikantによって提案されました。

    Aprioriの基本原理は「支持度が低いアイテムセットのスーパーセットも支持度が低い」という単調性です。この性質を利用して、最小支持度を満たさないアイテムの組み合わせを早い段階で枝刈りし、計算量を大幅に削減します。

    処理の流れは以下の通りです。

    1. 各商品の出現頻度を計算し、最小支持度を満たすアイテム(頻出1-アイテムセット)を抽出する
    2. 頻出1-アイテムセットの組み合わせから候補2-アイテムセットを生成し、最小支持度でフィルタリングする
    3. 同様にk-アイテムセットへと拡張を繰り返し、新たな頻出アイテムセットが見つからなくなるまで反復する
    4. 得られた頻出アイテムセットからルールを生成し、確信度とリフト値で評価する

    閾値設定の考え方

    最小支持度と最小確信度の閾値設定は分析の成否を左右します。閾値が高すぎると有用なルールを見逃し、低すぎるとルール数が爆発して解釈が困難になります。

    一般的な出発点として、支持度は0.01〜0.05(全取引の1〜5%)、確信度は0.3〜0.5(30〜50%)に設定し、結果を見ながら調整します。取扱商品数が多い業態(コンビニ、ドラッグストアなど)では支持度を低めに設定する必要があります。

    実践的な使い方

    ステップ1: トランザクションデータの準備

    バスケット分析の入力は「取引ID × 商品」の形式です。POSデータやECの注文明細から、1取引(1レシート、1注文)に含まれる商品の一覧を抽出します。

    データ準備時のポイントは以下の通りです。

    • 商品をSKU単位にするかカテゴリ単位にするかを決める。SKU単位は粒度が細かすぎてルールが見つかりにくい場合があるため、分析目的に応じて集約レベルを検討する
    • 返品・キャンセルを除外する
    • 分析対象期間を設定する。季節性のある商品が含まれる場合、期間が短すぎると偏ったルールが出る

    ステップ2: 閾値を設定しルールを抽出する

    最小支持度と最小確信度を設定し、Aprioriアルゴリズムを実行します。PythonのmlxtendライブラリやRのarulesパッケージが広く使われています。

    初回は閾値をやや低めに設定し、出力されるルール数を確認します。ルール数が数千件を超える場合は支持度・確信度を引き上げ、数十件しか出ない場合は引き下げます。リフト値1.0以上のルールに絞ることで、偶然を超える意味のあるパターンに集中できます。

    ステップ3: ルールを評価し施策へ落とし込む

    抽出されたルールをリフト値の降順でソートし、上位のルールからビジネス上の意味を検討します。

    評価の際に確認すべき観点は次の通りです。

    • そのルールは直感的に納得できるか(例: パスタとパスタソース → 当然の組み合わせ)
    • 自明でない意外な組み合わせはあるか(施策のヒントになる可能性が高い)
    • 支持度が極端に低くないか(ニッチすぎて施策のインパクトが出ない)
    • 季節要因や特定キャンペーンの影響で一時的に現れたルールではないか

    有望なルールが見つかったら、クロスセルのセット提案、売り場レイアウトの変更、レコメンドルールへの組み込みなど具体的な施策に落とし込みます。

    活用場面

    • クロスセル・アップセルの設計: ECサイトの「この商品を買った人はこれも買っています」の根拠として活用します。バスケット分析で抽出されたルールをレコメンドロジックに直接反映できます
    • 棚割り・レイアウト最適化: 同時購買される商品を近くに配置することで、買い回りの利便性を高め、ついで買いを促進します。小売業の棚割り最適化の基礎データとなります
    • レコメンドエンジンの構築: 協調フィルタリングと組み合わせ、ユーザーの購買履歴に基づくルールベースのレコメンドを構築します。コールドスタート問題(購買履歴が少ない新規ユーザー)への対処法としても有効です
    • Web行動分析: ページ閲覧やクリックのパターンにアソシエーション分析を適用し、ユーザーの行動導線を最適化します。「このページを見た人は次にこのページも見る」という知見は、UI設計やコンテンツ配置に役立ちます

    注意点

    因果関係ではなく相関関係である

    バスケット分析が発見するのは「AとBが同時に買われやすい」という共起パターン(相関)であり、「AがBの購買を引き起こす」という因果関係ではありません。ルールの解釈と施策設計においては、この区別を常に意識する必要があります。たとえば「ビールを買うからおむつを買う」のではなく、背後に「週末に来店する子育て世帯」という共通要因が存在する可能性があります。

    低頻度商品の見落とし

    最小支持度によるフィルタリングは、出現頻度の低い商品を含むルールを一律に排除します。ニッチだが利益率の高い商品や、新商品の組み合わせパターンが見落とされるリスクがあります。この問題に対しては、商品カテゴリレベルでの分析を併用するか、支持度の閾値を下げつつリフト値で絞り込むアプローチが有効です。

    ルール数の爆発とフィルタリング

    取扱商品数が多い場合、閾値を低く設定するとルール数が数万件〜数十万件に達することがあります。大量のルールを人手で確認するのは現実的ではないため、リフト値の閾値設定、冗長なルール(上位ルールに包含されるルール)の除去、商品カテゴリによる絞り込みなど、体系的なフィルタリング手順を設計する必要があります。

    まとめ

    バスケット分析は、支持度・確信度・リフト値の3指標によって商品の同時購買パターンを定量的に評価し、クロスセルや棚割り最適化などの施策に直結する知見を提供する手法です。Aprioriアルゴリズムの仕組みと閾値設定の考え方を理解し、抽出されたルールをビジネスの文脈で解釈することで、データドリブンな販促戦略の立案に活用できます。相関と因果の区別を意識し、定期的な再分析を通じてルールの鮮度を保つことが実務上のポイントです。

    参考資料

    関連記事