Anasayfa / Makine Öğrenmesi / Birliktelik Kuralları Analizi / Weka ile Birliktelik Kuralları Analizi (Association Rules Analysis With Weka)

Weka ile Birliktelik Kuralları Analizi (Association Rules Analysis With Weka)

Merhabalar,

Birliktelik Kuralları Analizi hakkındaki son yazıma hoş geldiniz. Bu yazıda java üzerinde veri madenciliği için geliştirilmiş açık kaynak (GNU) makine öğrenmesi yazılımı olan Weka ile Birliktelik Kuralları analizi gerçekleştireceğim. Öncesinde ise Weka hakkında temel bilgiler paylaşacağım. O zaman başlıyoruz 🙂

Hakkında

Weka; “Yeni Zelanda’da uçamayan bir kuş türü olarak bilinse de” aslında makine öğrenimi amacıyla Waikato Üniversitesinde geliştirilmiş ve “Waikato Environment for Knowledge Analysis” kelimelerinin baş harflerinden oluşmuş veri madenciliği yazılımıdır. Günümüzde yaygın olarak kullanılan birçok makine öğrenimi algoritmalarını ve metotlarını içermektedir. Hem Simple CLI (Command Line Interface – Komut Satırı Arayüzü) hem de drag&drop(Sürükle&Bırak) ile kolayca veri madenciliği alanında projeler geliştirebilirsiniz. Python, R Project, Knime ve Java tabanlı diller ve araçlardan Weka’ya bağlanarak içerisinde yer alan ya da Package Manager’a ekleyebildiğiniz 3. Party Extensionlar ile ilgili algoritmaları kullanmak oldukça kolaydır. Java tabanlı olduğu için platform (Windows, Linux, MacOS) bağımsızdır. Aynı zamanda Büyük Veriyi (3V, 4V, 5V ya da 7V) işlemek ve Derin Öğrenme (Deep Learning) alanında kullanabilmekte mümkündür. Weka için resmi kurs notlarına buradan ve youtube kanalına buradan ulaşabilirsiniz. Daha fazla bilgi için resmi web sitesi buradan ziyaret edebilirsiniz.

Üniversite ortamında geliştirilmiş bir Veri Madenciliği Uygulaması: Weka 👏 👏 👏

Weka hakkında paylaşmak istediğim ve bilinmesinde faydalı olduğunu düşündüğüm bir diğer konu; ARFF File Format.

ARFF File Format

Weka içerisinde native bir şekilde kullanabileceğiniz Waikato Üniversitesi tarafından geliştirilmiş olan ARFF(Attribute-Relation File Format) dosya formatına sahiptir. Bu dosya formatı 2 ayrı bileşenden oluşmaktadır. İlk bileşen Header ikinci bileşen ise Data kısmından oluşmaktadır.

Header Bileşeni

Header kısmı içerisinde; Veri Seti Hakkında Bilgisi (Description), Değişken Tanımlamaları (Field Name ve Type) ve diğer bilgiler yer almaktadır. Örnek olması açısından İris veri setine ait header bilgilerini aşağıda paylaşıyorum;

% 1. Title: Iris Plants Database

%

% 2. Sources:

%      (a) Creator: R.A. Fisher

%      (b) Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)

%      (c) Date: July, 1988

%


@RELATION iris

@ATTRIBUTE sepallength  NUMERIC

@ATTRIBUTE sepalwidth   NUMERIC

@ATTRIBUTE petallength  NUMERIC

@ATTRIBUTE petalwidth   NUMERIC

@ATTRIBUTE class        {Iris-setosa,Iris-versicolor,Iris-virginica}


Not: % işareti ile veri seti içerisinde açıklama ve yorum satırları gösterilmektedir.


@RELATION iris ifade ise de veri seti içerisinde kullanılacak değişkenler (fieldname, feature, variable) tanımlanmaktadır.

Data kısmı içerisinde ise; @RELATION kısmında belirtilen değişkenlere ait gözlem değerleri yer almaktadır. Örnek olması açısından İris veri setine ait data bilgilerini paylaşıyorum;

Data Bileşeni

@DATA

5.1,3.5,1.4,0.2,Iris-setosa

4.9,3.0,1.4,0.2,Iris-setosa

4.7,3.2,1.3,0.2,Iris-setosa

4.6,3.1,1.5,0.2,Iris-setosa

5.0,3.6,1.4,0.2,Iris-setosa

5.4,3.9,1.7,0.4,Iris-setosa

4.6,3.4,1.4,0.3,Iris-setosa

5.0,3.4,1.5,0.2,Iris-setosa

4.4,2.9,1.4,0.2,Iris-setosa

4.9,3.1,1.5,0.1,Iris-setosa


ARFF dosya formatı hakkında daha fazla bilgi almak isterseniz buradan ulaşabilirsiniz. Weka, ARFF dosya formatının yanı sıra diğer formatları (csv, json, json.gz, data, vd.) okuyabilmekte ve yazabilmektedir.

Weka içerisinde kullanabileceğiniz veri setlerine buradan ulaşabilirsiniz. İncelediğiniz de bizden içimizden şeyler ile karşılaşacaksınız.

Buyursunlar :

Weka Kurulum

Bu çalışma da şu anda stable (kararlı) sürümü olan 3.8 versiyonunu kullanacağım. Resmi sitedeki download kısmından işletim sisteminize uygun olan sürümünü indirerek kurulumlarını yapabilirsiniz.

Yapılacaklar 1: Linux os (Centos ve Ubuntu) için gerekli kurumları yapıp daha sonra sizler ile paylaşmayı planlıyorum 😊

Kurulum tamamlandıktan sonra Weka’yı açtığımızda (Weka GUI Chooser uyarı ekranını yok sayabilirsiniz) bizi aşağıdaki gibi bir ekran karşılayacaktır.

Resim 1: Weka Ekran Görüntüsü

Weka’da temel olarak değinmek istediğim bir diğer kısım veri madenciliği sürecinin yapıldığı kısım olan Application kısmıdır. Bu kısımda Explorer, Experimenter, KnowledgeFlow, Workbench ve Simple CLI bileşenleri yer almaktadır.

Explorer

Resim 2: Weka Explorer Ekranı

Explorer kısmı; Verilerimizi çeşit kaynaklardan (local, web, database (jdbc driver) ya da uygun bir dağılım yada probleme türüne göre generate ederek yükleyebileceğimiz, keşfedebileceğimiz ve Ön İşleme (Bknz: Filters) süreçlerinden geçirebileceğimiz kısmının yanında; Problemin amacına göre;

  • Sınıflandırma (Classification): Karar Ağaçları, SVM, YSA, Lojistik Regresyon, Bayes Ağları, Bagging, Boosting v.d. algoritmalar;
  • Kümeleme (Clustering): k-means, X-Means v.d. algoritmalar;
  • Birliktelik Analizi (Associate): Apriori, Pre-Apriori v.d. algoritmalar;
  • Değişken Seçilimi & Mühendisliği (Feaute Selection/Engineering) ve Görselleştirme (Visualize) yapabiliriz.

Experimenter

Resim 3: Weka Experimenter Ekranı

Experimenter kısmı; Kurulan modellere ait istatiksel testlerin yapıldığı, oluşan performansların kıyaslandığı ve elde edilen çıktıların veritabanı ve diğer ortamlara aktarıldığı kısımdır.

KnowledgeFlow

Resim 4: Weka KnowledgeFlow Ekranı

KnowledgeFlow kısmı; drag&drop yani sürükle&bırak veri madenciliği modellerini kurabileceğimiz kullanıcı grafik arayüzü (graphicial user interface – gui) kısmıdır. İlgili node’leri stream üzerine sürükle&bırak ile modellerinizi basitçe oluşturabilirsiniz.

Workbench

Resim 5: Weka Workbench Ekranı

Workbench kısmı; Weka’ya ait tüm fonksiyonlara ve modellere ulaşabileceğiniz ve parametrelerini ayarlayabileceğiniz kısımdır. Bu kısımdan ileri düzey değişiklikler yapabilirsiniz.

Simple CLI

Resim 6: Weka Simple CLI Ekranı

Simple CLI kısmı; Weka işlevlerini doğrudan çalıştırmak için sağlanan basit bir komut satırı arayüzüdür. Command Line Interface (Komut İstemi Arayüzü) olup mevcut model çağırma ve parametreleri ayarlama işlemlerini komut istemi kısmından yapabileceğiniz bir ara yüzdür.

Birliktelik Kuralları Algoritmaları

Weka içerisinde Associte kısmında Apriori, FilteredAssociator ve FPGrowth algoritmaları yer almaktadır.

Resim 7: Weka Workbench Associate Ekranı

Kullanacağımız Associate algoritmalarına Explorer, KnowlegdeFlow ve Workbench üzerinden ayrı ayrı ulaşabilirsiniz. Ben örnek olması açısından WorkBench ara yüzünü kullanarak gösterim sağlayacağım. Eğer isterseniz, Explorer, KnowledgeFlow arayüzünden de ilgili modellere ulaşabilirsiniz. CLI ile ilgili kısımdan ise komut istemi ile parametreleri set ederek ya da varsayılan değerler üzerinden çalıştırabilirsiniz. CLI arayüzünde kullanacağınız komutları aşağıda paylaşacağım.

Weka ile birlikte ve weka gelen kurulum dizini altında /data/ dizini (Örnek olarak “C:\Program Files\Weka-3-8\data” ) içerisinde yer alan weather.nominal.arffvote.arff ve supermarket.arff veri setlerini Birliktelik Kuralları Analizi için kullanabiliriz. Biz öncelikle weather veri seti başlayacağız. Bunların dışında içeriye load edeceğimiz bir veri seti ile de çalışabileceğimizi belirtmek isterim.

Veri Seti 1 : weather.nominal.arff

WorkBench arayüzü içerisinde Preprocess kımında “Open file…” tıklayıp data dizini (…\Weka-3-8\data\ ) içerisinde weather.nominal.arff dosyasını içeriye load ediyoruz.

Resim 8: Weka Workbench Preprocess Ekranı

Bu veri setini incelediğimiz de 5 tane Nominal ölçekte feature (değişken) olduğunu ve 14 instance (gözlem) yer aldığını oldukça küçük bir veri seti.

Weather ARFF Dosyası:

@relation weather.symbolic

@attribute outlook {sunny, overcast, rainy}
@attribute temperature {hot, mild, cool}
@attribute humidity {high, normal}
@attribute windy {TRUE, FALSE}
@attribute play {yes, no}

@data
sunny,hot,high,FALSE,no
sunny,hot,high,TRUE,no
overcast,hot,high,FALSE,yes
rainy,mild,high,FALSE,yes
rainy,cool,normal,FALSE,yes
rainy,cool,normal,TRUE,no
overcast,cool,normal,TRUE,yes
sunny,mild,high,FALSE,no
sunny,cool,normal,FALSE,yes
rainy,mild,normal,FALSE,yes
sunny,mild,normal,TRUE,yes
overcast,mild,high,TRUE,yes
overcast,hot,normal,FALSE,yes
rainy,mild,high,TRUE,no

Features: outlook, temperature, humidity, windy, play

  1. Outlook (Hava Durumu): Sunny, Overcast, Rainy
  2. Temperature (Sıcaklık): Hot, Mid, Cold
  3. Humidty (Nem): High, Normal
  4. Windy (Rüzgar): True, False
  5. Play (Oynanma): yes, no
Resim 9: Weka Workbench Preprocess Ekranı: Selected Attiribute

Feature’lar üzerinde gezindiğiniz de dağılımlara ait bilgileri sağ kısımda yer alan Selected Attiribute kısmında gözlemleyebilirsiniz.

Hemen alt kısım da Visualize All diyerek outlook, temperature, humidity, windy değişkenlerini; play değişkenine göre görselleştirebiliyoruz.

Resim 10: Weka Workbench Preprocess Ekranı: Visualize All

Şimdi artık Associate kısmına geçebiliriz. Burada Choose tıklayarak bu veri setine (weather.nomianal.arff) uygun olan algoritmalardan Apriori seçilir.

Resim 11: Weka Workbench Associate Ekranı 1

 

Resim 12: Weka Workbench Associate Ekranı 2

Varsayılan Parametreler:

  • classIndex: -1

Parametre Açıklama 1: -1 indeks numarasına sahip olan Play değişkeni için kuralların oluşturulacağını belirtiyor. Hatırlayacak olursak; outlook(İndeks Numarası: 1 ya da -5), temperature(İndeks Numarası: 2 ya da -4), humidity(İndeks Numarası: 3 ya da -3), windy(İndeks Numarası: 4 ya da -2), play(İndeks Numarası: 5 ya da -1)

  • mectirType: Condifence
  • minMetric: 0.9

Parametre Açıklama 2: Kuralların Condifence (Bir fiş hareketinde ya da bir veri seti içerisinde min. beraber satın alınma bilgisi) yani güven metriğine göre oluşturulacağı ve bunun minimum değerinin 0.9 yani %90 olduğunu söylüyor.

  • lowerBoundMinSupport: 0.1
  • upperBoundMinSupport: 1

Parametre Açıklama: Kuralların oluşabilmesi için gerekli olan Support (Bir fiş hareketinde ya da bir veri seti içerisinde min. birlikte geçme bilgisi) yani güven metriğinin ise 0.1 ile 1 (%10 ile %100) arasında olduğunu belirtiyor.

Varsayılan haliyle algoritmayı çalıştırdığınız da aşağıdaki çıktıları alacaksınız.

Resim 13: Weka Workbench Associate Apriori Default Algorithm 1

=== Run information ===

Scheme: weka.associations.Apriori -N 10 -T 0 -C 0.9 -D 0.05 -U 1.0 -M 0.1 -S -1.0 -c -1
Relation: weather.symbolic
Instances: 14
Attributes: 5
outlook
temperature
humidity
windy
play
=== Associator model (full training set) ===

Yorum 1: Weather veri seti üzerinde 5 değişken ve 14 gözlem ile Apriori algoritması;

metricType: Condifence ve minMetric değerinin 0.9 (%90)

lowerBoundMinSupport: 0.1 (%10) ve upperBoundMinSupport: 1 (%100) parametreleri altında çalıştırılmıştır.

Confidence (Güven) ve Support (Desktek) parametreleri için ne anlama geldiği ve önemini ilk yazımızda belirtmiştik.

Apriori
=======

Minimum support: 0.15 (2 instances)
Minimum metric <confidence>: 0.9
Number of cycles performed: 17

Generated sets of large itemsets:

Size of set of large itemsets L(1): 12

Size of set of large itemsets L(2): 47

Size of set of large itemsets L(3): 39

Size of set of large itemsets L(4): 6

Yorum 2: Itemset yani birlikte yer alan ürünlerin listesini ifade etmektedir.

  1. L(1) ifadesi ile 12 adet items’ın tek başına kural olarak meydana geldiğini,
  2. L(2) ifadesi ile 47 adet ikili items’ların kural olarak meydana geldiğini,
  3. L(3) ifadesi ile 39 adet üçlü items’ların kural olarak meydana geldiğini,
  4. L(4) ifadesi ile de 6 adet dörtlü items’larn kural olarak meydana geldiğini ifade etmektedir.

Best rules found:

1. outlook=overcast 4 ==> play=yes 4 <conf:(1)> lift:(1.56) lev:(0.1) [1] conv:(1.43)
2. temperature=cool 4 ==> humidity=normal 4 <conf:(1)> lift:(2) lev:(0.14) [2] conv:(2)
3. humidity=normal windy=FALSE 4 ==> play=yes 4 <conf:(1)> lift:(1.56) lev:(0.1) [1] conv:(1.43)
4. outlook=sunny play=no 3 ==> humidity=high 3 <conf:(1)> lift:(2) lev:(0.11) [1] conv:(1.5)
5. outlook=sunny humidity=high 3 ==> play=no 3 <conf:(1)> lift:(2.8) lev:(0.14) [1] conv:(1.93)
6. outlook=rainy play=yes 3 ==> windy=FALSE 3 <conf:(1)> lift:(1.75) lev:(0.09) [1] conv:(1.29)
7. outlook=rainy windy=FALSE 3 ==> play=yes 3 <conf:(1)> lift:(1.56) lev:(0.08) [1] conv:(1.07)
8. temperature=cool play=yes 3 ==> humidity=normal 3 <conf:(1)> lift:(2) lev:(0.11) [1] conv:(1.5)
9. outlook=sunny temperature=hot 2 ==> humidity=high 2 <conf:(1)> lift:(2) lev:(0.07) [1] conv:(1)
10. temperature=hot play=no 2 ==> outlook=sunny 2 <conf:(1)> lift:(2.8) lev:(0.09) [1] conv:(1.29)

Yorum 3: Burada ise varsayılan parametrelere göre (confidence 0.9 min support 0.1 ile 1 arasında ) oluşan kuralları gösterildiği kısımdır.

outlook=overcast 4 ==> play=yes 4 <conf:(1)> lift:(1.56) lev:(0.1) [1] conv:(1.43)

Yorum 4: İlk oluşan kuralı inceleyecek olursak;
  • Outlook değişkeni overcast değeri aldığında Play yani oynanma durumunun Yes değerini almasının %100 (confidence) değerinde olduğu;
  • Outlook değişkeni overcast değeri aldığında Play değişkenin Yes olmasını 1,56 (lift) kat artırdığı;
  • Outlook değişkeni overcast değeri aldığında Play değişkenin Yes olmasının birbirleri ile 1.43 değeri ile ilişkili (conviction) olduğunu;
  • Outlook değişkeni overcast değeri aldığında Play değişkenin Yes olmasının ile birbirlerinden bağımsız olarak yer almalarından 0.1 kadar fazla (leverage) olduğunu söyleyebiliriz.

Not: Burada kuralların yanında görmüş olduğunuz 4 rakamı ise bu kuralın tüm kural seti içerisinde 4’er defa birlikte görüldüğünü ifade etmektedir. Yukarıdaki parametreleri Simple CLI üzerinden çalıştırmak isterseniz:

Simple CLI (Command Line Interface):

java weka.associations.Apriori -t C:\Data\weather.nominal.arff -N 10 -T 0 -C 0.9 -D 0.05 -U 1.0 -M 0.1 -S -1.0 -c -1

Not: weather.nominal.arff dosyasını “C:\Data\” dizini altından veri setini kullanıyorum.

Resim 14: Weka CLI (Command Line Interface) Apriori Algorithm – Default Parameters

 

# Şimdi de bazı parametreleri değiştirerek çıktılara göz atalım;

  • lowerBoundMinSupport: 0.25 yani %25 ->(Destek Değerini Belirliyoruz)
  • metricType: Confidence ve minMetric değerini varsayılan değer olan 0.80 yani %80 –>(Güven Değerini Belirliyoruz)
  • numRules: 25 -> (Oluşacak Kural Sayısı Belirliyoruz.)
  • outputItemSets: True ->(Oluşan Itemsetleri Listelenmesi İstiyoruz)
  • verbose: True

=== Run information ===

Scheme: weka.associations.Apriori -I -N 25 -T 0 -C 0.8 -D 0.05 -U 1.0 -M 0.25 -S -1.0 -V -c -1
Relation: weather.symbolic
Instances: 14
Attributes: 5
outlook
temperature
humidity
windy
play
=== Associator model (full training set) ===

Apriori
=======

Minimum support: 0.25 (4 instances)
Minimum metric <confidence>: 0.8
Number of cycles performed: 15

Generated sets of large itemsets:

Size of set of large itemsets L(1): 12

Large Itemsets L(1):
outlook=sunny 5
outlook=overcast 4
outlook=rainy 5
temperature=hot 4
temperature=mild 6
temperature=cool 4
humidity=high 7
humidity=normal 7
windy=TRUE 6
windy=FALSE 8
play=yes 9
play=no 5

Size of set of large itemsets L(2): 9

Large Itemsets L(2):
outlook=overcast play=yes 4
temperature=mild humidity=high 4
temperature=mild play=yes 4
temperature=cool humidity=normal 4
humidity=high windy=FALSE 4
humidity=high play=no 4
humidity=normal windy=FALSE 4
humidity=normal play=yes 6
windy=FALSE play=yes 6

Size of set of large itemsets L(3): 1

Large Itemsets L(3):
humidity=normal windy=FALSE play=yes 4

Best rules found:

1. outlook=overcast 4 ==> play=yes 4 <conf:(1)> lift:(1.56) lev:(0.1) [1] conv:(1.43)
2. temperature=cool 4 ==> humidity=normal 4 <conf:(1)> lift:(2) lev:(0.14) [2] conv:(2)
3. humidity=normal windy=FALSE 4 ==> play=yes 4 <conf:(1)> lift:(1.56) lev:(0.1) [1] conv:(1.43)
4. humidity=normal 7 ==> play=yes 6 <conf:(0.86)> lift:(1.33) lev:(0.11) [1] conv:(1.25)
5. play=no 5 ==> humidity=high 4 <conf:(0.8)> lift:(1.6) lev:(0.11) [1] conv:(1.25)

İlk yorumlarımızın benzerini bu parametreler ile oluşan birliktelik kuralları için de yapabiliriz. Bu yüzden yeniden benzer minvalde şeyleri yazmayacağım. Yaptığımız bazı değişiklikler ile kuralların detaylandığını görebilirsiniz. Yukarıdaki parametreleri Simple CLI üzerinden çalıştırmak isterseniz:

Simple CLI (Command Line Interface):

java weka.associations.Apriori -t C:\Data\weather.nominal.arff weka.associations.Apriori -I -N 25 -T 0 -C 0.8 -D 0.05 -U 1.0 -M 0.25 -S -1.0 -V -c -1

Not: weather.nominal.arff dosyasını “C:\Data\” dizini altından veri setini kullanıyorum.

Resim 15: Weka CLI (Command Line Interface) Apriori Algorithm – Set Special Parameters

 

Weka üzerinden çok değişik bir veri seti üzerinde yani alışılmışın çok dışında 🙂 Weather veri seti ile hava durumuna göre bir tenis maçının oynanma durumu Birliktelik Kuralları Analizini gerçekleştirdik. Öncesinde ise Weka veri madenciliği tool’una ait Hakkında bilgisi, devamında Temel Bileşenleri ve Kullanımı Bilgisi, devamında ARFF Dosya Yapısını ve devamında da Workbench kısmında temel seviye de bir uygulama gerçekleştirmiş olduk. Eğer siz de ilginç bir veri seti üzerinde Birliktelik Kuralları Analizini denemek isterseniz Titanic (Survived: Yes, No) veri seti için sıradışı kuralların oluştuğuna şahit olabilirsiniz. Yine oldukça uzun bir yazı oldu ve siz artık alıştınız bence 🙂

Son olarak; Yazıyı beğenerek ve paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz. Görüş ve önerileriniz için uslumetin@gmail.com’dan bana ulaşabilirsiniz. Yeniden görüşmek üzere, Selamlar 🙂

Bağlantılı diğer yazılarım:

  1. Birliktelik Kuralları Analizi (Association Rules Analysis)
  2. R ile Birliktelik Kuralları Analizi (Association Rules Analysis with R Project)
  3. IBM SPSS Modeler ile Birliktelik Kuralları Analizi (Association Rules Analysis with IBM SPSS Modeler)
  4. Python ile Birliktelik Kuralları Analizi (Association Rules Analysis with Weka)

Kaynaklar:

Hakkında Metin USLU

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Uygulamalı İstatistik – Verilerin Gruplandırılması

Giriş Herkese merhaba, Bir önceki yazıda verilerin sınıflandırması ile ilgili bilgiler vermiş, sizleri nasıl yapıldığı …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir