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" з'являються разом у 30 з 100 транзакцій, підтримка для {"bread", "butter"} становить 0.3.

Довірчий рівень: формула, значення та практичне застосування

Note
Визначення

Довірча ймовірність оцінює ймовірність того, що клієнт, який купує товар A, також придбає товар B.

Вона обчислюється як відношення кількості транзакцій, що містять як A, так і B, до кількості транзакцій, що містять лише A.

Довірча ймовірність (A ⇒ B) = Кількість транзакцій, що містять і A, і B / Кількість транзакцій, що містять A

На практиці довірча ймовірність показує, наскільки надійним є правило «якщо A, то B». Якщо довірча ймовірність висока, можна бути більш впевненим, що клієнти, які купують A, також куплять B, що корисно для цільових рекомендацій або маркетингу.

Підняття: виведення, вимірювання та значення

Note
Визначення

Підняття оцінює, наскільки ймовірніше буде придбано товар 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" порівняно з базовим рівнем.

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}")

Цей код демонструє, як обчислити основні метрики асоціативних правил — підтримку, довіру та lift — на основі невеликого набору транзакційних даних. Ось як працює кожна частина:

  1. Підготовка транзакційних даних:

    • Список data містить транзакції, кожна з яких є списком придбаних товарів;
    • Кожен підсписок — це окрема транзакція (кошик) одного клієнта.
  2. One-hot кодування транзакцій:

    • Код використовує TransactionEncoder з бібліотеки mlxtend для перетворення списку списків товарів у формат, придатний для аналізу;
    • fit знаходить усі унікальні товари, а transform створює булевий масив (True, якщо товар присутній у транзакції, False — якщо ні);
    • Цей масив перетворюється у DataFrame pandas, де кожен стовпець — це товар, а кожен рядок — транзакція.
  3. Обчислення підтримки:

    • support_milk = df['Milk'].mean() обчислює частку транзакцій, що містять "Milk";
    • support_bread = df['Bread'].mean() обчислює частку транзакцій з "Bread";
    • support_milk_bread = (df['Milk'] & df['Bread']).mean() визначає частку транзакцій, де одночасно є "Milk" і "Bread" (перетин двох стовпців).
  4. Обчислення довіри:

    • confidence = support_milk_bread / support_milk обчислює довіру для правила "Milk ⇒ Bread";
    • Це показує, як часто купують "Bread" разом із "Milk".
  5. Обчислення lift:

    • lift = confidence / support_bread обчислює lift для правила;
    • Lift порівнює спостережувану довіру з очікуваною, якщо покупки "Milk" і "Bread" були б незалежними.
  6. Вивід та інтерпретація результатів:

    • Код виводить значення підтримки, довіри та 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 у добуванні асоціативних правил?

question-icon

Припустимо, у наборі даних з 1 000 транзакцій, 150 транзакцій містять і "apples", і "bananas". Яка підтримка (support) для набору товарів {"apples", "bananas"}?

question mark

Яке твердження найкраще відрізняє confidence від lift у добуванні асоціативних правил?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 2
some-alt