Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 主要なマイニング指標の計算 | アソシエーションルールとトランザクション分析の基礎
マーケットバスケット分析とレコメンデーションシステム

主要なマイニング指標の計算

メニューを表示するにはスワイプしてください

サポート:定義、計算方法、および解釈

Note
定義

サポートは、特定の商品または商品セットがトランザクションデータセット内でどのくらい頻繁に出現するかを測定する指標。

数学的には、アイテムセットのサポートは、そのセット内のすべてのアイテムを含むトランザクションの割合。 小売業の文脈では、サポートはすべての会計処理の中で、特定の商品組み合わせがどれほど一般的かを把握するのに役立つ。

Support(itemset) = Number of transactions containing itemset / Total number of transactions

サポート値が高いほど、そのアイテムセットがデータ内でより多く出現していることを示し、さらなる分析やプロモーションの候補となる。 例えば、「bread and butter」が100件中30件のトランザクションで一緒に購入されている場合、{"bread", "butter"} のサポートは0.3となる。

コンフィデンス:公式、意味、実用例

Note
定義

信頼度(Confidence) は、商品Aを購入した顧客が商品Bも購入する可能性を評価する指標。

信頼度は、AとBの両方を含む取引数を、Aのみを含む取引数で割った比率として計算。

Confidence(A ⇒ B) = Number of transactions containing both A and B / Number of transactions containing A

実際には、信頼度は「AならばB」というルールの信頼性を示す指標。信頼度が高い場合、Aを購入した顧客がBも購入する可能性が高いことを意味し、ターゲットを絞ったレコメンデーションやマーケティングに有用。

リフト:導出方法、測定、重要性

Note
定義

リフト(Lift) は、商品Aが購入されたときに商品Bが購入される確率が、AとBの購入が独立した場合と比べてどれだけ高いかを評価する指標。

リフトは、ルールの信頼度を結果(B)のサポートで割ることで計算されます:

Lift(A ⇒ B) = Confidence(A ⇒ B) / Support(B)

リフト値が1の場合は関連性がない(独立)ことを示し、1より大きい場合は正の関連性、1より小さい場合は負の関連性を示します。リフトは結果の人気度を補正するため、偶然の一致ではなく本当に意味のある関係を見分けるのに重要です。

実例:サポート、信頼度、リフトの計算

次のようなトランザクションデータがあるとします:

  • Transaction 1: Milk, Bread;
  • Transaction 2: Milk, Diaper, Beer, Bread;
  • Transaction 3: Milk, Diaper, Beer, Cola;
  • Transaction 4: Bread, Butter.

ルール「Milk ⇒ Bread」の指標を計算します。

  • Support(Milk, Bread): Transaction 1と2に出現(4件中2件)⇒ 0.5;

  • Support(Milk): Transaction 1、2、3に出現(4件中3件)⇒ 0.75;

  • Support(Bread): Transaction 1、2、4に出現(4件中3件)⇒ 0.75。

  • Confidence(Milk ⇒ Bread): Support(Milk, Bread) / Support(Milk) = 0.5 / 0.75 = 0.6667;

  • Lift(Milk ⇒ Bread): Confidence(Milk ⇒ Bread) / Support(Bread) = 0.6667 / 0.75 = 0.8889。

この結果は、「Milk」と「Bread」は一緒に購入されることが多いものの、「Milk」を購入しても「Bread」を購入する確率が基準値より高くならないことを示しています。

123456789101112131415161718192021222324252627282930
import pandas as pd from mlxtend.preprocessing import TransactionEncoder # Sample transaction data data = [ ['Milk', 'Bread'], ['Milk', 'Diaper', 'Beer', 'Bread'], ['Milk', 'Diaper', 'Beer', 'Cola'], ['Bread', 'Butter'] ] # Converting to DataFrame with one-hot encoding te = TransactionEncoder() te_ary = te.fit(data).transform(data) df = pd.DataFrame(te_ary, columns=te.columns_) # Calculating support support_milk = df['Milk'].mean() support_bread = df['Bread'].mean() support_milk_bread = (df['Milk'] & df['Bread']).mean() # Calculating confidence for rule: Milk => Bread confidence = support_milk_bread / support_milk # Calculating lift for rule: Milk => Bread lift = confidence / support_bread print(f"Support (Milk & Bread): {support_milk_bread:.2f}") print(f"Confidence (Milk ⇒ Bread): {confidence:.2f}") print(f"Lift (Milk ⇒ Bread): {lift:.2f}")

このコードは、小規模なトランザクションデータセットを用いてサポート信頼度リフトといった主要なアソシエーションルール指標を計算する方法を示しています。各部分の役割は以下の通りです:

  1. トランザクションデータの準備:

    • dataリストは各トランザクション(購入品リスト)を格納;
    • 各サブリストが1人の顧客の1回の購入(バスケット)を表します。
  2. トランザクションのワンホットエンコーディング:

    • mlxtendライブラリのTransactionEncoderを使い、アイテムリストのリストを分析に適した形式へ変換;
    • fitで全アイテムを学習し、transformで各トランザクションにアイテムが含まれるかどうかの真偽値配列を作成;
    • この配列をpandasのDataFrameに変換し、各列がアイテム、各行がトランザクションとなります。
  3. サポートの計算:

    • support_milk = df['Milk'].mean()で「Milk」を含むトランザクションの割合を計算;
    • support_bread = df['Bread'].mean()で「Bread」を含む割合を計算;
    • support_milk_bread = (df['Milk'] & df['Bread']).mean()で「Milk」と「Bread」の両方を含むトランザクションの割合(2列の積集合)を計算します。
  4. 信頼度の計算:

    • confidence = support_milk_bread / support_milkでルール「Milk ⇒ Bread」の信頼度を計算;
    • これは「Milk」購入時に「Bread」も購入される割合を示します。
  5. リフトの計算:

    • lift = confidence / support_breadでルールのリフトを計算;
    • リフトは「Milk」と「Bread」の購入が独立である場合と比較して、実際の信頼度がどれだけ高いかを示します。
  6. 結果の出力と解釈:

    • コードは「Milk & Bread」のサポート、信頼度、リフトを出力;
    • サポート0.50は「Milk」と「Bread」が全体の半分のトランザクションで一緒に購入されていることを示します;
    • 信頼度0.67は「Milk」購入時に2/3の確率で「Bread」も購入されていることを示します;
    • リフト0.89は、リフトが1未満のため「Milk」を買うことで「Bread」を買う確率がむしろわずかに下がることを示しています。

1. 1,000件の取引データセットのうち、150件の取引に「apples」と「bananas」の両方が含まれています。アイテムセット {"apples", "bananas"} のサポートはいくつですか?

2. アソシエーションルールマイニングにおいて、信頼度とリフトの違いを最もよく表している説明はどれですか?

question-icon

1,000件の取引データセットのうち、150件の取引に「apples」と「bananas」の両方が含まれています。アイテムセット {"apples", "bananas"} のサポートはいくつですか?

question mark

アソシエーションルールマイニングにおいて、信頼度とリフトの違いを最もよく表している説明はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  2
some-alt