アソシエーション分析は、データマイニング手法の一つで、大量のデータの中から「一緒に購入されることが多い商品」や「同時に発生する事象」といった、潜在的な関連性(アソシエーションルール)を発見する統計的手法です。
最も身近な例は、スーパーマーケットの購買データを分析する「バスケット分析」でしょう。
この分析によって「おむつを買った人はビールも一緒に買う」といった意外な購買パターンが発見されたという有名な話は、アソシエーション分析の有効性を示す好例です。
本記事では、アソシエーション分析の基本概念から、分析に不可欠な指標、そしてPythonを使った実践方法までを網羅的に解説します。
アソシエーション分析の基本概念と重要指標
アソシエーション分析を理解するには、「アソシエーションルール」という概念を把握する必要があります。
これは「もしAが起こったら、Bも起こる」という形式で表され、その関連性の強さは3つの主要な指標で評価されます。
アソシエーションルールとは?
アソシエーションルールは、「前提」 ⇒ 「帰結」のように表現されます。
これは、「商品Aが購入された顧客は、商品Bも購入する可能性が高い」という関連性を示しています。
このルールを客観的に評価するために、「支持度」「確信度」「リフト値」という3つの指標が使われます。
アソシエーション分析に不可欠な3つの指標を深く理解する
アソシエーション分析の鍵となるのが、3つの指標です。
それぞれの意味と役割を深く掘り下げていきましょう。
支持度(Support)
支持度は、全取引数に対する特定のアイテムの組み合わせ(アイテムセット)が出現した割合を示します。
これは、そのルールがどれだけ一般的であるかを測る指標です。
(AとBが同時に購入された取引数) / (全取引数) =支持度(%)
例えば、支持度が5%であれば、全取引の5%でその組み合わせが購入されたことを示します。
この値は、アソシエーション分析の最初のフィルタリング条件として使われることが多く、支持度が低いルールは通常、分析対象から除外されます。
確信度(Confidence)
確信度は、「前提となるアイテム(商品A)が購入された取引の中で、帰結となるアイテム(商品B)も購入された割合」を示します。
これは、前提が成立したときに帰結が成立する条件付き確率を表す指標です。
(AとBが同時に購入された取引数) / (Aが購入された取引数)=確信度(%)
確信度が50%であれば、Aを購入した人のうち半数がBも購入したことを意味します。
確信度が高いルールは、予測の精度が高いことを示唆します。
リフト値(Lift)
リフト値は、アソシエーション分析の指標の中で最も重要だと言えます。
これは、「AとBが同時に購入される確率」が、「それぞれが単独で偶然に購入される確率」と比較して、どれくらい高いかを示す値です。リ
フト値は、偶然性の影響を補正します。
確信度 / (Bが購入された取引数 / 全取引数)=リフト値
リフト値が 1より大きい場合、関連性は偶然以上であり、正の相関関係があることを示します。
値が大きいほど、その関連性が強いと判断できます。
リフト値 が 1とイコールであれば、 関連性は偶然であり、相関関係がないことを示します。
リフト値 が 1を下回る場合、 関連性は負の相関関係、つまり「片方が買われるともう一方は買われにくい」という傾向を示します。
リフト値は、単なる人気商品同士の組み合わせを排除し、本当に価値のある洞察を得るために不可欠な指標です。
アソシエーション分析のアルゴリズム
アソシエーション分析を実行するためのアルゴリズムは複数存在しますが、ここではその代表的なものと、それぞれの特徴を詳しく見ていきましょう。
Aprioriアルゴリズムとは?
Aprioriアルゴリズムは、最も古くから使われているアルゴリズムの一つです。
このアルゴリズムの基本原理は、「頻出アイテム集合のすべてのサブセット(部分集合)もまた頻出である」という「Aprioriの性質」に基づいています。
具体的な処理の流れは次のようになります。
個々のアイテムの支持度を計算し、設定した閾値以上のものを「1-アイテム集合」として抽出します。
次に、この1-アイテム集合から2つのアイテムの組み合わせを生成し、その支持度を計算します。ここでも閾値に満たない組み合わせは破棄されます。
このプロセスを繰り返し、より多くのアイテムを含む頻出アイテム集合を段階的に生成していきます。
Aprioriアルゴリズムは理解しやすい反面、データが大規模になると計算コストが高くなるという課題があります。
より効率的なアルゴリズム
Aprioriの計算効率の課題を解決するために、様々なアルゴリズムが開発されました。
FP-Growth(Frequent Pattern Growth)は、データセットをツリー構造に圧縮することで、Aprioriのように候補集合を生成・走査するプロセスを回避し、高速な分析を可能にします。
Eclat(Equivalence Class Transformation)はアイテム集合を「垂直データ形式」に変換し、集合演算を用いて効率的に頻出アイテム集合を探索します。
これらのアルゴリズムの登場により、アソシエーション分析はより大規模なデータセットにも適用可能となりました。
アソシエーション分析の実践方法
ここからは、アソシエーション分析を実際にPythonを使って行う方法について解説します。
データ分析の現場で広く使われているライブラリ「mlxtend」を利用します。
分析のためのデータ準備
アソシエーション分析を行うには、トランザクションデータを特定の形式に整形する必要があります。
最も一般的なのは、「One-Hotエンコーディング」という形式です。
これは、各行が一つの取引を表し、各列が特定のアイテムを表します。
アイテムが取引に含まれていれば1、含まれていなければ0、もしくはTrue/Falseで表現します。
Pythonを用いた実装例
まず、必要なライブラリをインポートし、サンプルデータを用意します。
Python
import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules
# サンプルデータの作成(ダミーデータ)
data = {‘ID’: [1, 2, 3, 4, 5, 6],
‘Bread’: [1, 0, 1, 1, 0, 1],
‘Milk’: [1, 1, 0, 1, 1, 0],
‘Diaper’: [0, 1, 1, 1, 0, 1],
‘Beer’: [0, 0, 0, 1, 1, 1],
‘Eggs’: [1, 1, 1, 0, 1, 0]}
df = pd.DataFrame(data)
df = df.set_index(‘ID’)
print(“元のデータフレーム:\n”, df)
# 1. 頻出アイテム集合の抽出
# 支持度の閾値を設定(例: 0.5)
frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)
print(“\n頻出アイテム集合:\n”, frequent_itemsets)
# 2. アソシエーションルールの生成
# 確信度の閾値を設定(例: 0.7)
rules = association_rules(frequent_itemsets, metric=”confidence”, min_threshold=0.7)
print(“\nアソシエーションルール:\n”, rules)
# 3. リフト値でソートして確認
# 最も関連性の強いルールから確認するrules_sorted = rules.sort_values(by=’lift’, ascending=False)
print(“\nリフト値でソートしたルール:\n”, rules_sorted)
上記のコードでは、まずapriori関数で支持度0.5以上の頻出アイテム集合を抽出します。
次に、association_rules関数で、抽出した頻出アイテム集合から確信度0.7以上のアソシエーションルールを生成します。
最後に、リフト値で降順にソートすることで、本当に価値のあるルールを簡単に見つけられるようにしています。
アソシエーション分析のビジネス活用
アソシエーション分析で発見されたルールは、様々なビジネスシーンで具体的なアクションプランに落とし込むことができます。
クロスターゲティングの最適化
「パンを買った人は牛乳も買う」というルールが見つかった場合、パンを購入した顧客に牛乳の割引クーポンを配信したり、ECサイトの決済ページで関連商品としてレコメンドしたりすることで、クロスセル(ついで買い)を促進できます。
これは、顧客の購買行動を深く理解し、パーソナライズされたマーケティング施策を実行する上で非常に有効です。
商品配置や品揃えの改善
実店舗では、アソシエーション分析の結果を棚割りに活用できます。
「ビールとポテトチップス」のように、一緒に買われることが多い商品を近くに配置することで、顧客の利便性を高め、購買機会を増やせます。
また、ECサイトでは、商品ページの「この商品を買った人はこんな商品も買っています」といった表示に利用することで、アップセルやクロスセルを促すことが可能です。
その他の応用可能性
アソシエーション分析の応用範囲は小売業に留まりません。
例えば、製造業では特定の部品の故障と別の部品の故障との関連性を分析して品質管理に役立てたり、医療分野では、特定の症状と疾患の関連性を分析して診断の精度向上に活用したりすることも可能です。
これらの分野でも、データから潜在的な関連性を発見することで、効率的な意思決定を支援できます。
アソシエーション分析のメリットと注意点
アソシエーション分析は非常に強力なツールですが、その特性を理解した上で活用することが重要です。
メリット
- 潜在的な関連性の発見
専門家の仮説に頼ることなく、データから客観的な関連性を見つけ出すことができます。 - 顧客理解の深化
顧客の購買行動や習慣を深く理解することで、より効果的なマーケティング戦略を立てることが可能になります。 - 直感的な解釈
「もしAが買われたらBも買われる」というルールは直感的に理解しやすく、ビジネス担当者でも意思決定に活用しやすいです。
注意点
- 因果関係ではない
アソシエーション分析で見つかるのはあくまで相関関係であり、因果関係ではありません。分析結果を基にアクションを起こす際には、この点を常に意識する必要があります。 - データの質と量
分析結果は、元になるデータの質と量に大きく依存します。不完全なデータや偏りのあるデータでは、誤った結論を導き出す可能性があります。 - リフト値の重要性
支持度や確信度が高くても、リフト値が低い場合は、その関連性が偶然である可能性が高いため、必ずリフト値も考慮して評価することが重要です。
まとめ
いかがでしたか?
アソシエーション分析の基本から応用までを詳しく解説しました。
バスケット分析に代表されるこの手法は、膨大なデータの中から価値あるアソシエーションルールを発見し、ビジネスの意思決定をデータドリブンに行うための強力なツールです。
支持度、確信度、リフト値といった主要な指標を理解し、Pythonなどのツールを使って実際に分析を行うことで、顧客理解を深め、マーケティング戦略や商品戦略の最適化に役立てることができます。
アソシエーション分析は、ビッグデータ時代において、ビジネスの成長を加速させるための重要な鍵の一つです。
この記事が、皆さんデータ活用の一助となれば幸いです。
シーサイドでは、デジタルマーケティングやDXにまつわる課題解決の実績も数多くございます。
お困りやご相談がありましたら、まずはお気軽にお問い合わせください。
