Обчислення Ключових Метрик Добування
Свайпніть щоб показати меню
Підтримка: визначення, обчислення та інтерпретація
Підтримка вимірює, як часто певний товар або набір товарів зустрічається у наборі транзакцій.
Математично підтримка для набору товарів — це частка транзакцій, що містять усі товари з цього набору. У роздрібному контексті підтримка допомагає зрозуміти, наскільки поширеною є комбінація товарів серед усіх покупок.
Support(itemset) = Number of transactions containing itemset / Total number of transactions
Вищий показник підтримки означає, що набір товарів частіше зустрічається у ваших даних, що робить його кандидатом для подальшого аналізу або акцій. Наприклад, якщо "bread and butter" з'являються разом у 30 з 100 транзакцій, підтримка для {"bread", "butter"} становить 0.3.
Довірчий рівень: формула, значення та практичне застосування
Довірча ймовірність оцінює ймовірність того, що клієнт, який купує товар A, також придбає товар B.
Вона обчислюється як відношення кількості транзакцій, що містять як A, так і B, до кількості транзакцій, що містять лише A.
Довірча ймовірність (A ⇒ B) = Кількість транзакцій, що містять і A, і B / Кількість транзакцій, що містять A
На практиці довірча ймовірність показує, наскільки надійним є правило «якщо A, то B». Якщо довірча ймовірність висока, можна бути більш впевненим, що клієнти, які купують A, також куплять B, що корисно для цільових рекомендацій або маркетингу.
Підняття: виведення, вимірювання та значення
Підняття оцінює, наскільки ймовірніше буде придбано товар B при купівлі товару A, порівняно з випадком, якщо покупки A і B є незалежними подіями.
Він обчислюється шляхом ділення довіри правила на підтримку наслідку (B):
Lift(A ⇒ B) = Confidence(A ⇒ B) / Support(B)
Значення lift, що дорівнює 1, означає відсутність асоціації (незалежність), більше 1 — позитивну асоціацію, менше 1 — негативну асоціацію. Lift є важливим, оскільки коригує популярність наслідку, допомагаючи відрізнити справді значущі зв'язки від випадкових.
Приклад з розрахунками: підтримка, довіра та lift
Припустимо, у вас є такі транзакційні дані:
- 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 (2 з 4) ⇒ 0.5;
-
Support(Milk): Зустрічається у Transaction 1, 2 та 3 (3 з 4) ⇒ 0.75;
-
Support(Bread): Зустрічається у Transaction 1, 2 та 4 (3 з 4) ⇒ 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}")
Цей код демонструє, як обчислити основні метрики асоціативних правил — підтримку, довіру та lift — на основі невеликого набору транзакційних даних. Ось як працює кожна частина:
-
Підготовка транзакційних даних:
- Список
dataмістить транзакції, кожна з яких є списком придбаних товарів; - Кожен підсписок — це окрема транзакція (кошик) одного клієнта.
- Список
-
One-hot кодування транзакцій:
- Код використовує
TransactionEncoderз бібліотекиmlxtendдля перетворення списку списків товарів у формат, придатний для аналізу; fitзнаходить усі унікальні товари, аtransformстворює булевий масив (True, якщо товар присутній у транзакції, False — якщо ні);- Цей масив перетворюється у DataFrame pandas, де кожен стовпець — це товар, а кожен рядок — транзакція.
- Код використовує
-
Обчислення підтримки:
support_milk = df['Milk'].mean()обчислює частку транзакцій, що містять "Milk";support_bread = df['Bread'].mean()обчислює частку транзакцій з "Bread";support_milk_bread = (df['Milk'] & df['Bread']).mean()визначає частку транзакцій, де одночасно є "Milk" і "Bread" (перетин двох стовпців).
-
Обчислення довіри:
confidence = support_milk_bread / support_milkобчислює довіру для правила "Milk ⇒ Bread";- Це показує, як часто купують "Bread" разом із "Milk".
-
Обчислення lift:
lift = confidence / support_breadобчислює lift для правила;- Lift порівнює спостережувану довіру з очікуваною, якщо покупки "Milk" і "Bread" були б незалежними.
-
Вивід та інтерпретація результатів:
- Код виводить значення підтримки, довіри та lift для "Milk & Bread";
- Підтримка 0.50 означає, що "Milk" і "Bread" купують разом у половині транзакцій;
- Довіра 0.67 означає, що коли купують "Milk", у двох з трьох випадків купують і "Bread";
- Lift 0.89 свідчить, що купівля "Milk" навіть трохи зменшує ймовірність купівлі "Bread" порівняно з випадковим вибором (оскільки lift < 1).
1. Припустимо, у наборі даних з 1 000 транзакцій, 150 транзакцій містять і "apples", і "bananas". Яка підтримка (support) для набору товарів {"apples", "bananas"}?
2. Яке твердження найкраще відрізняє confidence від lift у добуванні асоціативних правил?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат