主要なマイニング指標の計算
メニューを表示するにはスワイプしてください
サポート:定義、計算方法、および解釈
サポートは、特定の商品または商品セットがトランザクションデータセット内でどのくらい頻繁に出現するかを測定する指標。
数学的には、アイテムセットのサポートは、そのセット内のすべてのアイテムを含むトランザクションの割合。 小売業の文脈では、サポートはすべての会計処理の中で、特定の商品組み合わせがどれほど一般的かを把握するのに役立つ。
Support(itemset) = Number of transactions containing itemset / Total number of transactions
サポート値が高いほど、そのアイテムセットがデータ内でより多く出現していることを示し、さらなる分析やプロモーションの候補となる。 例えば、「bread and butter」が100件中30件のトランザクションで一緒に購入されている場合、{"bread", "butter"} のサポートは0.3となる。
コンフィデンス:公式、意味、実用例
信頼度(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も購入する可能性が高いことを意味し、ターゲットを絞ったレコメンデーションやマーケティングに有用。
リフト:導出方法、測定、重要性
リフト(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」を購入する確率が基準値より高くならないことを示しています。
123456789101112131415161718192021222324252627282930import 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}")
このコードは、小規模なトランザクションデータセットを用いてサポート、信頼度、リフトといった主要なアソシエーションルール指標を計算する方法を示しています。各部分の役割は以下の通りです:
-
トランザクションデータの準備:
dataリストは各トランザクション(購入品リスト)を格納;- 各サブリストが1人の顧客の1回の購入(バスケット)を表します。
-
トランザクションのワンホットエンコーディング:
mlxtendライブラリのTransactionEncoderを使い、アイテムリストのリストを分析に適した形式へ変換;fitで全アイテムを学習し、transformで各トランザクションにアイテムが含まれるかどうかの真偽値配列を作成;- この配列をpandasのDataFrameに変換し、各列がアイテム、各行がトランザクションとなります。
-
サポートの計算:
support_milk = df['Milk'].mean()で「Milk」を含むトランザクションの割合を計算;support_bread = df['Bread'].mean()で「Bread」を含む割合を計算;support_milk_bread = (df['Milk'] & df['Bread']).mean()で「Milk」と「Bread」の両方を含むトランザクションの割合(2列の積集合)を計算します。
-
信頼度の計算:
confidence = support_milk_bread / support_milkでルール「Milk ⇒ Bread」の信頼度を計算;- これは「Milk」購入時に「Bread」も購入される割合を示します。
-
リフトの計算:
lift = confidence / support_breadでルールのリフトを計算;- リフトは「Milk」と「Bread」の購入が独立である場合と比較して、実際の信頼度がどれだけ高いかを示します。
-
結果の出力と解釈:
- コードは「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. アソシエーションルールマイニングにおいて、信頼度とリフトの違いを最もよく表している説明はどれですか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください