Apriori Algoritması Nedir? Birliktelik Kuralı Madenciliği (Apriori Algoritması)

İşlem veri tabanlarında sık birlikte görülen öğe kümelerini ve 'A alanlar B'yi de alır' tipindeki birliktelik kurallarını bulan veri madenciliği algoritması.

Apriori, işlem veritabanlarındaki sık geçen öğe kümelerini (frequent itemsets) bulmak ve bunlardan birliktelik kuralları (association rules) çıkarmak için kullanılan temel veri madenciliği algoritmasıdır. Rakesh Agrawal ve Ramakrishnan Srikant tarafından IBM'de geliştirilerek 1994 VLDB konferansında yayımlanan bu yöntem, özellikle market sepeti analizi alanında devrim yaratan bir teknik oldu. Algoritma üç temel ölçüte dayanır. Destek (Support), bir öğe kümesinin tüm işlemler içindeki görünme oranıdır. Güven (Confidence), bir öncül kümesi satın alındığında ardıl kümesinin de satın alınma olasılığını ifade eder. Kaldıraç (Lift), gözlemlenen destek ile rasgele beklentinin oranıdır; lift>1 ise iki öğe arasında pozitif bir korelasyon vardır. Algoritma yinelemeli (iterative) bir yaklaşımla çalışır. İlk adımda her ürünün tek başına minimum destek eşiğini geçip geçmediği kontrol edilerek sık 1-öğe kümeleri belirlenir. Ardından bu sık kümeler birleştirilerek aday k-öğe kümeleri oluşturulur. Burada Apriori'nin güç noktası devreye girer: bir öğe kümesinin sık olması için tüm alt kümelerinin de sık olması zorunludur (downward closure özelliği). Bu kural, herhangi bir alt kümesi seyrek olan adayları tarama yapılmadan elemeye olanak tanır ve hesaplama maliyetini önemli ölçüde azaltır. Her adımda veritabanı taranarak destek sayımı yapılır; minimum destek eşiğinin altındakiler elenerek bir sonraki adıma geçilir. Pratik bir örnekle açıklamak gerekirse: 10.000 süpermarket işleminden 3.000'inde {ekmek, tereyağı} birlikte satın alınmışsa destek %30'dur. Ekmek alanların %72'si tereyağı da almışsa güven %72'dir. Bu durumda kaldıraç 1'den büyük olduğundan bu kural rasgele birlikteliğin ötesinde anlamlı bir ilişkiye işaret eder; çapraz satış veya raf düzenleme kararı için kullanılabilir. Algoritmanın temel sınırlılığı her öğe kümesi boyutu için veritabanının baştan taranmasıdır; büyük veri setlerinde bu çok sayıda G/Ç işlemi anlamına gelir. FP-Growth algoritması tek geçişte bir ağaç (FP-Tree) yapısı oluşturarak bu sorunu büyük ölçüde ortadan kaldırır ve pratikte Apriori'nin yerini almıştır. Python'da mlxtend.frequent_patterns.apriori fonksiyonuyla, büyük ölçekte ise PySpark MLlib'in FP-Growth implementasyonuyla kolayca uygulanabilir. Kullanım alanları arasında e-ticaret ürün öneri sistemleri, tıbbi tanı örüntü tespiti, web kullanım madenciliği, dolandırıcılık tespiti ve ağ güvenliği anomali analizi öne çıkar. Türkiye'deki e-ticaret platformları ve perakende CRM sistemleri bu tür birliktelik analizine dayanmaktadır.

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.