Mengidentifikasi aturan asosiasi

Analisis Market Basket dengan Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Memuat dan menyiapkan data

import pandas as pd

# Load transactions from pandas.
books = pd.read_csv("datasets/bookstore.csv")
# Split transaction strings into lists.
transactions = books['Transaction'].apply(lambda t: t.split(','))
# Convert DataFrame into list of strings.
transactions = list(transactions)
Analisis Market Basket dengan Python

Menjelajahi data

print(transactions[:5])
[['language', 'travel', 'humor', 'fiction'],
 ['humor', 'language'],
 ['humor', 'biography', 'cooking'],
 ['cooking', 'language'],
 ['travel']]
Analisis Market Basket dengan Python

Aturan asosiasi

  • Aturan asosiasi

    • Berisi anteseden dan konsekuen
      • {kesehatan} $\rightarrow$ {memasak}
  • Aturan multi-anteseden

    • {humor, perjalanan} $\rightarrow$ {bahasa}
  • Aturan multi-konsekuen

    • {biografi} $\rightarrow$ {sejarah, bahasa}
Analisis Market Basket dengan Python

Sulitnya memilih aturan

  • Menemukan aturan yang berguna itu sulit.

    • Himpunan semua kemungkinan aturan sangat besar.
    • Sebagian besar tidak berguna.
    • Harus membuang sebagian besar aturan.
  • Bagaimana jika kita batasi ke aturan sederhana?

    • Satu anteseden dan satu konsekuen.
    • Tetap menantang, bahkan untuk dataset kecil.
Analisis Market Basket dengan Python

Membuat aturan

 

  • fiksi
  • puisi
  • sejarah
  • biografi
  • memasak

 

  • kesehatan
  • perjalanan
  • bahasa
  • humor
Analisis Market Basket dengan Python

Membuat aturan

Aturan Fiksi Aturan Puisi ... Aturan Humor
fiksi->puisi puisi->fiksi ... humor->fiksi
fiksi->sejarah puisi->sejarah ... humor->sejarah
fiksi->biografi puisi->biografi ... humor->biografi
fiksi->memasak puisi->memasak ... humor->memasak
... ... ... ...
fiksi->humor puisi->humor ...
Analisis Market Basket dengan Python

Membuat aturan dengan itertools

from itertools import permutations

# Extract unique items.
flattened = [item for transaction in transactions for item in transaction]
items = list(set(flattened))
# Compute and print rules.
rules = list(permutations(items, 2))
print(rules)
[('fiction', 'poetry'), 
 ('fiction', 'history'),
 ...
 ('humor', 'travel'), 
 ('humor', 'language')]
Analisis Market Basket dengan Python

Menghitung jumlah aturan

# Print the number of rules
print(len(rules))
72

Plot menunjukkan total jumlah aturan sebagai fungsi dari jumlah item unik.

Analisis Market Basket dengan Python

Melihat ke depan

# Import the association rules function
from mlxtend.frequent_patterns import association_rules
from mlxtend.frequent_patterns import apriori

# Compute frequent itemsets using the Apriori algorithm
frequent_itemsets = apriori(onehot, min_support = 0.001, 
                            max_len = 2, use_colnames = True)

# Compute all association rules for frequent_itemsets
rules = association_rules(frequent_itemsets, 
                            metric = "lift", 
                             min_threshold = 1.0)
Analisis Market Basket dengan Python

Ayo berlatih!

Analisis Market Basket dengan Python

Preparing Video For Download...