忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【データマイニング】Aprioriアルゴリズムによる相関分析(アソシエーション分析)の仕組み

データマイニングにおいて「商品Aを買う人は、商品Bも一緒に買いやすい」といった購買データの隠れたパターンを発見する手法を相関分析(アソシエーション分析)と呼びます。その代表的な手法である「Apriori(アプリオリ)アルゴリズム」の仕組みと、根幹となる重要指標を整理します。

1. 【 概要 】

Aprioriアルゴリズムとは、膨大な取引データの中から「頻繁に同時に購入される商品の組み合わせ(関連ルール)」を効率よく検出するためのアルゴリズムです。

有名な「おむつを買う人はビールも一緒に買う」のような購買傾向を発見し、商品の陳列改善やECサイトのレコメンド機能に活用されています。


2. 【 基本手順(2つのステップ) 】

(1) 支持度(Support)による候補絞り込み(枝刈り)
設定した閾値(しきい値)以上の支持度を持つ「頻繁に買われる組み合わせ」だけを抽出する。
(2) 確信度(Confidence)によるフィルタリング
抽出された組み合わせの中で、設定した確信度の閾値を下回るルールを取り除く。

3. 整理:最重要指標「支持度」と「確信度」の徹底解説

Aprioriアルゴリズムの選別基準となる「支持度」と「確信度」、そしてルールの有効性を測る「リフト値」の意味を詳しく見ていきましょう。

【 評価指標の具体的な意味 】

指標(1):支持度(Support)= 全体における「出現率」
全レジ通過数(全取引)の中で「商品Aと商品Bが同時に買われた割合」です。
「そもそもめったに買われない組み合わせ」を無駄に計算しないよう、ステップ1の候補作成段階で切り捨てる(枝刈りする)ために使います。
例:全100件の買い物中、おむつとビールが同時に買われたのが15件なら、支持度は「15%(0.15)」。

指標(2):確信度(Confidence)= Aを買った人の「併買い率」
商品Aを買った人のうち「どれくらいの割合で商品Bも一緒に買ったか」という確率です。
「Aを買うならBも買うはず」という予測の信頼度を表し、ステップ2のフィルタリングで基準未満のルールを取り除きます。
例:おむつを買った人20人のうち、ビールも買った人が15人なら、確信度は「75%(0.75)」。

指標(3):リフト値(Lift)= 偶然ではない「関連性の強さ」
「商品Bの本来の売れ行き」に対して「商品Aと一緒に買うことでどれくらい買いやすくなったか」を示す倍率です。
「1.0」を超えると強い関連性があり、1.0以下なら「ただどちらも単体で人気なだけ(偶然)」と判断できます。

4. 関連して押さえたい「アルゴリズムの具体的な流れ」

「支持度」と「確信度」を使って、内部でどのようにデータが処理されていくか、ステップ順に整理します。

ステップ1(候補の生成):全データから「支持度」が閾値以上の組み合わせ(よく買われるペア)だけを抽出する。「めったに買われない商品は何と組みあわせても買われない」という原則(アプリオリ原理)を使い、ここで計算量を一気に減らします。
ステップ2(フィルタリング):抽出されたペアの中から、「確信度」が閾値未満のルールを排除する。「Aを買う人はBも買う」という推論の精度が高いものだけが残ります。
ステップ3(評価):残ったルールに対して「リフト値」を確認し、実務で使える真の関連ルールを決定します。


5. 補足:Python(mlxtend)での実装コード例

Pythonの `mlxtend` ライブラリを使用すると、支持度と確信度の閾値を指定するだけで簡単に関連ルールを抽出できます。

# コード実行例
from mlxtend.frequent_patterns import apriori, association_rules

# 1. 最小支持度(min_support=0.1=全体の10%以上で出現)で候補を絞り込み
frequent_itemsets = apriori(df, min_support=0.10, use_colnames=True)

# 2. 最小確信度(min_threshold=0.6=併買い率60%以上)でフィルタリング
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.6)

print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

# 出力イメージ
# antecedents: [おむつ] -> consequents: [ビール] | support: 0.15 | confidence: 0.75 | lift: 2.1

6. まとめ

Aprioriアルゴリズムは、**「支持度」で全体の出現頻度を見て無駄な計算をカット(候補作成)**し、**「確信度」でルールの信頼性をチェックして不十分なものを除外(フィルタリング)**する合理的かつスマートな仕組みです。この2つの指標の意味を押さえておくことで、データ分析の結果を正しくビジネスの現場に還元できるようになります!


PR