商品の購買履歴やWebサイトの閲覧データなど、日々蓄積される大量の情報からビジネスチャンスを見つけ出すことが求められる時代。その中でも「アソシエーション分析」は、顧客の隠れた行動パターンを発見するために有効な分析手法の一つです。この記事では、アソシエーション分析のやり方や計算方法をわかりやすく解説し、リフト値の意味や活用法、さらにはエクセルやPythonを使った実践方法まで、初学者にも理解できるよう丁寧に紹介していきます。
アソシエーション分析とは何か
アソシエーション分析は、膨大なデータの中から「一緒に起こる傾向のある項目の組み合わせ」を見つけ出す分析手法で、日本語では「関連ルール分析」とも呼ばれています。小売業では「ある商品を買った人は、別の商品も一緒に買う傾向がある」といった購買パターンの発見に多用され、バスケット分析の基礎とも言える技術です。
この手法は、購買データ以外にも、Web行動ログ、レコメンドエンジン、病院の診療データ、さらには業務プロセス分析など、さまざまな領域で活用されており、幅広い分野で業務効率化や収益向上に貢献しています。
例えば、スーパーの陳列戦略やeコマースサイトのレコメンド機能、医療現場での症例の共通パターン抽出など、その応用範囲は非常に広く、業種を問わず導入価値があります。
アソシエーション分析の基本概念
分析の基本単位は「取引データ(トランザクション)」です。例えば、1人の顧客がスーパーでリンゴとバナナとヨーグルトを購入したとします。この1件の購入履歴が1つのトランザクションであり、その中に含まれる商品セットの共起パターンを分析します。
この分析において重要な指標が次の3つです:
サポート(Support)
ある商品セットが、全取引の中でどれくらいの頻度で登場したかを示す割合。商品AとBを両方買った割合が全体の5%であれば、サポートは0.05となります。サポートが高いほど、その組み合わせが安定的に発生しているといえます。
コンフィデンス(Confidence)
「商品Aを買った人が、商品Bも買う確率」を示す指標。A→Bの信頼度とも言われ、確率のように0から1の範囲で表されます。コンフィデンスが高ければ、AがBを引き起こす“因果”のような仮説を立てることも可能です。
リフト(Lift)
商品AとBが一緒に買われた頻度が、単なる偶然なのか、それとも相関が強いのかを示すのがリフト値です。リフト=1は独立、1より大きい場合は正の相関、1未満なら負の相関と判断されます。
リフト値は、マーケティングの打ち手やプロモーション設計において、戦略的に最も重要視される指標の一つです。
アソシエーション分析のやり方と流れ
ステップ1:データの準備
まずはトランザクションデータを用意します。これはPOSデータやECの購入履歴などが該当します。1件の注文ごとに「顧客ID」「購入商品群」といった形式で構成されている必要があります。
Excelを使用する場合、行ごとに顧客の購入履歴を並べ、商品ごとにフラグ(1または0)を立てる形式が一般的です。Pythonを使う場合にはPandasでデータ整形し、後述するライブラリに渡せる形式にします。
ステップ2:頻出アイテムセットの抽出
AprioriアルゴリズムやFP-Growthなどを用いて、サポート値が一定以上のアイテム組み合わせ(アイテムセット)を抽出します。これは「よく一緒に買われている商品の組み合わせ」を絞り込むステップです。
ステップ3:関連ルールの生成
アイテムセットから、「Aを買ったらBも買う」などのルールを抽出し、各ルールについてコンフィデンスとリフト値を計算します。これにより、戦略的に有効な組み合わせを特定できます。
ステップ4:結果の評価と施策立案
出力されたルールの中から、ビジネス上有用なものを選別します。例えば「リフト値が高く、コンフィデンスも一定以上あるが、サポートが低すぎないルール」を重視するといった判断基準が求められます。
また、ルールの有効性は業種によって異なるため、現場の知見と照らし合わせながら評価を行うことが重要です。
Excelを使ったアソシエーション分析の実践ステップ
Excelを使えば、専門的な知識がなくても簡易的なアソシエーション分析を実施できます。以下はその基本的な流れです:
- トランザクションデータを行単位で記録する
- 商品ごとのフラグ(0か1)で商品出現の有無を表現するクロス集計を作成
- COUNTIFやSUMPRODUCT関数などを活用して、商品同士の同時出現数を算出
- サポート・コンフィデンス・リフト値を計算
さらに、ピボットテーブルを使えば、特定商品との同時購入傾向を一目で可視化できるため、営業報告や店長会議の資料としても活用できます。
複雑な処理は難しいものの、初歩的な分析には非常に有効です。テンプレートを作成しておけば、複数のデータに応用でき、現場でもすぐに実践できます。
Pythonでのアソシエーション分析と活用ライブラリ
より高度な分析や大量データの処理にはPythonの活用がおすすめです。代表的なライブラリは次の通りです:
- pandas:データの整形・前処理に必須
- mlxtend:Aprioriアルゴリズムとアソシエーションルールの抽出が可能
- seaborn/matplotlib:分析結果の可視化
実装の一例:
from mlxtend.frequent_patterns import apriori, association_rules
frequent_itemsets = apriori(df, min_support=0.05, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1.0)
このように、わずか数行でルール抽出ができるのもPythonの魅力です。Jupyter Notebookなどと併用することで、データ分析からレポーティングまで一貫して行うことができます。
また、ダッシュボード化やレポート自動化との連携によって、分析結果を意思決定の場で即時活用する仕組みも整えやすくなります。
バスケット分析との違いと関係性
アソシエーション分析と混同されやすいのが「バスケット分析」です。バスケット分析は、買い物カゴ(バスケット)に入れられた商品の組み合わせを分析するもので、技術的にはアソシエーション分析をベースにしています。
つまり、バスケット分析はアソシエーション分析の実務応用形といえる存在です。小売業では、商品レイアウトやクロスセル戦略の立案、販促タイミングの最適化にバスケット分析が使われています。
違いがあるとすれば、バスケット分析のほうがビジネスシーンに即した分析設計や意図的なセグメント設定を前提とする点でしょう。顧客属性との組み合わせ、購買時期、売場の導線設計といった「現場知」に近い切り口が、バスケット分析には加わります。
リフト値を活かしたマーケティング施策の具体例
リフト値は単なる統計指標ではなく、マーケティング施策に直結する意思決定のヒントになります。例えば、あるドラッグストアで「風邪薬と栄養ドリンク」のリフト値が2.5と判明した場合、これは単なる偶然ではなく、強い関連性を意味します。
この結果をもとに、両者を並べて陳列したり、セット割引を実施することで購買率を上げる戦略が考えられます。逆にリフト値が1以下の組み合わせであれば、販促効果は見込めず、無駄な投資になりかねません。
このように、リフト値は“顧客が気づいていない行動の法則”を可視化するツールとして機能し、施策の成功確度を高めるのに役立ちます。
また、リフト値とセットで「売上寄与率」や「在庫回転率」といった指標も合わせて評価すると、より実務的な判断が可能になります。
初心者がやりがちな失敗とその回避法
アソシエーション分析を初めて実施する際に多くの人が陥るのが、サポート値やコンフィデンス値の誤解です。例えば、非常に珍しい組み合わせでもリフト値が高ければ重要と誤認してしまうケースがあります。
しかし、サポートが極端に低いとそのルールは再現性に欠け、施策としての信頼性は下がります。バランスの良い閾値設定と、分析結果に対するビジネス文脈での判断が不可欠です。
また、ツール任せにせず、なぜその組み合わせが生まれているのかを現場視点で理解し、店舗スタッフや商品開発チームと連携して結果を活かす姿勢が成功には欠かせません。
まとめ:アソシエーション分析を業務に活かすために
アソシエーション分析は、ただの統計手法ではありません。そこには「人の行動を読み解く」という、ビジネスに欠かせない視点が詰まっています。
Excelでの簡易分析から、Pythonを使った本格分析まで、導入のハードルは下がりつつあり、マーケティング担当者や店舗運営者でも使いこなせる技術になっています。
重要なのは、数字の裏にある“人の動き”を読み取り、それをどう戦略に落とし込むか。リフト値やコンフィデンスをただ見るのではなく、「それで何をするか」までを設計することです。
顧客理解を深め、業務効率を上げ、売上を伸ばす——そのすべての起点になり得るのがアソシエーション分析なのです。