Sayfalar

7 Kasım 2012 Çarşamba

RapidMiner'da Decision Tree Uygulaması

Merhaba Arkadaşlar,

Bildiğiniz gibi bir önceki yazımda RapidMiner ile ilgili temel bir kaç şeye değindik. Burada internetten bulduğunuz metin dosyası halinde gelen herhangi bir veri setini Excel'e, oradan da RapidMiner'a aktarmayı öğrendik. Bu arada gezinirken keşfettiğim bir dolu veri seti sitesinden en kullanışlı olanı sizlere söylemek istiyorum;
http://archive.ics.uci.edu/ml/datasets.html
Bu adresten uygulamalarınız için deneme amaçlı veri setlerini görebilirsiniz. Zaten veri setlerine ait açıklamalar da ayrıntılı bir biçimde verilmiş.

Bu kez; bir veri seti üzerinde Sınıflandırma metodunun bir algoritması olan Decision Tree uygulamasını sizlere elimden geldiğince anlatmak istiyorum. Veri seti olarak Göğüs Kanseri veri setini kullanacağız. Bu veri setine aşağıdaki linkten erişebilirsiniz:
http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/

Öncelikle RapidMiner'da yeni bir proses başlatalım(File->New). Yeni prosesi başlatıp Read Excel operatörünü çalışma alanına bırakalım. Bir önceki yazımızda anlattığımız üzere bu operatörü indirdiğimiz ve excel ortamına taşıdığımız veri seti ile bağlayalım. Bu kısmı tekrar anlatmayacağım. Bundan sonrasına değinmeye çalışacağım.

Veri setimizin exceldeki görünümü aşağıdaki gibi olacaktır. Tabi eğer siz veri setinin attribute değerlerini Türkçeleştirmediyseniz (ki Türkçeleştirmenizi öneririm. Çünkü ortaya çıkan karar ağacını yorumlamanız zorlaşacaktır) ilk haliyle görünecektir.

Ben RapidMiner'da Read Excel operatörü için Sihirbazın çalıştırıldığı kısımdan devam edeyim. Data import wizard'ı çalıştırdıktan sonra 4 adet adımı konfigüre etmeniz gerekecek. 1. Adımda veri setinin bulunduğu dizini gösterip ilerliyoruz. 2. Adımda veri setine ait tüm verileri seçeceğimiz için dokunmadan ilerliyoruz. 3. Adımda da attribute değerlerinin bulunduğu (ilk satırı) seçerek ilerliyoruz. Son aşamayı da aşağıdaki resimde gösterildiği gibi seçmemiz gerekecek. Çünkü Decision Tree algoritmasını sağlıklı olarak çalıştırmanız için bir adet label değerine ihtiyacınız olacaktır. Decision Tree algoritması bu label üzerinden çalışarak ekrana karar ağacını dökecektir. Yani karar ağacının son yapraklarının ne olacağını siz belirliyorsunuz demektir. Diğer tüm kısmı ise algoritmaya bırakacaksınız. Biz de burda Hücre Tipini (iyi huylu- kötü huylu) label olarak seçiyoruz. Bu sayede hangi hücre yapısında hastalığın iyi huylu ya da kötü huylu olduğunu keşfedebileceğiz.
Bunu da yaptıktan sonra diğer operatörlere geçelim. Dilerseniz direk Decision Tree operatörünü veri setimize bağlayarak kullanabilirsiniz. Yani aşağıdaki gibi bunu yapabilirsiniz. Ancak ben birkaç farklı operatörü daha tanıtmak istiyorum. Bu yüzden buna göre devam edeceğim.
Bu şekilde de algoritmamız sorunsuz çalışacaktır. Fakat biz çıktı ekranımızın daha zengin görünmesini istiyoruz. Bunun için şöyle devam edelim:
Evalution->Validation->Split Validation operatörünü ekrana bırakalım. Bu operatör ile ekran ikiye ayrılacaktır (üstüne çift tıkladığımızda). Sol taraf training, sağ taraf testing kısmı olacaktır. Yani veri setimizin öğrenme ve test edilme kısımlarını ayıran bir öperatördür. Bir önceki proses ekranına dönmek için üst kısımdaki Process kısmına tıklamanız yeterli olacaktır. 
Elbette şu an için operatörümüz kırmızı ikonla bizi hatalı olduğuna dair uyarıyor. Bunun sebebi ise henüz içeriğinin boş olması. İçine çift tıklayarak girdiğimizde ise aşağıdaki ekran görüntülenir. 
Burada kullanacağımız operatörlere geçmeden önce neden split validation kullandığımızı açıklayalım. Bu operatör bir eğitim seti için aşamaları ikiye böler. Daha sonra kullanılan algoritmaya göre bu modeli değerlendirir. Sol tarafla sağ taraf birbiriyle bağlantılı çalışır. Yani sol tarafta kullanılan eğitim işleminden (eğitim setini modele göre uyarlamayı kastediyorum) çıkan sonuç sağ tarafa uyumlu olmalıdır. Excel den gelen veri setleri girdi olarak soldaki tra bağlantısından alınır. Burada işlendikten sonra mod kısmından sağdaki ekrana verilir. Sağdaki ekrandaki modeli uygulama aşamasından sonra da ave bağlantısından Split Validation operatörünün sağ bağlantı uçlarından sonuç ekranına gönderilir. 

Bu operatörü kullanmakla sol kısımda veri setimizi eğitmiş olduk. Sağ kısımda da bu eğitim ile öğrenilen modeli uygulamış olduk. 

Devam edecek olursak kullanacağımız Decision Tree operatörünü sol kısma bırakıyoruz(Modelling-> Classification->Tree Induction). Sol kısma ise Apply Model(Model Application->Thresholds) ile Performance(Evolution->Performance Measurement) operatörlerini bırakıyoruz. Bu operatörleri de kısaca açıklayalım:
Decision Tree: Göğüs Kanseri verilerini alarak label kısmına göre bir karar ağacı oluşturur.
Apply Model: Split Validation kullandığımız için sol tarafta öğrenilen modeli veri seti üzerine uygular.
Performance: Sonuç ekranını zenginleştirerek uygulama esnasındaki performans ölçümlerini ekrana verir. Son görünüm aşağıdaki gibidir;
İç kısmı bitirdikten sonra Process düğmesi ile tasarımımıza dönelim. Bağlantılarımızı aşağıdaki gibi yapalım. Burada göreceğiniz gibi artık operatörümüz düzgün çalıştığını sarı imge ile bildiriyor.
Sağ kısım bizim ekran çıktılarımızın verildiği result bağlantılarımızın olduğu kısımdır. Burada ne kadar çok bağlantı varsa sonuç ekranında o kadar çok sekme oluşacaktır. Mesela şu anda 2 bağlantı için 2 sekme oluşması beklenmektedir. Artık Play butonu ile sonuçları takip edebiliriz. Ağacımızın Grafik gösterimi aşağıdaki gibi olur:
Text kısmı ise aşağıdaki gibidir. 
Yorumlamak için hangisini seçeceğiniz size kalmış. Mesela soldaki ilk dalın yorumlaması şöyle olabilir:
Hücre boyutu 3.905'ten büyük olan ve Marjinal Yapısı 0.640 dan büyük olan kanser hücreleri genellikle kötü huyludur denebilir. Tabi bu terimleri anlamak için biraz tıp bilmek gerekir diye düşünüyorum (: Siz daha anlaşılır veri setleri üzerinden bu uygulamayı yapabilirsiniz.

Umarım faydalı olmuştur. Herkese kolay gelsin.

14 yorum:

  1. Hocam mükemmel bir paylaşım. Rapidminer hakkında inş. paylaşımlara devam edersiniz.

    YanıtlaSil
  2. merhaba teşekkürler bilgiler için öncelikle size bişey danışmak istiyorum validation 'u sürükleyip herşeyi yaptım ama performance değerlerine baktığmda accuracy düşük çıkıyor number of bins değeriyle ilgisi var sanırım ama number of bins yazan kutuya neye göre değer yazıyoruz? şimdiden teşekkürler..

    YanıtlaSil
  3. Merhaba. Şunu göz önünde bulundurmak gerekiyor ki performans değerleri veri setinin kalitesine bağımlıdır. Bu doğruluk hesabı karar ağaçlarında öncelikle verilen test verisi hakkında algoritmanın öngördüğü doğruluğa dayanır. Daha sonra öngörülen hedef değerler ile test verisinden elde edilen doğru değerlerin karşılaştırılması ile doğruluk hesabı sağlanır. Eğer algoritmanın kabul edebileceği doğruluk değerinin çok altındaysanız zaten karar ağacının oluşmaması gerekiyor. Ek kaynak olarak aşağıdaki pdf dosyasını inceleyebilirsiniz. Burada RapidMiner'da bir karar ağacının doğruluk değerinin nasıl hesaplandığını görebilirsiniz. Kolay gelsin.
    http://users.encs.concordia.ca/~fung/pub/YHFMY11egy.pdf

    YanıtlaSil
  4. gerçekten tez yolculuğum boyunca çok katkınız oldu. son olarak size bir şey sormak istiyorum doğruluk değerim % 70 çıktı ilk karar ağacım için sonraki diğer verilerime yaptığım ise %62 çıktı sizce bu kötümü teze eklemek için şu sınırda geçerlidir vs gibi bir cümleye ihtiyacım var ama çok araştırdım yani yada kappa en az bukadar olmalıdır diye yazmak istiyorum ama bulamıyorum gönderdiğiniz makaleyi de okudum çok teşekkür ediyorum

    YanıtlaSil
  5. Yardım edebilmeme sevindim :) Karar ağacı olarak hangi algoritmayı kullanıyorsunuz bilmiyorum. Durum şu: Öğrenme veri setlerinizin kalitesine göre karar ağacı algoritmanız bir doğruluk değeri hesaplıyor. Her karar ağacı algoritmasının bu değeri farklı bulacağını düşünmek hiç de zor değil. Veri madenciliği çalışmalarının başarı yüzdelerini incelerseniz neden bu kadar farklı değerlerle karşılaştığınızı da göreceksiniz. Öğrenme veri setinizi isterseniz kendiniz belirleyerek durumu deneyebilirsiniz. Normalde RapidMiner da öğrenme veri setlerini karar ağacı algoritması yine kendi içindeki bir algoritma ile rastgele seçerek ağacı döker. Kolay gelsin.

    YanıtlaSil
  6. ben de hepsini birebir uygulamaktayım fakat, kökten 2 düğüm çıkıyor gerisi yok. Neden olabilir acaba?

    YanıtlaSil
  7. Veri setinizden kaynaklanıyor olabilir. Konu içerisinde bahsettiğim veri setini kullanarak denemenizi öneririm.

    YanıtlaSil
  8. Öncelikle paylaşımlarınızdan dolayı çok teşekkürler.S.a kardeşim ben veri madenciliğinde (rapid miner ) da sınıflandırma işlemi yapıcam ama nasıl yapıcam bilmiyorum ve yukarda bahsettiğiniz siteye girdiğimde aynı veriye ulaşamıyorum.

    YanıtlaSil
  9. Yukarıdaki link içindeki breast-cancer-wisconsin.data dosyasını indirdiğinizde bu veri setini elde edersiniz. Benim kullandığım meme kanseri veri seti ile bire bir aynı olmayabilir. Ancak işinizi görecektir. Yazı içeriğini birebir takip ederek bu veri seti üzerinde uygularsanız sonuç alacağınıza inanıyorum.

    YanıtlaSil
  10. tamam teşekkürler kardeş.

    YanıtlaSil
  11. Merhaba Muhammed Bey, http://archive.ics.uci.edu/ml/datasets.html
    Car Evaluation Data Set seçtim yukarıda göstermiş olduğunuz şeyleri birebir uyguladım sadece iki attribute için sonuç aldım datasetinde 5 tane attribute var. Birde sizin yukarıda uyguladığınız ID3 sınıflandırma algoritması kullanarak yapılan bir sınıflandırma mı?

    YanıtlaSil
  12. merhaba kardeşim ben yukardaki bütün işlemleri uyguluyorum fakat validation formunda kırmızı işaret geliyor onu nasıl çözebilirim yada nedeni nedir?şimdiden yardımların için sağol.

    YanıtlaSil
  13. Çok faydalı bir çalışma .Uygulamanızda kullandığınız veri setinin tam halini excel formatında yayınlaya bilirmisiniz.

    YanıtlaSil
  14. Öncelikle verdiğiniz bilgiler çok işime yaradı teşekkür ederim. Ben tree induciton kısmındaki modülleri veri setime uyguladım ve performans değerlerini buldum. Bana lazım olan programın bu performans değerini nasıl bulduğu. bir link var ama ordada dosya silinmiş yazıyor ''urada RapidMiner'da bir karar ağacının doğruluk değerinin nasıl hesaplandığını görebilirsiniz. Kolay gelsin.
    http://users.encs.concordia.ca/~fung/pub/YHFMY11egy.pdf ''. 2. olarakta tree inductionun altında yer alan modüllerin türkçe açıklamalarını bulabileceğim bir kaynak varmı acaba ? Şimdiden teşekkür ederim

    YanıtlaSil