Apriori Algoritması

Apriori algoritmasının bir örnek üzerinde anlatımı.

Ahmet Çotur
5 min readSep 7, 2019

Özet

Bu yazıda Birliktelik Kuralları yöntemlerinden birisi olan Apriori Algoritmasının uygulanışı bir örnek üzerinden anlatılıp gerekli hesaplamaların nasıl yapıldığı anlatılacaktır.

Birliktelik Kuralı

Olayların birlikte gerçekleşme durumlarını çözümleyen veri madenciliği yöntemlerine Birliktelik Kuralı yöntemleri denir. Birliktelik kuralı, geçmiş verilerin analiz edilerek bu veriler içindeki birliktelik davranışlarının tespiti ile geleceğe yönelik çalışmalar yapılmasını destekleyen bir yaklaşımdır. Birliktelik kuralı uygulamasına pazar sepeti analizi örnek verilebilir. Birliktelik kuralındaki amaç; alışveriş esnasında müşterilerin satın aldıkları ürünler arasındaki birliktelik ilişkisini bulmak, bu ilişki verisi doğrultusunda müşterilerin satın alma alışkanlıklarını tespit etmektir. Satıcılar, keşfedilen bu birliktelik bağıntıları ve alışkanlıklar sayesi ile etkili ve kazançlı pazarlama ve satış imkanına sahip olmaktadırlar. Örneğin, bir marketten müşterilerin süt ve peynir satın alımlarının % 70’inde bu ürünler ile birlikte yoğurt da satın alınmıştır. Bu tür birliktelik örüntüsünün tespit edilebilmesi için, örüntü içinde yer alan ürünlerin birden çok satın alma hareketinde birlikte yer alması gerekir.

Apriori Algoritması

Apriori Algoritmasının ismi, bilgileri bir önceki adımdan elde ettiği için “prior (önceki)” anlamında Apriori’dir. Bu algoritma temelinde iteratif (tekrarlayan) bir niteliğe sahiptir ve hareket bilgileri içeren veri tabanlarında sık geçen öğe kümelerinin keşfedilmesinde kullanılır.

Birliktelik kuralı madenciliği, tüm sık geçen öğelerin bulunması ve sık geçen bu öğelerden güçlü birliktelik kurallarının üretilmesi olmak üzere iki aşamalıdır. Birliktelik kuralının ilk aşaması için kullanılan Apriori Algoritması, sık geçen öğeler madenciliğinde kullanılan en popüler ve klasik algoritmadır. Bu algoritmada özellikler ve veri, “boolean” ilişki kuralları ile değerlendirilir.

Market Örneği

Farklı kategorilerde ürün satışının yapıldığı bir marketin, önceki satışlarına Apriori Algoritması uygulayıp Birliktelik Kuralları çıkarmak istiyoruz. Marketin tüm satış verileri aşağıda gösterilmiştir.

Satış Fişleri
Satış Fişlerinin Listesi

İlk olarak bu verileri düzenlememiz gerekiyor. Elimizdeki satış fişlerinin bulunduğu tablodan bir boolean biçimli tablo oluşturmalıyız. Boolean biçimli tablo, tüm satılan ürünlerin özellik olarak yazıldığı ve her özelliğin var olma/olmama durumlarının gösterildiği tablodur. Bu tablo aşağıda gösterilmiştir.

Boolean Tablosu
Ürünlerin satış fişi üzerinde var olma durumu 1 iken var olmama durumu 0 olarak işaretlidir.

Algoritmanın ilk adımına geçmeden önce Frekans(tekrar sayısı), Support(destek) ve Minimum Support değerlerini açıklamamız gerekiyor.

Bir ürünün toplam satış miktarına(tekrar sayısına) frekans ismi verilmektedir.
Ekmeğin Frekans Değeri = 6
Çerezin Frekans Değeri = 2

Support(destek) değeri, her bir ürünün/özelliğin frekans değeri ile toplam girdi sayısının bölümünden oluşur. Dolayısı ile sınırları 0–1 arasındadır.
Support = Frekans / Toplam Girdi

Minimum Support değeri ise bizim tarafımızdan belirleniyor olup değişiklik gösterebilir.

Bu örnek için kullanacağımız Minimum Support değeri %40'tır.

Birinci Adım

Apriori algoritmasının ilk adımı, elimizde bulunan verilerdeki her ürünün frekans değerinin (tekrar sayısının) bulunup, support değerlerinin hesaplanmasıdır. Her ürünün tablomuzda kaç kez bulunduğunu tek tek saydığımızda oluşan frekans ve support tablosu aşağıda gösterilmiştir.

(C1) Ürünlerin Frekans ve Support Değerleri

Yukarıda bulunan tabloda, her ürünün toplam satış miktarı ile support değerleri bulunmaktadır. Bir sonraki adımda ise minimum support değerinin altında kalan ürünlerin elemesini yapacağız.

Ekmeğin destek değeri :
6 (frekans) / 7 (toplam fiş sayısı) = 0.85 olarak hesaplanır.

Çerezin destek değeri:
2 (frekans) / 7 (toplam fiş sayısı) = 0.28 olarak hesaplanır.

İkinci Adım

Bu adımda ise daha önce belirlediğimiz Minimum Support değerine eşit veya üstünde bir Support değerine sahip ürünlerimiz ile yeni bir tablo oluşturacağız. Minimum Support değeri %40 olarak tanımlanmıştı. Girdi adedimiz 7 olduğuna göre Minimum Frekans değerimiz 7*0.4= 2.8 ‘dir. Bu değerin altında frekans değeri olan ürünler bir sonraki tabloya dahil edilmeyeceklerdir.

(L1) Yeni oluşturulan tablo

Yeni tablomuzu oluşturduktan sonra elimizde kalan değerlerin birlikte olma durumlarını incelemek için bir tablo daha oluşturacağız. Oluşturacağımız tablo, yukarıdaki ürünlerin 2'li kombinasyonlarını barındıracaktır. Dolayısıyla yeni oluşturacağımız tablo 5c2 = 10 adet veri taşıyacaktır.

(C2) Ürünlerin kombinasyonları ve değerleri

Yeni tablomuzu oluşturduktan sonra 1. Adım içerisinde yaptıklarımızı yeni tablomuzda tekrar ediyoruz. Yalnız bu sefer frekans değeri,
her iki ürünün aynı anda var olma durumunu belirtmektedir. Örnek olarak

Ekmek ve Süt, 5 adet satış fişinde aynı anda bulunmuşlardır.
Ekmek ve Kola, 2 adet satış fişinde aynı anda bulunmuşlardır.

Bu tablo için de Minimum Support değerine eşit veya yüksek Support değerine sahip olan birliktelikler ile yeni bir tablo oluşturacağız ve sonra tekrar kombinasyonlarını bulacağız ve tekrar tabloları oluşturacağız. Bu işlem, oluşturabildiğimiz en yüksek değerli tablo olana kadar devam edecektir. Oluşturulan tablolar ve en son oluşan tablo aşağıda gösterilmektedir.

Son tablomuz L3. Elimizdeki verilerden 4'lü tablo oluşturulamıyor.

Yukarıda gösterildiği üzere tablolarımız oluşturulmuştur. Elimizdeki veriler ile oluşturduğumuz 4 adet 3'lü birliktelik vardır. 4'lü birliktelikler oluşturulamıyor veya oluşturulsa bile gerekli Mimimum Support değerini karşılamıyorlardır.

Üçüncü Adım

Oluşturduğumuz son Birliktelikler Tablosu’ndan kurallar çıkarımı bu adımda gerçekleşecektir. Bu yazıda örnek olması amacıyla sadece
Ekmek, Süt, B.Bezi” birlikteliğinin kuralları çıkarılacaktır.

Ekmek, Süt, B.Bezi” birlikteliğinden toplam 8 adet Birliktelik Kuralı çıkarılabilir. {Ekmek, Süt, B.Bezi} kümesinin tüm alt kümeleri adedi kadar birliktelik kuralı bulunur.

{Ekmek, Süt, B.Bezi} için Birliktelik Kuralları

Yukarıda {Ekmek, Süt, B.Bezi} için çıkarılan Birliktelik Kuralları verilmiştir. Bu kuralların bir takım değerlerini bulmamız gerekiyor.

Bulacağımız değerler aşağıda sıralanmıştır.
1. Confidence (Güven)
2. Lift (İlginçlik)
3. Conviction
4. Leverage
5. Coverage

Bu değerler arasından genellikle kullanacağımız iki değer vardır.
Confidence (Güven) ve Lift (İlginçlik).

Yukarıda bulduğumuz Birliktelik Kurallarının değerlerini bulmadan önce hepsinin formülleri aşağıda belirtilmiştir.

Confidence(Güven) değerinin formülü

Confidence değeri 0 ile 1 arasındadır. Yüksek değer kuralımızın çok güvenli(doğru) olduğunu belirtir.

Lift(İlginçlik) değerinin formülü

Lift değeri 0 ile ∞(sonsuz) arasındadır. Yüksek değer, kuralımızın ilginç olduğunu gösterir.

Conviction değerinin formülü
Leverage değerinin formülü
Coverage değerinin formülü

Aşağıdaki tabloda, kurallarımızın hesaplamaları yapımıştır.

Hesaplamalar Tablosu

Yukarıda yapılan hesaplamalardan aşağıdaki çıkarımlar yapılabilir.

{Süt ve Bebek Bezi} ürünlerini alan müşterilerin Ekmek alma olasılı %80'dir

Ekmek alan müşterilerin {Süt ve Bebek Bezi} ürünlerini de alma olasılığı %67'dir.

Sonuç

Apriori Algoritması, verilerimizin üzerinden istatistiksel yöntemler ile tahmin edilemeyen çıkarımlar yapabilir ve bu sayede ileriye dönük analizler yapmak veya kararlar almak mümkün olur.

--

--

Ahmet Çotur

A member of Computer Science. twitter: @CoturAhmet github: cotur