Apriori algoritması

Python ile Market Basket Analysis

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Öğe kümelerini sayma

$${n \choose k} = \frac{n!}{(n-k)!k!}$$

Öğe Sayısı Öğe Kümesi Boyutu Kombinasyonlar
3461 0 1
3461 1 3461
3461 2 5,987,530
3461 3 6,903,622,090
3461 4 5,968,181,296,805
Python ile Market Basket Analysis

Öğe kümelerini sayma

$$\sum_{k=0}^{n}{n \choose k} = 2^{n}$$

  • $n = 3461 \rightarrow 2^{3461}$
  • $2^{3461}>>10^{82}$
  • Evren'deki atom sayısı: $10^{82}$.
Python ile Market Basket Analysis

Öğe kümesi sayısını azaltma

  • Tüm öğe kümelerini düşünmek mümkün değil.
    • Hatta onları listelemek bile mümkün değil.
  • Bir öğe kümesini değerlendirmeden nasıl eleyebiliriz?
    • Maksimum $k$ değeri belirlenebilir.
  • Apriori algoritması alternatif sunar.
    • Tüm öğe kümelerini listelemeyi gerektirmez.
    • Mantıklı bir budama kuralı sağlar.
Python ile Market Basket Analysis

Apriori ilkesi

  • Apriori ilkesi.
    • Sık kümelerin alt kümeleri de sıktır.
    • Sık olduğu bilinen kümeleri tut.
    • Sık olduğu bilinmeyenleri buda.
  • Candles = Seyrek
    • -> {Candles, Signs} = Seyrek
  • {Candles, Signs} = Seyrek
    • -> {Candles, Signs Boxes} = Seyrek
  • {Candles, Signs, Boxes} = Seyrek
    • -> {Candles, Signs, Boxes, Bags} = Seyrek
Python ile Market Basket Analysis

Apriori uygulaması

# Apriori algoritmasını içe aktar
from mlxtend.frequent_patterns import apriori

# One-hot kodlanmış hediyelik veri setini yükle
onehot = pd.read_csv('datasets/online_retail_onehot.csv')

# Başlığı yazdır.
print(onehot.head())
    50'S CHRISTMAS GIFT BAG LARGE ...  ZINC WILLIE WINKIE  CANDLE STICK  \
0                           False ...              False   
1                           False ...              False   
2                           False ...              False   
3                           False ...              False   
4                           False ...              False
Python ile Market Basket Analysis

Apriori uygulaması

# Sık öğe kümelerini hesapla
frequent_itemsets = apriori(onehot, min_support = 0.0005, 
                            max_len = 4, use_colnames = True)

# Öğe kümesi sayısını yazdır
print(len(frequent_itemsets))
3652
Python ile Market Basket Analysis

Apriori uygulaması

# Öğe kümelerini yazdır
print(frequent_itemsets.head())
      support                          itemsets
0     0.000752  ( 50'S CHRISTMAS GIFT BAG LARGE)
1     0.001504              ( DOLLY GIRL BEAKER)
...
1500  0.000752  (PING MICROWAVE APRON, FOOD CONTAINER SET 3 LO...
1501  0.000752  (WOOD 2 DRAWER CABINET WHITE FINISH, FOOD CONT...
...
Python ile Market Basket Analysis

Hadi pratik yapalım!

Python ile Market Basket Analysis

Preparing Video For Download...