Frequent Pattern Mining ve Apriori Algoritması

Kasim Yuksel
Vakıf Katılım Ar-Ge Merkezi
5 min readJul 21, 2023

Bu yazıda, Apriori algoritmasıyla frequent pattern mining konusuna odaklanacağız. Apriori algoritması, sıklıkla kullanılan bir algoritmadır ve veri kümesindeki sık desenleri bulmak için kullanılır.

Veri madenciliği, günümüzde giderek artan miktardaki verilerle başa çıkmak ve bu verilerden anlamlı bilgileri çıkarmak için önemli bir araçtır. Büyük ve karmaşık veri kümelerinde, içerisinde gizlenmiş değerli bilgileri keşfetmek, iş dünyasında, akademide, tıpta ve birçok başka alanda stratejik kararlar almak için kritik bir öneme sahiptir.

Frequent pattern mining, veri madenciliğinin temel bileşenlerinden biridir ve veri kümesinde sık tekrarlanan desenleri tespit etmeyi amaçlar. Sıklıkla birlikte görülen öğelerin ve örüntülerin analiz edilmesi, birçok uygulama alanında değerli içgörüler sağlayabilir. Özellikle pazarlama ve perakende sektörlerinde, müşteri davranışlarının anlaşılmasında, ürün kategorileri arasındaki ilişkilerin ortaya çıkarılmasında, öneri sistemlerinin geliştirilmesinde ve satışların artırılmasında kullanılan önemli bir tekniktir.

Apriori Algoritması:

Apriori algoritması, Rakesh Agrawal ve Ramakrishnan Srikant tarafından 1994 yılında geliştirilmiştir ve frequent pattern mining alanında en popüler algoritmalardan biridir. Temel fikri, “a priori” olarak adlandırılan, yani önceden bilinen bilgileri kullanarak sık desenleri tespit etmektir.

Apriori algoritması, veri kümesini sonlu bir dizi öğe kümesi (itemset) olarak düşünür. Algoritma, başlangıçta tekli öğe kümeslerinin (itemset) desteğini (support) hesaplar ve bu desteği minimum desteğe göre filtreler. Daha sonra, birleştirme (join) ve kesme (prune) adı verilen işlemleri kullanarak yeni ve daha büyük öğe kümesi (itemset) oluşturur.

Örnek olarak, bir süpermarketin alışveriş sepeti verileri, frequent pattern mining ile analiz edilebilir. Veri madenciliği algoritmaları, bu veri kümesinde sıkça birlikte görülen ürün kombinasyonlarını ve müşteri alışkanlıklarını belirleyebilir. Örneğin, “ekmek” alışveriş yapan müşterilerin %80'inde “süt” de alıyorsa, bu bir sık desen olarak kabul edilir ve süpermarket bu bilgiyi ürün yerleşiminde veya kampanyalarında kullanabilir.

Apriori Algoritmasının uygulanış adımları ve örnekler

1.) Veri Kümesinin Hazırlanması:

  • İlk adım, analiz edilecek veri kümesinin hazırlanmasıdır. Veri kümesi, öğelerin (items) ve bunların oluşturduğu alışveriş sepetleri, hastalık semptomları, kullanıcı davranışları vb. gibi ilişkili verileri içerir.

*Örnek veri setlerini bu linkte bulabilirsiniz: http://archive.ics.uci.edu/ml

2.) Support Belirleme:

  • Apriori algoritmasında, veri kümesindeki sık desenleri bulmak için bir minimum support değeri belirlenir. Support, bir desenin veri kümesinde kaç kez geçtiğini ifade eder ve genellikle yüzde cinsinden ifade edilir. Bu değer, analiz edilen veri kümesine ve uygulamanın gereksinimlerine bağlı olarak değişebilir.

3.) 1-Öğeli (1-Itemset) Frequent Patternlerin Bulunması:

  • İlk olarak, veri kümesi taranır ve her bir öğe (item) için support değeri hesaplanır. Minimum support değerini sağlayan 1-öğeli (1-itemset) frequent patternler belirlenir.

4.) Aday Öğe Kümesinin Oluşturulması:

  • Sonraki adımda, 1-öğeli (1-itemset) frequent patternler kullanılarak aday 2-öğeli (2-itemset) öğe kümeleri oluşturulur. Bunun için, bir önceki adımda belirlenen 1-öğeli (1-itemset) frequent patternlerin birleşimlerinden yeni aday 2-öğeli öğe kümeleri elde edilir.

5.) Aday Öğe Kümesinin Test Edilmesi:

  • Aday 2-öğeli (2-itemset) öğe kümeleri, veri kümesindeki tüm alışveriş sepetleri (transactions) ile karşılaştırılarak support değerleri hesaplanır. Minimum support değerini sağlayan 2-öğeli (2-itemset) frequent patternler belirlenir.

6.) K-Öğeli Aday Öğe Kümelerinin Oluşturulması ve Test Edilmesi:

  • Adım 4 ve 5, k-öğeli aday öğe kümeleri oluşturmak ve test etmek için tekrarlanır. Her adımda, bir önceki adımda belirlenen k-öğeli frequent patternlerin birleşimlerinden yeni aday k+1-öğeli öğe kümeleri elde edilir ve bu aday k+1-öğeli öğe kümeleri veri kümesindeki alışveriş sepetleri ile karşılaştırılarak support değerleri hesaplanır.

7.) Algoritmanın Sonlandırılması:

  • Algoritma, k-öğeli aday öğe kümeleri oluşturulamadığında veya minimum support değerini sağlayan k-öğeli frequent patternler elde edilemediğinde sonlandırılır.

8.) Sonuçların Sunumu:

  • Apriori algoritması sonucunda elde edilen frequent patternler, sıkça görülen öğelerin kombinasyonlarını ve ilişkileri temsil eder. Bu sonuçlar, veri kümesindeki sık örüntülerin ve ilişkilerin anlaşılması ve değerli içgörülerin elde edilmesi için kullanılır.
Apriori algoritması örnek

Örnek veri kümesi ve python ile apriori uygulanaması

Elimizde şu örnek veri kümesini ele alalım. Bu veri kümesi, bir alışveriş sepeti veri kümesini temsil edebilir:

Transaction ID | Items
1 | {Ekmek, Süt, Yumurta}
2 | {Ekmek, Bisküvi, Şeker}
3 | {Süt, Yumurta, Bisküvi}
4 | {Ekmek, Süt, Yumurta, Bisküvi}
5 | {Ekmek, Yumurta, Bisküvi}

Apriori Algoritması Adımları:

  1. İlk olarak, tekli öğe kümesinin (itemset) desteği hesaplanır ve minimum desteğe göre filtrelenir. Minimum desteğimiz 2 olsun.
Itemset     | Support
{Ekmek} | 4
{Süt} | 3
{Yumurta} | 3
{Bisküvi} | 4
{Şeker} | 1
  1. Sonraki adımda, birleştirme (join) işlemi gerçekleştirilir. Yani, tekli öğe kümesi (itemset) ile kendisini birleştirerek çift öğe kümesi oluştururuz ve bu çift öğe kümesinin desteğini hesaplarız. Ardından, minimum desteği sağlamayan çift öğe kümesini eleriz.
Itemset            | Support
{Ekmek, Süt} | 3
{Ekmek, Yumurta} | 3
{Ekmek, Bisküvi} | 4
{Süt, Yumurta} | 2
{Süt, Bisküvi} | 3
{Yumurta, Bisküvi} | 4
  1. Kesme (prune) adımında, çift öğe kümesini kullanarak üçlü öğe kümesi oluşturulur ve minimum desteği sağlamayan üçlü öğe kümesi elenir. Bu adım bir sonraki öğe kümesi için de tekrar edilir.
  2. Bu işlem, frequent patternlerin bulunana kadar devam eder. Minimum desteği sağlayamayan öğe kümeleri elenir ve kalanlar frequent pattern olarak kabul edilir.

Apriori Algoritması Kod Örneği:

Python ile Apriori algoritmasını uygulamak için mlxtend kütüphanesini kullanabiliriz. Bu kütüphane sık desenleri (frequent pattern) bulmak için kullanışlı bir apriori fonksiyonu sağlar.

from mlxtend.frequent_patterns import apriori
from mlxtend.preprocessing import TransactionEncoder
import pandas as pd

data = [
['Ekmek', 'Süt', 'Yumurta'],
['Ekmek', 'Bisküvi', 'Şeker'],
['Süt', 'Yumurta', 'Bisküvi'],
['Ekmek', 'Süt', 'Yumurta', 'Bisküvi'],
['Ekmek', 'Yumurta', 'Bisküvi']
]

te = TransactionEncoder()
te_data = te.fit(data).transform(data)
df = pd.DataFrame(te_data, columns=te.columns_)


frequent_itemsets = apriori(df, min_support=0.4, use_colnames=True)


print(frequent_itemsets)

Bu örnek kodda, veri kümesini TransactionEncoder kullanarak uygun formata dönüştürdük ve Apriori algoritmasını apriori fonksiyonu ile uyguladık. min_support parametresi, sık desenleri (frequent pattern) tespit etmek için kullanılan minimum support değerini belirler. Bu değer, veri kümesinin boyutuna, analiz amacına ve kullanıcının tercihlerine bağlı olarak değiştirilebilir.(syf. 245)

Elde ettiğimiz frequent_itemsets sonucu, frequent patternleri ve onların support değerlerini içeren bir veri çerçevesidir. Bu çıktı, veri kümesindeki sık desenleri görsel olarak anlamamıza ve önemli ilişkileri belirlememize yardımcı olur.

Ayrıca, use_colnames=True parametresini apriori fonksiyonuna ekledik, böylece sonuç çerçevesinde öğe (item) isimlerinin yerine veri kümesindeki öğe isimleri görüntülenir. Bu, sonuçların anlaşılabilirliğini artırır.

Apriori algoritmasının uygulanması, veri kümesinin büyüklüğüne ve karmaşıklığına bağlı olarak zaman alıcı olabilir. Büyük veri kümeleriyle çalışırken, performansı artırmak için ilgili veri yapısı ve algoritma optimizasyonları kullanılabilir. Ayrıca, minimum support değerinin doğru bir şekilde ayarlanması, algoritmanın doğruluğu ve verimliliği açısından önemlidir.

Sonuç olarak, Apriori algoritması, veri madenciliğinde frequent pattern mining için sık kullanılan ve etkili bir yöntemdir. Analiz edilen veri kümesindeki sık desenleri ve ilişkileri belirlemek için bu algoritmayı kullanarak, verilerdeki önemli bilgileri keşfedebilir ve daha iyi kararlar alabiliriz.

Referanslar:

http://archive.ics.uci.edu/ml

http://myweb.sabanciuniv.edu/rdehkharghani/files/2016/02/The-Morgan-Kaufmann-Series-in-Data-Management-Systems-Jiawei-Han-Micheline-Kamber-Jian-Pei-Data-Mining.-Concepts-and-Techniques-3rd-Edition-Morgan-Kaufmann-2011.pdf

--

--

Vakıf Katılım Ar-Ge Merkezi
Vakıf Katılım Ar-Ge Merkezi

Published in Vakıf Katılım Ar-Ge Merkezi

Vakıf Katılım Ar-Ge Merkezi, Kasım 2017'de Türkiye Cumhuriyeti Sanayi ve Teknoloji Bakanlığı tarafından sertifikalandırılmıştır. Merkezimiz 104 araştırmacı ve 4 teknisyenden oluşan 108 kişilik ekibiyle projelerini geliştirmeye devam ediyor.

Kasim Yuksel
Kasim Yuksel

Written by Kasim Yuksel

Marmara Üniversitesi - Bilgisayar Mühendisliği | RPA Developer @Vakıf Katılım