• Sonuç bulunamadı

3.4 Veri Madenciliğinde Karşılaşılan Problemler

3.5.2 Apriori Algoritması

Apriori algoritması, Agrawal ve diğerleri tarafından 1994 yılında geliştirilen en çok bilinen birliktelik kuralları algoritmalarındandır. Algoritmanın ismi, bilgileri bir önceki adımdan almasından dolayı “önceki (prior)” anlamında “apriori” konmuştur. Algoritma sık kullanılan öğe kümelerinin tüm altkümeleri de sık kullanılan olmalıdır kuralına dayanmaktadır. Bu kümeleri bulmak için birçok kez veri tabanını taramak gerekmektedir. Minimum destek ölçütünü sağlayan tek elemanlı sık geçen öğe kümelerini ilk taramada bulmaktadır. Diğer taramalarda, bir önceki taramada tespit edilen sık geçen kümeler, yeni sık geçen öğe kümelerini üretmek için kullanılmaktadır. Tarama sırasında aday kümelerin destek değerleri hesaplanır. Minimum destek değerini sağlayan kümeler o kısımda üretilen sık geçen öğe kümeleri olmaktadır. Sık geçen öğe kümeleri, yeni bir sık geçen öğe kümeleri bulunmayana kadar bir sonraki geçiş için aday küme olmaktadırlar (Han ve Kamber 2001) .

Apriori algoritmasının temel yaklaşımı bir öğe kümesi minimum destek ölçütünü sağlarsa bu kümenin alt kümeleri de minimum destek ölçütünü sağlamalıdır kuralına dayanır. Bakılan öğeler kümesinin destek değeri daima alt kümelerinin destek değerlerinden büyük olmaktadır.

Eğer bir nesneküme sık geçen ise bu kümenin boş olmayan altkümeleri de sık geçen nesne küme olmalıdır. Eğer X sık geçmeyen nesne kümesine B nesnesi eklenirse, kümenin son hali X U B olur. X U B kümesi, X kümesi sık geçen olmadığı için sık geçen değildir (Sever ve Oğuz 2002). Şekil 3.2’de Apriori algoritmasının akış diyagramı görülmektedir.

Apriori özelliği, Şekil 3.3’de görüldüğü gibi ;{c, d, e} kümesinin bir sık geçen nesne küme olduğu varsayılırsa, her işlemin bu kümenin alt kümeleri olan {c, d}, {c, e},{d, e}, {c}, {d} ve {e} kümelerini de içerdiği görülür. Sonuç olarak da, {c, d, e} sık geçen nesneküme ise bütün alt kümeleri de sık geçen nesneküme olmalıdır (Gülce 2010)

29

Şekil 3.2 Apriori algoritması akış diyagramı(Gülce 2010)

30

Şekil 3.4 Apriori budama işleminin grafiksel gösterimi(Gülce 2010)

Minimum destek değerinin altında kalarak sık olmayan bir nesneküme tespit edilirse, bütün üst kümeleri de sık olmayan nesneküme olmuş olur. Şekil 3.4’te gösterildiği gibi {a, b} kümesinin sık olmayan küme olarak tespit edildiğinde, {a, b} kümesini içeren bütün üst kümeler hemen budanabilir (Tan ve ark 2006).

31

Şekil 3.5 Apriori Algoritmasının basitleştirilmiş kodu

Şekil 3.5’te Apriori algoritması ve bu algoritmaya ait alt programların basitleştirilmiş kodu görülmektedir. Basitleştirilmiş kodlar incelediğinde sık geçen öğe kümelerinin tespit edebilmek için birçok kez veri tabanı tarandığı görünmektedir. Madencilik uygulanacak veri tabanı taranarak nesnelerin kaç adet hareket kaydı içinde bulunduğu tespit edilir. Her nesne için tespit edilen bu değere destek sayıcı denir. Destek sayıcı minimum destek değerine eşit veya büyük olan nesnelerin sık geçen 1-

Giriş: Database (D), minimum destek min_sup. Çıkış: L, D de sık olan nesne kümeleri

(1) L1=find_frequent_1-itemsets(D) //large 1-nesnekümeler (2) for (k=2;L(k-1)≠0;k++) {

(3) Ck=apriori_gen(L(k-1), min_sup) // yeni adaylar (4) for each transaction t∈D{ //sayım için D yi tara

(5) Ct=subset(Ck,t); // Aday olan t’ lerin alt kümeleri elde edilir (6) for each candidate c∈Ct

(7) c.count++; (8) }

(9) Lk={ c∈Ck | c.count ≥min_sup } (10) }

(11) return L=Uk Lk;

procedure apriori_gen (L(k-1);min_sup) // (L k–1: sık geçen (k–1)-nesnekümeler) (1) for each itemset l1∈L(k-1)

(2) for each itemset l2∈L(k-1)

(3) if (l1[1]= l2[1] )∧(l1[2]=l2[2]) ∧…∧ (l1[k-1]=l2[k-1]) then { (4) c=l1x l2; // aday nesnelerin üretilmesi

(5) if has_infrequent_subset(c,L(k-1)) then (6) delete c; // gereksiz adayların silinmesi (7) else add c to Ck;

(8) } (9) return Ck;

procedure has_infrequent_subset(c,L(k-1));

// (c: aday k-nesneküme;L k–1: sık geçen (k-1)-nesnekümeler); // prior bilgisini kullan (1) for each (k-1)-subset s of c

(2) if s∉L(k-1) then (3) return TRUE (4) return FALSE

32

nesne kümesi olarak belirlendiği varsayılarak işleme başlanır. Bu işlem algoritmanın 1. satırında 1-elemanlı aday nesneler yani L1 bulunmaktadır.

Özet koddaki döngü ile sık geçen öğe kümesinin nesneleri ikili kombinasyonuna benzer bir biçimde ( L L1 ) birleştirilerek yeni bir küme oluşturulur. Bu oluşan aday 1 öğe kümelere C harfi ile simgelenir. İki adet öğeden oluştuğu için bu aday kümeler C2 ifadesi ile isimlendirilir.

Apriori-gen fonksiyonu ile aday kümeler budanır. Ele alınan nesnelerin tüm alt kümeleri subset fonksiyonu ile bulunarak, öğe kümesinin içinde yer almayan küme elemanları aday kümesinden silinir. Algoritmanın uygulandığı veri seti bir kez daha taranarak budama işlemi uygulanan C2 kümesinin elemanlarına ait alt kümelerinin L1 öğe kümesi içinde yer almayan küme elemanları C2 aday kümesinden atılır. Algoritmada kullanılan veri seti tekrar taranarak C2 aday kümesi elamanlarının destek sayıcı bulunması için kaç kere geçtikleri tespit edilir. Destek sayacı, minimum destek değerinin altında olan C2 aday kümesi elemanları elenir. Sık geçen öğe kümelerinin test edilmesi işlemi de has_infrequent_subset alt programı ile gerçekleştirilmektedir. Kalan elemanlar L2 sık geçen öğe kümesini oluşturur. Budama işlemi Şekil 3.4’te gösterilmiştir. L2 kümesinin üçlü kombinasyonlarını oluşturulmak üzere döngü algoritmaya devam eder.

Bu kombinasyonlarla C3 ifadesi ile sembolleşen yeni aday kümeler oluşturulur. Önceki adımlar yeni aday küme içinde tekrarlanarak minimum destek seviyesinin üstünde kalan elemanlarla L3 sık geçen öğe kümesi oluşturulur. Bu süreç yeni bir sık geçen öğe kümesi bulunamayana kadar döngü her dönüşünde öğe sayısı artarak devam eder.

Veriler üzerinde sık geçen öğe kümeleri tespit edildikten sonra bu öğe kümeleri ile çok güçlü kurallar oluşturulabilmektedir. Minimum destek ve güven değerlerinin her ikisini de sağlayan bu kurallar aşağıdaki güven denklemleri kullanılarak elde edilebilir (Han ve Kamber 2001). ( ) ( ) : ( \ ) ( ) Destekdeğeri A B Güven A B P B A Destekdeğeri A    (3.8)

Destek değeri (A U B), A ve B’nin birlikte bulunduğu öğe sayısıdır. Destek Değeri (A), sadece A’yı içeren öğe sayısıdır.

33

• l öğesini tara ve l’nin boş olmayan alt kümelerini bul. • Her boş olmayan altküme nesnesi için elde edilen kural;

( ) " ( )" min_ ( ) destek l s l s if guv destek s    (3.9)

Denklem 3.9’daki min_guv değeri, minimum güven değeridir. Kurallar, sık geçen öğe kümelerinden üretildiği için her bir kural minimum destek değerini sağlamaktadır. Çizelge 3.1’de birliktelik kurallarını apriori algoritmasıyla bulunması amacıyla örnek bir veri seti verilmiştir.

Çizelge 3.1 Birliktelik kurallarını apriori algoritmasıyla bulunması amacıyla örnek bir veri seti için hareketler ve ürünler

Müşteri Numarası

Aldığı Ürünler

01 Fındık, Fıstık, Leblebi, Badem

02 Nohut, Badem, Ceviz, Fıstık

03 Fındık, Badem, Nohut

04 Fıstık, Leblebi, Badem, Ayçekirdeği, 05 Fındık, Badem, Ceviz, Leblebi

06 Kuru üzüm, Badem, Leblebi

07 Fındık, Mısır, Badem

08 Ceviz, Kayısı, Leblebi

09 Kayısı, Fıstık, Leblebi

10 Leblebi, Kuru üzüm, Fındık, Ceviz, Badem

1-) Minimum destek sayısı 3 olarak ve minimum güven değeri 70 olarak belirlenir.

Çizelge 3.2’de göründüğü gibi algoritmanın ilk iterasyonunda bir elemanlı nesneler kümesi C1 olarak elde edilir. Algoritma, her nesnenin sayısını bulmak için veri tabanını basitçe taramaktadır.

34

Çizelge 3.2 Tekli birlikteliklerin destek değerleri (C1 nesneler kümesi)

Ürün Seti Destek Değeri Fındık 5 Fıstık 4 Leblebi 7 Ceviz 4 Nohut 2 Badem 8 Ayçekirdeği 1 Kuru üzüm 2 Kayısı 2 Mısır 1

Çizelge 3.3’te, L1 tablosunun oluşturulması için, destek değeri, minimum destek değeri olan 3 den küçük olan öğeler devre dışı bırakılır. Bu ürünler Nohut, Ayçekirdeği, Kuru üzüm, Kayısı, Mısır’dır.

Çizelge 3.3 Minimum destek değerini sağlayan ürünler (L1 nesneler kümesi)

Ürün Seti Destek Değeri

Fındık 5

Fıstık 4

Leblebi 7

Ceviz 4

Badem 8

Çizelge 3.4’te, C2 tablosunun oluşturulması için, tekli birliklerden ikili kombinasyonlar elde edilir.

Çizelge 3.4 İkili birliktelikler ve destek değerleri

Ürün Seti Destek Değeri Fındık, Fıstık 1 Fındık, Leblebi 3 Fındık, Ceviz 2 Fındık, Badem 5 Fıstık, Fındık 1 Fıstık, Leblebi 3 Fıstık, Ceviz 2 Fıstık, Badem 3 Leblebi, Fındık 2 Leblebi, Fıstık 3 Leblebi, Ceviz 3

35 Leblebi, Badem 5 Ceviz, Fındık 2 Ceviz, Fıstık 2 Ceviz, Leblebi 3 Ceviz, Badem 3 Badem, Fındık 5 Badem, Leblebi 5 Badem, Ceviz 3 Badem, Fıstık 3

Çizelge 3.5’te, L2 tablosunun oluşturulması için, destek değeri, minimum destek değeri olan 3 den küçük olan 2’li öğeler devre dışı bırakılır.

Çizelge 3.5 İkili birlikteliklerden destek değerini sağlayan setler

Ürün seti Destek Değeri Fındık, Leblebi 3 Fındık, Badem 5 Fıstık, Leblebi 3 Fıstık, Badem 3 Leblebi, Ceviz 3 Leblebi, Badem 5

Çizelge 3.6’da,C3 tablosunun oluşturulması için, üçlü kombinasyonlar meydana getirilir.

Çizelge 3.6 Üçlü birliktelikler ve destek değerleri

Ürün Seti Destek Değeri Fındık, Leblebi, Fıstık 1 Fındık, Leblebi, Badem 3 Fındık, Badem, Fıstık 2 Fındık, Badem, Leblebi 3 Fındık, Badem, Ceviz 2 Fıstık, Leblebi, Fındık 1 Fıstık, Leblebi, Badem 2 Fıstık, Badem, Fındık 1 Fıstık, Badem, Leblebi 2 Fıstık, Badem, Ceviz 1 Leblebi, Ceviz, Badem 2 Leblebi, Ceviz, Fındık 2 Leblebi, Ceviz, Kayısı 1 Leblebi, Badem, Fıstık 2 Leblebi, Badem, Fındık 3 Leblebi, Badem, Ceviz 2

36

L3 tablosunun oluşturulması için, minimum destek değeri olan 3 den küçük olan 3’lü öğeler devre dışı bırakılır.

Çizelge 3.7 Üçlü birlikteliklerden destek değerini aşan ürün setleri

Ürün Seti Destek Değeri Fındık, Leblebi, Badem 3

Çizelge 3.7’de oluşan üçlü veri seti minimum destek değerini sağladığı ve ikili alt kümeleri olan (Fındık, Leblebi), (Fındık, Badem) ve (Leblebi, Badem) de L2 tablosunda yer aldığı için devre dışı bırakılmadan (Fındık, Leblebi, Badem) veri seti kabul edilir.

L3 kümesinde tek bir nesneküme olduğundan dolayı C4 boş kümedir ve algoritma sık geçen bütün nesnekümeleri bulduğundan sonlandırılır.

Çizelge 3.8 Üçlü birlikteliklerden birliktelik kurallarının çıkarılması

Birliktelik Açıklama Güven

Fındık & Leblebi => Badem

Fındık ve Leblebinin bulunduğu sette Bademin olma olasılığı

3/3=%100 Fındık & Badem

=>Leblebi

Fındık ve Bademin bulunduğu sette Leblebinin olma olasılığı

3/5=%60 Leblebi & Badem

=>Fındık

Leblebi ve Bademin bulunduğu sette Fındığın olma olasılığı

3/5=%60 Leblebi =>Fındık &

Badem

Leblebinin bulunduğu sette Fındık ve Bademin olma olasılığı

3/7 = %42 Badem =>Fındık &

Leblebi

Bademin bulunduğu sette Leblebi ve Fındığın olma olasılığı

3/8 = %38 Fındık =>Leblebi

&Badem

Fındığın bulunduğu sette Leblebi ve Bademin olma olasılığı

3/5 = %60

Çizelge 3.8’den çıkan sonuçlara göre minimum güvenilirlik değeri olan %70 barajını geçemeyen kurallar elenir. Güvenlik değerini geçen tek kural (Fındık & Leblebi=>Badem) çıkmıştır. Bu kuralın tersi olan (Badem =>Fındık & Leblebi) kuralının destek değeri %70’in altında olduğu için geçerli bir kural değildir. Kuralları açıklamak gerekirse, Fındık ve Leblebi alan herkes Badem almıştır. Ama Badem alan herkes Fındık ve Leblebi almamıştır.

37

Benzer Belgeler