Apriori Algoritması Nasıl Çalışır?
Apriori, işlem veri tabanlarında birlikte görülen ürün veya olayları bulmak için kullanılır. Algoritma yinelemeli çalışır: önce her öğenin tek başına kaç işlemde geçtiği hesaplanır (1-öğe kümeleri). Minimum destek eşiğini aşanlar tutulur, kalanlar elenir. Bu sık kümeler birleştirilerek 2-öğe adayları oluşturulur ve veritabanı yeniden taranarak sayımları yapılır. Anahtar optimizasyon, 'downward closure' (Apriori) özelliğidir: bir öğe kümesi sıksa tüm alt kümeleri de sık olmalıdır; bu kural herhangi bir alt kümesi seyrek olan adayları tarama yapılmadan elemeyi mümkün kılar. Bu süreç sık kümeler kalmayıncaya kadar tekrarlanır.
Üç Temel Ölçüt
📊 Destek (Support)
Bir öğe kümesinin tüm işlemler içindeki görünme oranı. Formül: count({A,B}) / N. Örnek: 10.000 işlemden 2.000'inde ekmek ve tereyağı birlikte satın alınmışsa destek = %20.
🎯 Güven (Confidence)
Kural olasılığı: A alanların kaçı B'yi de alıyor? conf(A→B) = support(A,B) / support(A). Güven %80 demek, A satın alındığında %80 ihtimalle B de alınıyor anlamına gelir.
⚡ Kaldıraç (Lift)
Lift = conf(A→B) / support(B). Lift > 1 ise ilişki rasgele birlikteliğin ötesinde; lift = 1 bağımsızlık; lift < 1 negatif ilişki. Çapraz satış kararlarında en önemli ölçüt budur.
Market Sepeti Analizi: Pratik Örnek
Klasik uygulama senaryosu süpermarket kasasından gelen işlem verileridir. Apriori çalıştırıldığında 'bira → bez bebek bezi (lift=1.8)' gibi sezgisel olmayan ilişkiler ortaya çıkabilir. Bu bulgu, mağazaların o iki ürünü kasaya yakın birlikte yerleştirmesiyle satışı artırmak için kullanılmıştır. Türkiye'de e-ticaret platformları ürün öneri widgetlarında ('Bunu alanlar şunu da aldı'), perakende zincirleri de fırsat paketi oluşturmada benzer birliktelik analizi tekniklerinden yararlanmaktadır.
Apriori ve FP-Growth Karşılaştırması
Apriori her k boyutunda veritabanını baştan tarar; büyük veri setlerinde bu çok sayıda G/Ç işlemi anlamına gelir. FP-Growth algoritması veritabanını yalnızca iki kez tarayarak bir FP-Ağacı (FP-Tree) yapısı oluşturur ve sık kümeleri aday üretmeksizin bu ağaçtan çıkarır. Sonuç olarak FP-Growth büyük ölçekte belirgin biçimde daha hızlıdır. Python'da her ikisi de mlxtend.frequent_patterns kütüphanesiyle uygulanabilir; büyük ölçekli işlemler için PySpark MLlib'in FP-Growth implementasyonu tercih edilir.
Sık Sorulan Sorular
- check_circle Minimum destek eşiğini nasıl belirlerim?: Veri setinizin boyutuna ve alanın beklentilerine göre değişir. Genellikle %1-10 arasında deneme yaparak başlanır. Çok düşük eşik çok fazla kural üretir ve gürültü artar; çok yüksek eşik anlamlı nadir örüntüleri gözden kaçırır. Domain uzmanıyla iş bağlamına göre kalibre edilmesi önerilir.
- check_circle Apriori Python'da nasıl kullanılır?: pip install mlxtend komutuyla kurulur. mlxtend.frequent_patterns.apriori fonksiyonu one-hot encode edilmiş DataFrame'i alır ve min_support parametresiyle sık kümeleri döndürür. association_rules fonksiyonu bu kümelerden güven ve lift değerleriyle kurallar oluşturur. Örnek: apriori(df, min_support=0.05, use_colnames=True).
- check_circle Apriori ile öneri sistemi kurabilir miyim?: Evet, işlem bazlı öneri için etkili bir yöntemdir. Kullanıcının sepetindeki ürünlere yüksek güvenli kuralların ardılları öneri olarak sunulur. Ancak büyük ürün kataloğunda ölçeklenmesi zorlaşır; bu durumda matris çarpanlara ayırma (matrix factorization) veya derin öğrenme tabanlı öneri sistemleri daha pratik olabilir.
- check_circle Apriori sadece alışveriş verilerinde mi kullanılır?: Hayır. Tıbbi tanı örüntüleri (belirtiler↔hastalık), web tıklama akışı analizi, siber güvenlik saldırı örüntü tespiti, metin madenciliğinde birlikte geçen terimler ve sosyal ağ analizi de yaygın uygulama alanlarıdır. Herhangi bir 'işlem + öğe' yapısına uygulanabilir.
- check_circle Apriori ile diğer sınıflandırma algoritmalarının farkı nedir?: Apriori gözetimsiz bir algoritma ve birliktelik kuralı madenciliği yöntemidir; bir hedef değişkeni tahmin etmez. Decision tree veya random forest gibi sınıflandırıcılar ise etiketli veriyle çalışır ve belirli bir çıktıyı tahmin etmek için eğitilir. Apriori, 'ne birlikte oluyor?' sorusunu yanıtlarken sınıflandırıcılar 'bu giriş hangi sınıfa ait?' sorusunu yanıtlar.