Apriori Algoritması
Veri Madenciliği alanında Birliktelik Kuralları Yönetimi (Association Rule Mining) konusu altında yer alan ve sıkça kullanılan apriori algoritmasından bahsedelim. Bir veri setini adım adım keşfetmeye ve veri kümesi içerisinde bulunan verilerin birliktelik kurallarını inceleyen algoritmadır. Bu algoritmanın en bariz örneği alışveriş sepetidir. Bir alışveriş sepetinde bulunan ürünlerden yola çıkarak ya da alışveriş fişlerinden yola çıkarak hangi ürünün ne kadar satıldığı ve hangi ürünlerin birlikte satıldığını öğrenmek için sıkça kullanılan bir algoritmadır.
Geçmiş verilerel bakarak olasılık hesaplama yöntemleri arasında da geçen bu algoritmayı şu şekilde yorumlayabiliriz.
Algoritma da kullanılan bir eşik değeri/destek değeri olarak da geçen (support value) veri kümesinin gerçekleştirim değeridir. Örneğin şunu diyebiliriz. Bir ürün veri kümesinde 3 den az satıldıysa bu ürünü kampaya veya herhangi bir işleme tabi tutmadan devamında bir sonraki adıma birliktelik kuralı dahilinde geçebilmemizi sağlayan değerdir.
Bu örnekte support (destek , eşik) değerimizi 0.3 olarak belirliyorum.
Veri Setimiz olsun.
{ {A,B} , {B,C,D} , {A,C,D,E}, {A,D,E} , {A,B,C} , {A,B,C} , {A,B,C,D} , {A} , {A,B,C} {A,B,D} , {B,C,E} }
Yukarıda ki verileri alılveriş fişindeki ürünler olarak da düşünebilirsiniz. Örneğin birinci müşteri a ürünün yanında b ürününü de almış gibi yorumlayabiliriz. Öncelikle her elemanın frekans değerini bulmakta fayda var.
Frekans değeri ilgili elemanın toplamda ne kadar kullanıldığı ya da örneğimiz üzerinden gidecek olursak bir ürünün ne kadar satıldığıdır.
A | 0.8 |
---|---|
B | 0.7 |
C | 0.6 |
D | 0.5 |
E | 0.3 |
Tablodan da göreceğiniz üzere toplam alışveriş sayısı 10 , a ürünün satıldığı alışveriş sayısı 8 bu yüzden a ürünün frekansına 0,8 dedik.
Apiori Algoritmasının 1. aşaması bu şekilde şimdi gelelim 2. aşamaya.
Birlikte satın alınan ürünlerin support (destek , eşik) değeri 0.3 ün altındaysa o alışverişi gözardı edebilirsiniz.
A , B | 0.5 |
---|---|
A , C | 0.4 |
D, A | 0.4 |
B , C | 0.5 |
D , B | 0.3 |
D , C | 0.3 |
Yukarıda ki tablodan şunu çıkarabiliriz. (ilk satırından) A ve B ürünleri birlikte tüm alışverin yarısında satılmış demek. Bizim eşik değerimiz 0.3 dü. Yani eşik değerinin üstünde ki eğri de seyir ettiği için bizim için önemli bir bilgi haline geldi. Tabloda ki diğer alılveriş de aynı şekilde farkettiyseniz 0.3 ün altında kalan alışverişleri tabloya dahil etmedik çünkü eşik değerimizin altında.
Bir adım daha ilerlediğimiz zaman.
A , B , C | 0.3 |
---|---|
yukarıda ki tablo oluşacaktır. ve algoritma burada bitecektir. Çünkü veri setimizde 0.3 değeri veya üzerinde başka herhangi bir support değeri bulunmamakta.
Sonuç
Buradan sonuç olarak şu çıkarım yapılabilir. içinde {A,B,C} ürünleri geçen alışverişler en çok satılanlardır. Yani A , B ve C ürünü birlikte en çok satılan üründür diyebiliriz.
Bu algoritmanın örnek kodlarına (java) github hesabımdan ulaşabilirsiniz.