23
Naive Bayes Sınıflandırma Uygulaması Harun ÇETİN 10280161 Fen Bilimleri Enstitüsü

Naive Bayes Sınıflandırma Uygulaması

Embed Size (px)

DESCRIPTION

Veri Madenciliği yüksek lisans dersi için hazırlamış olduğum projenin sunumudur.

Citation preview

Page 1: Naive Bayes Sınıflandırma Uygulaması

Naive Bayes Sınıflandırma Uygulaması

H a r u n ÇETİN

10280161Fen Bilimleri Enstitüsü

Page 2: Naive Bayes Sınıflandırma Uygulaması

GİRİŞ VE VERİ ÖN İŞLEME

Naive Bayes Sınıflandırma Uygulaması

Page 3: Naive Bayes Sınıflandırma Uygulaması

Veri seti olarak http://kdd.ics.uci.edu/summary.task.type.html (Summary of Task Files by Type) Sayfasındaki «Forest Cover Type» veri seti kullanıldı.Yine aynı sitenin veri setiyle ilgili sayfasında belirtildiği üzere sınıflama çalışması orman örtü türünü belirleme üzerine yapıldı.Veri setinde 55 nitelik ve 581012 örnek bulunmakta.Hesaplama kolaylığı açısından nitelik sayısı veri setinin alındığı internet sayfasındaki talimatlara uygun olarak azaltıldı.

Naive Bayes Sınıflandırma Uygulaması

Page 4: Naive Bayes Sınıflandırma Uygulaması

11-15 (Wilderness area) ve 15-55 (Soil type) aralıklarındaki nitelikler internet sayfasında verilen açıklamalara uygun olarak iki ayrı nitelik olarak birleştirildi.

Böylece yeni veri setinin nitelik sayısı 13 oldu.

Örnek sayısı da azaltılarak 100000 örneklik yeni bir veri seti oluşturuldu.

Naive Bayes Sınıflandırma Uygulaması

Page 5: Naive Bayes Sınıflandırma Uygulaması

GELİŞTİRME ORTAMI VE UYGULAMA

Naive Bayes Sınıflandırma Uygulaması

Page 6: Naive Bayes Sınıflandırma Uygulaması

Geliştirme dili olarak Java tercih edildi. Geliştirme ortamı olarak ise NetBeans İDE tercih edildi. Javanıntercih edilmesinin sebebi geliştiriciye sağladığı kolaylıklar (Nesne yönelimli vb.) ve çoklu platform desteği ayrıca NetBeans ve Javanın açık kaynak lisanslı olmasıdır.

Burada sınıflamayı yapan temel sınıflara ve metotlara yer verilecektir.

Naive Bayes Sınıflandırma Uygulaması

Page 7: Naive Bayes Sınıflandırma Uygulaması

“Siniflayici” Soyut Sınıfı

Geliştirilen uygulamanın en önemli iki sınıfından ilki olan Sınıflayıcı soyut sınıfı, sınıflama işlemini yapacak olan diğer sınıflar için genel bir arayüz sağlamaktadır.

Bu sınıf içerisindeki ilk metot olan int ArgMax(Vector<Object> girdi) metodu Object türünde veri vektörü almakta ve bu vektör içindeki değerlerin sayı olarak en büyüğünün indeks numarasını int türünde döndürmektedir.

Naive Bayes Sınıflandırma Uygulaması

Page 8: Naive Bayes Sınıflandırma Uygulaması

Diğer bir metot KosulluSec(DefaultTableModel ornekler, int col, Object kosul) metodudur. Bu metot ise kendisine üç parametre almakta ve Object türünde bir Vectordöndürmektedir. Bu metot kendi içerisinde bütün eğitim örneklerini dolaşacak şekilde döngü kurmakta ve kendisine gelen kosul parametresini alarak kategori kolonunda bu kosuldeğerine karşılık gelen satırdaki int türündeki colparametresiyle verilmiş kolondaki veriyi alarak Object türünde veri alan bir vektöre eklemektedir. Dönen değer ise bu eklemeler sonucu oluşan nihai vektördür.

Naive Bayes Sınıflandırma Uygulaması

Page 9: Naive Bayes Sınıflandırma Uygulaması

Sonraki sınıf ise soyut prototipi verilmiş olan ModeliEğit(DefaultTableModel egitimSeti) metodudur. Diğer metot Sinifla(Object[] veri) ise Object türünde bir veri dizisi alarak geriye Stringtüründe sınıflama sonucunu döndürür.

Test() metodu ise herhangi bir parametre almadan Sınıfla() metodunu kullanarak test verileri üzerinden uygulamanın başarım testini gerçekleştirir ve sonucu yüzde cinsinden double olarak döndürür.

Naive Bayes Sınıflandırma Uygulaması

Page 10: Naive Bayes Sınıflandırma Uygulaması

“NaiveBayes” Sınıfı

NaiveBayes(Object[] kategoriler, int sinifKolonu, DefaultTableModel dagilimlar):

Sınıfın ilklendirme metodu olan NaiveBayes metodu üç parametre almakta. Bu parametrelerin ilki olan “kategoriler” parametresi Object türünde bir nesne dizisidir. Bu diziye sınıflama yapılacak kategori etiketleri alınır.

Naive Bayes Sınıflandırma Uygulaması

Page 11: Naive Bayes Sınıflandırma Uygulaması

İkinci parametre olan int türündeki “sinifKolonu“ parametresi ile hangi nitelik kolonunun sınıflama niteliği olarak kullanılacağı belirtilir. Üçüncü parametre olan “dagilimlar” parametresi ise niteliklerin minimum, maksimum, ortalama, varyansgibi dağılım özelliklerini tablo yapısında metoda sunmaktadır.

Naive Bayes Sınıflandırma Uygulaması

Page 12: Naive Bayes Sınıflandırma Uygulaması

ModeliEgit(DefaultTableModel table): Sınıflayıcı soyut sınıfından alınan bu metot ilk parametresi olan tablo yapısındaki “table” parametresi ile veri setini almaktadır. İnt türündeki “ToplamOrnekSay” değişkeni veri setindeki toplam örnek sayısını tutmaktadır. Sonraki değişken olan int türündeki “EgitimOrnekSay” değişkeni ise kullanıcı arayüzünden alınan “EgitimSetiOrani” değişkeni ile “ToplamOrnekSay” değişkeninin çarpılarak yüzdesinin alınması sonucu elde edilen eğitim amaçlı kullanılacak veri setinin örnek sayısını belirtir.

Naive Bayes Sınıflandırma Uygulaması

Page 13: Naive Bayes Sınıflandırma Uygulaması

“DataSet<String, DefaultTableModel>”, Siniflayicisınıfından gelen Hashtable yapısında bir değişkendir. Burada söz konusu durum sıralamaktan ziyade bir anahtarla ulaşmak olduğundan hashtable kullanımı uygun görülmüştür. SinifDagilimlari değişkeni ise sınıfların nitelikler bazındaki ortalama ve varyanslarınıtablo şeklinde tutmakta. Gauss dağılımı hesaplama aşamasında bu tablodan faydalanıldı. Daha sonra bu değişkeni DataSet hashtable içerisine alarak sınıf içindeki diğer metotlarda kullanılması sağlandı.

Naive Bayes Sınıflandırma Uygulaması

Page 14: Naive Bayes Sınıflandırma Uygulaması

Sinifla(Object[] ornek): Bu metot Object türündeki “ornek” dizisine bir veri örneği almaktadır. Object türündeki “kosulluolslar” vektörü ve Object türündeki “siniflar” değişkenleri koşullu olasılıkları ve sınıfları tutmak amacıyla oluşturuldu.

Naive Bayes Sınıflandırma Uygulaması

Page 15: Naive Bayes Sınıflandırma Uygulaması

Ardından kategori (sınıf) sayısı kadar döngüye girilerek öncelikle sınıf dağılımları tablosundan ele alınacak sınıfın olasılığı “pc” değişkenine alındı.

Daha sonra sınıf dağılımları tablosunun sütun sayısı kadar döngü oluşturularak sınıf dağılımları tablosundan her bir sınıfın ortalama ve varyanları ve ilgili örneğin her niteliği için ortalama (pxort) ve varyans (pxvar) değişkenine alındı.

Naive Bayes Sınıflandırma Uygulaması

Page 16: Naive Bayes Sınıflandırma Uygulaması

Daha sonra px değişkenine verinin olasılığı ve “sonuc” değişkenine ise bayes formülü ile hesaplanan değer verildi.

Bu sonuçlar “kosullulslar” vektörüne, üzerinde işlem yapılan sınıf ise “siniflar” vektörüne eklendi.

Naive Bayes Sınıflandırma Uygulaması

Page 17: Naive Bayes Sınıflandırma Uygulaması

Döngülerin bitiminden sonra ise ArgMax metodu ile “kosulluolslar” vektöründeki maksimum değerin indeksini alınarak “siniflar” vektörüne verildi. “siniflar” vektöründe ilgili indekse karşılık gelen sınıf “bayes” String değişkeni içierisine alınarak metoda dönüş değeri olarak verildi.

Naive Bayes Sınıflandırma Uygulaması

Page 18: Naive Bayes Sınıflandırma Uygulaması

SONUÇLAR

Naive Bayes Sınıflandırma Uygulaması

Page 19: Naive Bayes Sınıflandırma Uygulaması

Weka yazılımı yardımıyla yapılan sınıflama sonuçları geliştirilen uygulama ile karşılaştırıldı.

Naive Bayes Sınıflandırma Uygulaması

Page 20: Naive Bayes Sınıflandırma Uygulaması

Naive Bayes Sınıflandırma Uygulaması

WEKA GELİŞTİRİLEN UYGULAMA

1

Nitelik Sayısı: 55

Sınıf Sayısı: 7

Ayrılış: %80

Toplam Örnek Sayısı: 100000

Doğru Sınıflanan Örnek Sayısı = 14661

Test Örnek Sayısı = 19988

Doğruluk Yüzdesi: % 73.349

Nitelik Sayısı: 13

Sınıf Sayısı: 7

Ayrılış: %80

Toplam Örnek Sayısı: 100000

Doğru Sınıflanan Örnek Sayısı=6022

Test Örnek Sayısı=20000

Doğruluk Yüzdesi: % 30.11

Page 21: Naive Bayes Sınıflandırma Uygulaması

Naive Bayes Sınıflandırma Uygulaması

WEKA GELİŞTİRİLEN UYGULAMA

2

Nitelik Sayısı: 55

Sınıf Sayısı: 7

Ayrılış: %70

Toplam Örnek Sayısı: 100000

Doğru Sınıflanan Örnek Sayısı= 21929

Test Örnek Sayısı= 29982

Doğruluk Yüzdesi: % 73.140

Nitelik Sayısı: 13

Sınıf Sayısı: 7

Ayrılış: %70

Toplam Örnek Sayısı: 100000

Doğru Sınıflanan Örnek Sayısı=13949

Test Örnek Sayısı=30000

Doğruluk Yüzdesi: % 46.497

Page 22: Naive Bayes Sınıflandırma Uygulaması

WEKA GELİŞTİRİLEN UYGULAMA

3

Nitelik Sayısı: 55

Sınıf Sayısı: 7

Ayrılış: %66

Toplam Örnek Sayısı: 100000

Doğru Sınıflanan Örnek Sayısı= 24826

Test Örnek Sayısı= 33980

Model Başarımı: 73.060

Nitelik Sayısı: 13

Sınıf Sayısı: 7

Ayrılış: %66

Toplam Örnek Sayısı: 100000

Doğru Sınıflanan Örnek Sayısı=16794

Test Örnek Sayısı=34000

Model Başarımı: 49.394

Naive Bayes Sınıflandırma Uygulaması

Page 23: Naive Bayes Sınıflandırma Uygulaması

TEŞEKKÜRLER