コンテンツにスキップ

アソシエーション分析

一緒に買われるものの組み合わせを見つけます。「おむつを買う人はビールも買う」のような併売の傾向(バスケット分析)を調べるときに使います。

入出力

ポート内容
入力データデータ
出力データデータ

Spark エンジンでは動きません。

入力の行も列も残りません。 出力は、見つかったルールを 1 行ずつ並べた別の表です。

出力の形

列名内容
条件部「これを買ったら」の側。複数のときはカンマ区切り
結論部「これも買う」の側
支持度その組み合わせが全体の何割に出るか
確信度条件部を買った人のうち、結論部も買った割合
リフト単独で買われる確率に比べて何倍買われるか

支持度 → 確信度 → リフト の順に、すべて降順で並びます。 上から読めばよくある組み合わせから出てきます。

設定項目

キー列を選択必須
何を 1 回の買い物とみなすか。レシート番号や顧客 ID。型の制限はありません。
アイテム列を選択必須
商品名などの列。文字列の列だけ選べます。
支持度の下限値を設定必須
全体の何割以上に出る組み合わせを見るか。既定は 0.1(1 割)。
ルールの最大長を設定必須
組み合わせる商品の数の上限。既定は 3。

オプション

結果をフィルタする指標を選択必須
リフト値(既定)/ 確信度 / 支持度。
結果をフィルタする下限値を入力必須
既定は 1。上で選んだ指標がこの値未満のルールを落とします。

入力データの形

1 行が「どの買い物に、どの商品が入っていたか」 です。

レシート番号商品名
R001おむつ
R001ビール
R002おむつ

1 枚のレシートが複数行になっている形にしてから掛けてください。商品が横に並んでいるなら、先に縦持ち変換で縦にします。

キー列・アイテム列に欠損があるとエラーになります。

3 つの指標

指標意味見方
支持度その組み合わせが全体の何割に出るか高いほどよくある組み合わせ
確信度A を買った人のうち B も買った割合高いほど連動している
リフト値単独で買われる確率に比べて何倍買われるか1 より大きければ意味がある

リフト値が 1 未満の組み合わせは、偶然一緒に買われているだけなので、既定の下限 1 で外れます。ちょうど 1 のものは残ります。

出力の列名は リフト で、設定の選択肢は「リフト値」です。指すものは同じです。

下限値の決め方

支持度の下限を下げすぎると、組み合わせが爆発して終わりません。 既定の 0.1 から始め、結果が少なければ下げてください。

ルールの最大長を上げると、組み合わせの数が急に増えます。 既定の 3 から大きく上げないでください。

エラーと対処

有効なルールが作れない(支持度)

支持度の下限を満たす組み合わせが 1 つもないときに出ます。

有効なルールが作成できませんでした。「支持度の下限値」を現在の設定よりも小さくしてください。

直し方 — 支持度の下限を下げてください(0.1 → 0.05 など)。

有効なルールが作れない(フィルタ)

組み合わせは見つかったが、結果をフィルタする下限値で全部落ちたときに出ます。

有効なルールが作成できませんでした。「支持度の下限値」か、オプションの「結果をフィルタする下限値」を現在の設定よりも小さくしてください。

直し方 — どちらかの下限を下げてください。

キー列かアイテム列に欠損値がある

処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。

直し方 — 欠損値処理で欠損のある行を落としてください。

列を選ばずに実行した

キー列を選択かアイテム列を選択が空のまま実行したときに出ます。前の処理で列名が変わり、選んでいた列が入力データからなくなったときにも同じメッセージです。

対象の列が選択されていません。

直し方 — 列を選び直してください。

よく使う例

1. 併売の組み合わせを見つける

一緒に買われる商品を知りたいとき。

入力(レシート 4 枚)

レシート番号商品名
R001おむつ
R001ビール
R002おむつ
R002ビール
R003おむつ
R003お茶
R004パン
R004牛乳

設定

設定項目値
キー列を選択レシート番号
アイテム列を選択商品名
支持度の下限値を設定0.1
ルールの最大長を設定3
結果をフィルタする指標を選択リフト値
結果をフィルタする下限値を入力1

出力 — 6 行出ます。

条件部結論部支持度確信度リフト
ビールおむつ0.511.3333
おむつビール0.50.66671.3333
パン牛乳0.2514
牛乳パン0.2514
お茶おむつ0.2511.3333
おむつお茶0.250.33331.3333

読み方 — 支持度 の降順なので、リフト がいちばん大きい パン → 牛乳(4 倍)は 3 行目に出ます。上から読むと「よくある組み合わせ」の順で、「強い組み合わせ」の順ではありません。 強さで並べ替えたいときは、このあと行の並べ替えで リフト の降順にしてください。

向きで数が変わるのは 確信度 だけです。 おむつ → ビール は 0.6667(おむつを買った 3 枚のうち 2 枚)、ビール → おむつ は 1(ビールを買った 2 枚すべて)。支持度 と リフト は向きを変えても同じ値です。

2. 結果が 0 件のときに広げる

「有効なルールが作成できませんでした」と出るとき。

入力 — レシートが 1000 枚、商品の種類が 50 ほどあるデータ(下は先頭だけ)。よく出る組み合わせでも全体の 5% ほどで、既定の 0.1 には届きません

レシート番号商品名
R001商品A
R001商品B
R002商品C
R002商品D

設定

設定項目値
支持度の下限値を設定0.01

出力 — より珍しい組み合わせまで出ます。時間はかかります。

3. 3 つの組み合わせを見る

2 商品だけでなく、3 商品のまとまりも見たいとき。3 商品のルールを作るには、1 枚のレシートに商品が 3 つ以上並んでいる必要があります。

入力

レシート番号商品名
R001おむつ
R001ビール
R001おしりふき
R002おむつ
R002ビール
R002おしりふき

設定

設定項目値
ルールの最大長を設定3(既定)

出力 — 条件部 が おむつ,ビール、結論部 が おしりふき のように、カンマ区切りの行が出ます。

4. 強い関係だけに絞る

結果が多すぎて読めないとき。

入力

レシート番号商品名
R001おむつ
R001ビール
R002おむつ
R002ビール
R003パン
R004ジャム
R005牛乳

設定

設定項目値
結果をフィルタする指標を選択リフト値
結果をフィルタする下限値を入力2

出力 — 2 行だけになります。

条件部結論部支持度確信度リフト
おむつビール0.412.5
ビールおむつ0.412.5

パン ジャム 牛乳 はそれぞれ 1 枚のレシートにしか出ず、ほかの商品と一緒に買われていないので、組み合わせ自体ができません。

どのレシートにも同じ商品しか入っていない形(例 3 のような入力)だと、リフトはちょうど 1 にしかならず、下限 2 では全部落ちて有効なルールが作れない(フィルタ)になります。

5. 横に並んだ商品列から始める

1 行に商品が横に並んでいる形のデータしかないとき。

入力

レシート番号商品1商品2
R001おむつビール

設定 — 先に縦持ち変換で 商品1 商品2 を縦にし、できた値の列をアイテム列を選択に指定します。

出力 — 1 枚のレシートが複数行になるので、そのまま掛けられます。

関連