AI × データ分析基礎知識集 / アソシエーション分析

アソシエーション分析(バスケット分析)|support・confidence・liftの読み方とクロスセル活用


アソシエーション分析(バスケット分析)は、「商品Aを買った人は商品Bも買いやすい」という組み合わせのパターンを、support・confidence・liftという3つの指標で数値化する手法です。本記事では、指標の読み方、Aprioriアルゴリズムの仕組み、クロスセル・商品陳列・レコメンド設計への実務活用までを整理します。

公開2026.07.16
最終更新2026.07.16
読了 13 分 / 約5,700字
この記事をシェアポスト
AI × データ分析『一緒に買われる商品』をレコメンド・セット販売に変える

アソシエーション分析で
クロスセルに変える

「この商品を買った人は、こんな商品も買っています」——EC サイトでよく見るこの一文の裏側にあるのがアソシエーション分析(バスケット分析、連関分析、マーケットバスケット分析とも呼ばれます)です。購買データやページ閲覧ログから「一緒に発生しやすい組み合わせ」を見つけ出し、クロスセル・レコメンド・商品陳列に使える形で数値化します。

機械学習の分類・回帰と違い、アソシエーション分析には正解ラベルが要りません。購買履歴やセッションログをそのまま投入するだけで、「Aと一緒にBが買われる割合」のようなルールを自動で洗い出せる、教師なし学習の一種です。データ分析の手法全体の中でどこに位置づく手法かは、別記事で整理しています。あわせてご覧ください。

関連記事

データ分析アルゴリズム全体図

アソシエーション分析を含む代表的な分析手法の全体像です。

続きを読む
C
結論
support・confidence・liftの3指標で『偶然でない組み合わせ』を見つける

アソシエーション分析の実務価値は、「よく一緒に出てくる」を「偶然でない、意味のある組み合わせ」まで絞り込めることです。単に同時購入回数を数えるだけでは、そもそも人気商品同士がたまたま一緒に出てくるだけのケースと区別できません。support(出現頻度)・confidence(条件付き確率)・lift(偶然からのズレ)の3指標を組み合わせて読むことで、クロスセルに使える組み合わせだけを抽出できます。

i
用語の整理
本記事で押さえる主要用語
  • アイテムセット:「パンとバター」のような商品(アイテム)の組み合わせ。
  • support(支持度):全取引のうち、そのアイテムセットを含む取引の割合。
  • confidence(確信度):「A→B」というルールで、Aを含む取引のうちBも含む割合(条件付き確率)。
  • lift(リフト値):confidence が「Bの単独出現率」と比べて何倍高いか。1より大きいほど、AとBが偶然以上に一緒に出現している。
  • Apriori アルゴリズム:頻出アイテムセットを効率よく探索する代表的なアルゴリズム。
  • マーケットバスケット分析:アソシエーション分析を小売・EC の購買データに適用したときの呼び方。指すものはほぼ同じ。

01.結論:『一緒に買われるもの』を数値化してクロスセルに使う

アソシエーション分析がマーケティングで使われる理由はシンプルです。「何が売れるか」ではなく「何と何が一緒に売れるか」を数字にできるため、レコメンド表示・セット販売・商品陳列・クーポン設計に直接転用できます。

指標答える問い実務での使い方
support(支持度)その組み合わせはどれくらいの頻度で起きるか在庫・陳列スペースを割く価値があるか(頻度が低すぎる組み合わせは対象外)
confidence(確信度)Aを買った人のうち、何%がBも買うか「Aの購入画面でBをレコメンドする」ときの的中率の目安
lift(リフト値)その組み合わせは『偶然』よりどれだけ起きやすいか単に人気商品同士なだけの組み合わせを除外し、本当に相性の良い組み合わせだけ残す

02.3つの指標|support・confidence・liftの読み方

3指標はそれぞれ役割が違い、どれか1つだけでは判断を誤ります。具体的な取引データで計算しながら確認します。

図:5件の取引から support・confidence を数える

「パン」を含む取引は3件(取引1・2・4)、「パンとバター」を両方含む取引は3件。「パンを買った人がバターも買う」確率(confidence)は 3/3 = 100%。

取引1
パンバター牛乳
取引2
パンバター
取引3
卵牛乳
取引4
パンバター卵
取引5
牛乳卵

オレンジ塗り = パン/オレンジ枠 = バター。support(パン) = 3/5 = 60%、support(パン∩バター) = 3/5 = 60%、confidence(パン→バター) = 60% / 60% = 100%。

support・confidence・lift は、それぞれ次の式で計算します(A, B はアイテムセット、N は全取引数)。

指標計算式先の例での値
support(A)Aを含む取引数 ÷ 全取引数 Nsupport(パン) = 3 ÷ 5 = 60%
support(A∩B)AとBを両方含む取引数 ÷ Nsupport(パン∩バター) = 3 ÷ 5 = 60%
confidence(A→B)support(A∩B) ÷ support(A)confidence(パン→バター) = 60% ÷ 60% = 100%
lift(A→B)confidence(A→B) ÷ support(B)support(バター)=60%なので lift = 100% ÷ 60% ≒ 1.67
!
confidence だけで判断すると、人気商品に引っ張られる
lift が1以下なら、単に両方とも人気なだけの可能性がある

confidence(A→B) が高くても、B がそもそも全体でよく売れる人気商品なら、A と関係なく高い数字が出ます。lift はこの「Bの単独人気」の影響を取り除いた指標で、1を上回るほど「AとBが偶然以上に一緒に出現している」、1を下回るなら「むしろ一緒には出にくい」ことを意味します。lift が1に近い、または1未満の組み合わせは、いくら confidence が高くてもクロスセル施策の根拠にしないのが安全です。

全取引数とA・Bの件数を入れ替えながら、support・confidence・liftがどう変わるかをその場で確認できます。

バスケット分析計算機
ツール単体ページで開く

全取引数とA・B・A∩Bの件数を入れると、support・confidence・liftをその場で計算します(ブラウザ内で計算、サーバー送信なし)。

例で試す:
ルール:
support(支持度)
パン: 60.0%
バター: 60.0%
両方: 60.0%
confidence(確信度)
パン→バター: 100.0%
バター→パン: 100.0%
lift(リフト値)
1.67
偶然以上に一緒に出現(lift > 1)
パンとバターの重なりのイメージ
パン(60.0%)バター(60.0%)

円の重なりはパンとバターを両方含む取引の相対的な多さ(confidenceの高さ)を模式的に示したもので、面積を厳密に一致させたものではありません。

取引100件に換算した内訳
両方(60件)パンのみ(0件)バターのみ(0件)どちらも含まない(40件)

同じ傾向の取引が100件あったとすると、パンだけを含む取引が0件、バターだけを含む取引が0件、パンとバター両方を含む取引が60件、どちらも含まない取引が40件という内訳になります。

03.Apriori アルゴリズム|組み合わせ爆発を防ぐ仕組み

商品点数が100種類あれば、2つの組み合わせだけで4,950通り、3つの組み合わせも含めると数十万通りに膨れ上がります。すべてを総当たりで計算するのは現実的でないため、Apriori アルゴリズムという絞り込みの仕組みが使われます。

Apriori の中心にあるのは「頻出でないアイテムセットの上位集合は、必ず頻出でない」という性質(アプリオリ性質)です。たとえば「パン単体」の support が最低ラインを下回るなら、「パンとバター」「パンとバターと牛乳」のような、パンを含むどの組み合わせも最低ラインを超えることはありません。この性質を使って、1個の組み合わせから順に support の低いものを枝刈りしながら、2個、3個と候補を絞り込んでいきます。

手順やること備考
01. 最低support(min_support)を決める「全取引の1%以上で出現」のように足切りラインを設定低すぎると計算量が爆発、高すぎると重要な組み合わせを見逃す
02. 1個のアイテムセットを絞り込む単体で min_support を超えるアイテムだけ残す残った候補だけが次のステップに進む
03. 2個の組み合わせを絞り込む01で残ったアイテム同士の組み合わせだけを候補にし、min_supportで再度足切り全組み合わせを計算しないため高速
04. 3個以上も同様に繰り返す候補が尽きるまで組み合わせのサイズを増やす実務では2〜3個の組み合わせまでで十分なことが多い
05. confidence・lift でルールを絞る頻出アイテムセットから、min_confidence・min_liftを満たすルールだけ抽出この段階で初めて「A→B」という方向を持ったルールになる
i
FP-Growth という選択肢
データが大きいときは FP-Growth の方が高速なことが多い

Apriori は候補生成と検証を繰り返すため、データ量やアイテム種類が多いと計算量が増えます。FP-Growth というアルゴリズムは、木構造(FPツリー)にデータを一度圧縮してから頻出パターンを探すため、候補の総当たりを避けられ、大規模データでは Apriori より高速に動作することが多いとされています。mlxtend ライブラリはどちらも同じインターフェースで使えるため、データ量が大きい場合は fpgrowth 関数に切り替えるだけで対応できます。

!
ノーコードで試したい場合
BigQuery MLやAWSのAutoMLに、Apriori相当のノーコード機能は無い

ロジスティック回帰(BigQuery MLのLOGISTIC_REG)や協調フィルタリング(同MATRIX_FACTORIZATION)と違い、GoogleのBigQuery MLが提供するモデルタイプにも、AWSのSageMaker Canvasのようなノーコードサービスにも、Apriori・FP-Growthに相当するアソシエーションルール抽出の機能は用意されていません。実務では、本記事のmlxtend(Python)のようなライブラリでコードを書くか、KNIME・Orange・RapidMinerのようなノーコード/ローコードの分析ツールを使うのが現実的な選択肢になります。

04.実務ユースケース|クロスセル・商品陳列・レコメンド

アソシエーション分析は EC・小売の購買データが典型ですが、Web サイトのページ閲覧ログや、SaaS の機能利用ログにも同じ考え方をそのまま適用できます。

業種・領域アイテムセットの中身活用例
EC・小売1回の注文に含まれる商品商品詳細ページの「よく一緒に購入されている商品」表示、セット割引の設計
実店舗1回のレジ通過(POSデータ)に含まれる商品併売率の高い商品を近くに陳列、レジ横の関連商品配置
コンテンツ・オウンドメディア1セッションで閲覧されたページ「一緒に読まれている記事」表示、内部リンク設計、回遊導線の見直し
SaaS プロダクト1顧客が利用している機能オンボーディング時に組み合わせで使われやすい機能を先に案内、アップセル提案
メール・LINE配信1配信で反応(クリック)したコンテンツ反応が連動しやすいコンテンツ同士を同じ配信にまとめる、配信セグメントの設計
i
クロスセル施策への落とし込み方
lift上位のルールから、実際に出し分けられる粒度まで絞る

lift が高いルールをそのまま並べても、粒度が細かすぎたり在庫・表示枠の制約で実装できないことがあります。実務では次の3段階で施策に落とし込みます。

  1. lift 上位でルールを抽出する
  2. confidence が一定以上(レコメンドとして提示しても外れにくい水準)に絞る
  3. 商品カテゴリ単位でグルーピングして実装可能な粒度に調整する

表の「商品同士の組み合わせ」は全体傾向の抽出にとどまり、個人ごとのパーソナライズはできません。個人単位でレコメンドを出したい場合や、購買データから顧客をグループ分けしたい場合は、それぞれ別記事で扱っています。

05.実装例(Python: mlxtend)

Python では mlxtend ライブラリの apriori と association_rules で、取引データからルール抽出まで数行で完結します。

# mlxtend でアソシエーション分析
import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules
from mlxtend.preprocessing import TransactionEncoder

# transactions: 取引ごとの購入商品リスト
transactions = [
    ["パン", "バター", "牛乳"],
    ["パン", "バター"],
    ["卵", "牛乳"],
    ["パン", "バター", "卵"],
    ["牛乳", "卵"],
]

# One-Hotエンコーディング(取引 x 商品 のブール行列に変換)
te = TransactionEncoder()
te_array = te.fit(transactions).transform(transactions)
df = pd.DataFrame(te_array, columns=te.columns_)

# 頻出アイテムセットの抽出(support >= 20%)
frequent_itemsets = apriori(df, min_support=0.2, use_colnames=True)

# アソシエーションルールの抽出(confidence >= 50%)
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.5)
rules = rules.sort_values("lift", ascending=False)

print(rules[["antecedents", "consequents", "support", "confidence", "lift"]])
#   antecedents  consequents  support  confidence   lift
#   (パン)        (バター)      0.6      1.00        1.67   ← liftが最も高い=偶然以上に相性が良い

大規模データで計算が重い場合は、apriori を fpgrowth に差し替えるだけで同じ結果をより高速に得られます(from mlxtend.frequent_patterns import fpgrowth)。

06.落とし穴|相関と因果の混同、レア商品の見落とし

アソシエーション分析は手軽に導入できる分、誤った使い方も起きやすい手法です。代表的な2つの落とし穴を押さえておきます。

!
落とし穴1:一緒に売れている=因果関係があるとは限らない
共通の原因(季節・キャンペーン)で一緒に売れているだけの可能性がある

「AとBが一緒に売れる」という結果は、Aを買うとBが欲しくなる(真の因果関係)だけでなく、季節性・同時期のキャンペーン・同じ棚に並んでいるといった共通の原因で説明できる場合があります。夏場に「アイス」と「かき氷シロップ」が一緒に売れるのは、片方が原因というより両方とも気温という共通要因で動いているだけかもしれません。因果関係を確かめたい場合は、因果推論の実務で扱うような手法や、実際にレコメンドを出し分けたA/Bテストでの検証が必要です。

関連記事

因果推論の実務

『一緒に売れている』が因果関係かどうかを確かめる手法を整理しています。

続きを読む
!
落とし穴2:min_supportを高くしすぎると、高単価・ニッチ商品の組み合わせを見逃す
レア商品ほどsupportが小さくなるのは当然の性質

min_support を全カテゴリで一律に高く設定すると、購入頻度は低いが利益率の高い高単価商品の組み合わせがすべて足切りされてしまいます。カテゴリ別に閾値を分ける、あるいは support ではなく lift の高さを優先して候補を残す運用にすると、ニッチだが相性の良い組み合わせを取りこぼしにくくなります。

07.よくある質問(FAQ)

アソシエーション分析とバスケット分析は同じものですか?

指しているものはほぼ同じです。アソシエーション分析(連関分析)が手法そのものの名称で、それを小売・ECの購買データに適用したときに「マーケットバスケット分析」「バスケット分析」と呼ぶのが一般的です。Webサイトの閲覧ログや機能利用ログなど、購買以外のデータに使う場合は「アソシエーション分析」と呼ぶことが多くなります。

support・confidence・liftのうち、最も重視すべき指標はどれですか?

目的によりますが、クロスセル施策の根拠にするなら lift を優先するのが安全です。confidence だけで判断すると、そもそも人気な商品に引っ張られて「実は特別な相性ではない組み合わせ」を拾ってしまいます。support は足切りライン(計算対象に含めるかどうか)として使い、最終的な優先順位づけは lift で行うのが実務的な組み合わせです。

min_supportやmin_confidenceの閾値はどう決めればよいですか?

決まった正解値はなく、データ量と目的から逆算します。まずは低めの閾値(support 1〜5%程度)で試し、抽出されたルールの数が多すぎれば閾値を上げる、少なすぎれば下げるという調整を繰り返すのが定番です。カテゴリによって取引頻度が大きく異なる場合は、カテゴリ別に閾値を分けることも検討します。

アソシエーション分析と協調フィルタリングはどう違いますか?

アソシエーション分析は「商品同士の組み合わせ」を全体傾向として抽出する手法で、個人ごとのパーソナライズは行いません。一方、協調フィルタリングは「似た行動を取るユーザー」を手がかりに、個人単位でレコメンドを出す手法です。商品陳列やセット販売の設計にはアソシエーション分析、個人向けのレコメンド表示には協調フィルタリングが向きます。

08.まとめ

アソシエーション分析(マーケットバスケット分析)は、購買データやページ閲覧ログから「一緒に発生しやすい組み合わせ」を、support・confidence・lift の3指標で数値化する教師なし学習の手法です。Apriori(または FP-Growth)で組み合わせ爆発を抑えながら候補を絞り込み、lift を優先して偶然でない相性の良い組み合わせだけをクロスセル・レコメンド・商品陳列に落とし込みます。相関と因果を混同しないこと、レア商品の見落としに注意することが、実務で使いこなす鍵になります。

お問い合わせ

アソシエーション分析を使ったクロスセル・レコメンド設計の伴走支援を行っています

弊社ではAIフル活用のデータ分析支援を提供しています。購買・閲覧ログからのルール抽出、クロスセル施策への落とし込み、A/Bテストでの効果検証まで、実データで伴走しながら整えています。お気軽にお問い合わせください。

お問い合わせはこちら

データ分析・アルゴリズム 基礎知識集

一覧に戻る →
07

モデル構築の自動化

この記事をシェア
澤田 翔太(Shota Sawada)
この記事を書いた人

澤田 翔太

株式会社クリプタル 代表取締役

1988年生まれ、慶應義塾大学卒。創業メンバーとして関わった株式会社セールスサポートを株式会社ネオマーケティング(東証STD 4196)に売却。株式会社クリプタルでも複数の事業立ち上げと売却を経験し、2022年9月には婚活・恋愛メディア「シッテク」「婚活会議」を株式会社ベビーカレンダー(東証GRT 7363)へ売却。現在はAI業務支援事業、TANTOU事業、グロースハック支援事業、メディア事業、SEOコンサルティング事業を手がける。