Ana içeriğe atla

Weka ile Sınıflandırma

"Preprocessing" aşamasında veri setimizi yükledik ve eğer gerekliyse ön aşamadan geçirdikten sonra sınıflandırma aşamasına geçebiliriz. Weka nedir, Ön İşlem bölümünde neler yapılır sorusunun cevapları için önce bu yazımı okumalısınız.

SINIFLANDIRMA

Verimizi ön işlemden geçirdikten sonra artık sınıflandırabiliriz. WEKA'yı kullanarak bir çok sınıflandırıcıyı kullanabilirsiniz; Karar Ağaçları, SVM, Multi-layer Perceptrons vs. Veri setinizi yükledikten sonra Classify bölümüne tıklayarak sınıflandırma sayfasına erişebilirsiniz. Ön tanımlı ayarlara göre ZeroR algoritması gelmektedir. Bu algoritmanın başarımı çok düşük olduğu için ben "Iris" veri seti için iyi sonuç verdiği bilinen J48 algoritması ile devam edeceğim:



Choose butonuna tıklayarak başka bir sınıflandırıcı seçebilirsiniz.   


Sınıflandırma algoritmasını çalıştırmadan önce test seçenekleri ayarlanmalı. Test Options Box içerisinde test seçeneklerini bulabilirsiniz:

1. Use Training Set: Üzerinde eğitildiği örneklerin ne kadar iyi sınıflandırıldığını kontrol eder.

2. Supplied Test Set: Bir dosyadan yüklenen örnek setinin ne kadar iyi sınıflandırıldığını kontrol eder. 'Set ...' butonuna tıklayarak test için bir dosya seçebilirsiniz.

3. Cross-validation: Cross-validation ill sınıflandırıcıyı test eder, bunun için de Folds metin bölgesinden girilen sayıyı fold sayısı olarak kabul eder. Ön tanımlı olarak 10 gelir ve buna göre 10 sete ayırdığı veri setinin 9'uyla eğitim 1'i ile de test yapar. 

4. Percentage Split: Belli bir yüzdeye göre sınıflandırıcının ne kadar iyi olduğunu test eder. % Bölgesine girilen değere göre bu işlemi gerçekleştirir.

Ben once 10 fold cross-validation'a gore işlem yapacağım, J48 algoritması ile.

Classifier Output ekranına bakarsak, J48'in iris veri setimizi %96 başarım ile sınıflandırıldığını görebiliriz. Biraz daha "Classifier Output" ekranınız detaylandırmak istersek:




"Run Information" bölümü size şu bilgileri verecektir. J48 algoritmasını kullandığınızı, veri setinizin isminin iris olduğunu, veri setinizin içerisinde 150 adet etiketli veriniz olduğunu ve 5 adet özellik bilginizin olduğunu bunların da; "sepallength, sepalwidth, petallength, petalwidth". Sınıflandırıcının modeli text formatında, tüm eğitim datasından üretilmiş budanmış karar ağacı. Sizin de görebileceğiniz gibi ilk dallanma çanak yaprağının uzunluğunu temsil eden petallength'te gerçekleşmiş, eğer 0.6 değerinden küçük eşitse Iris-setosa, eğer büyükse dallan ve diğer özellikleri kontrol et şeklinde. Ağaç yapısında ':' sınıf etiketini temsil eder. Ağaç yapısının alt kısmında yaprak sayısı ve ağacın genişliği bilgilerini görebilirsiniz. Ayrıca WEKA bize modeli oluşturmak için ne kadar vakit harcadığını da bildirir, ki 0 saniyedir. 

Biz yöntem olarak "cross-validation" seçtiğimiz için bu başlıkla başlamaktadır. Neyse bu bölüm ağacın tahminsal performans sonuçlarını gösterir. 150 adet verimizin 144 tanesi doğru şekilde sınıflandırılmış ve %96 başarım elde edilmiş ve 6 tanesi yanlış sınıflandırılmış, dolayısıyla %4 başarısızlık söz konusu. Mutlak hata ortalaması 0.035 ve Karesel ortalama hatası da 0.1586'dır. 

Detailed Accuracy By Class başlığı altına bakacak olursak her çiçek sınıfı için True Positive, False Positive, Recall ve F-Measure ve ROC Alanı karşılıklarını görebiliriz. Bunların neye karşılık geldiğini bilmiyorsanız öncesinde biraz Makina Öğrenmesi çalışmanızı yada en azından bu yazıya bir göz atmanızı tavsiye ederim. 

Confusion Matrix kısmında 3 sınıfımız için de kaç tane örnek doğru sınıflandırılmış kaç tanesi yanlış sınıflandırılmış ve hangi sınıf olarak sınıflandırılmış gibi soruların cevaplarını bulabiliriz.

Sonuçları Görselleştirme

Sınıflandırma sonuçlarımızı daha görsel bir şekilde görmek istersek, WEKA'nın bize sağladığı grafiksel sunumlardan faydalabiliriz. Nasıl yapıldığını aşağıdaki resme bakarak görebilirsiniz:


Sağ tıklayarak "Visualize tree"yi seçtikten sonra Classifier Output'ta incelediğim ağacın grafiksel gösterimini görebilirim.

Ayrıca sınıflandırma hatalarını da görebilirsiniz bunun için aynı menüden "Visualize Classifier Errors" seçeneğini seçin. 





Eğer daha geniş açıdan görmek isterseniz kırmızı okla gösterile jitter'ı sağa doğru iterseniz tüm veri örneklerinin sınıflandırılmış hallerini görebilirsiniz, yanlış sınıflandırılmış olanlar kare ile doğru sınıflandırılmış olanlar da x ile gösteriyor. Örneğin mavi kare aslında mavi olan yani Iris-setosa olması gereken ama başka bir sınıfta sınıflandırılan örneği ifade ediyor.



Eğer karelerden bir tanesinin üzerine çift tıklarsanız, daha ayrıntılı bilgi görebilirsiniz. Ben mavi olanına tıkladım ve aşağıda görebileceğiniz gibi verimin kaçıncı veri olduğunu, çanak uzunluğu, genişliği vs bilgilerinin ne olduğunu ve tahmin edilen sınıfının (predictedclass ile ifade edilen) Iris-versicolor ancak olması gereken'in (class ile ifade edilen) Iris-setosa olduğu bilgisini görebildim.



Yorumlar

  1. Gayet güzel anlatmışsınız. Devamını bekleriz :)

    YanıtlaSil
  2. Ellerinize sağlık çok yardımcı oldu :)

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

Adım Adım Weka Kullanımı

WEKA bir veri madenciliği uygulamasıdır ve Yeni Zellanda'daki Waikato Üniversitesi tarafından geliştirilmektedir. Bu yazının amacı WEKA Explorer'ı kullanmayı öğretmektir.


Java ile Thread Pool Kullanımı

Oluşturacağımız uygulama 100 x 100 boyutlu bir matrisin içerisinde arttırma işlemi yapacaktır. Bu işlem için Runnable yada Callable sınıfı kullanılabilir. Runnable objesi olarak tanımladığımızda threadlerimiz sonlandırılana kadar sürekli olarak çalışacak ve kuyruğu sürekli olarak kontrol edip yeni bir görev olup olmadığına bakacaklardır. Thread class'ımız bize execute() adında bir method kullanım imkanı sağlamaktadır; execute(Runnable myR) şeklinde bir kullanım ile kuyruğa yeni Runnable objeler eklememize imkan sağlamaktadır.