Cumartesi, Mayıs 23, 2009

YSA ile Kan Bağışı tahmini

UC Irvine Machine Learning Repository sitesinden indirdiğimiz bir gurub veriyi kullanıyoruz

Blood Transfusion Service Center Data Set

Veriler Tayvanın Hsin-Chu şehrinde bir kan bankasının veri tabanından çıkarılımış. verilerimiz nelerden oluşutuğuna şöyle bir bakarsak

R (Recency - months since last donation),
Yani En son bağışı üzerinden geçen süre ay olarak
F (Frequency - total number of donation),
Yani kaç kez bağış yaptığı
M (Monetary - total blood donated in c.c.),
Yani bağış yaptığı kan miktarı
T (Time - months since first donation),
Yani İlk bağışından bu zamana kadar geçen süre ( ay olarak )


Bunları YSA mızın giriş değerleri olarak kullanıyoruz.

Çıkış değeri ise o ay kişilerin kan bağışı yapıp ( 1 ) yapmadıkları ( 0 )
yani YSAmız 4 giriş 1 çıkış yapısında

Ham verilerimizi alıp Open Ofis programımıza atıyoruz. Sonra bu verileri YSA nın kullanabileceğei aralığa çekiyoruz ( scale ) sonra Toplam 748 verinin 448 ini eğitim 300 nü test için kullanmak üzere iki parçaya ayırıp. Verileri Kaydediyoruz.
Favori YSA Eğitim programımız olan FannTool'u açıp Verilerimizi yükleyip YSA mızın dizaynını yapıp Güzeeelce eğitiyoruz.


Eğittiğimiz YSA nı "Blood-ovt.net" diye kaydediyoruz. Yine FannTool ile Kaydettiğimiz YSA nı çalıştırıp sonuçlarını inceliyoruz.
YSA'mız Eğitim verileriyle % 94.2 lik bir başarılı tahmin sayısına ulaşıyor ( 448 kişden 422 kişinin bağış yapıp yapmayacağını doğru tahmin ediyor. )
ama Test verileriyle ulaşılan sonuç hiçde iç açıcı değil. YSA'mız Test verileriyle % 67 lik bir doğru tahmine ancak ulaşabiliyor ( 300 kişden 201 kişinin bağış yapıp yapmayacağını doğru tahmin ediyor. ) Hiçte parlak bir oran değil.

Aynı verilerle ve Tekar bir eğitim işine girişiyoruz. Bu sefer daha optimum bir şekilde eğitiyoruz ve eğitimi biraz kısa tutuyoruz.

Eğittiğimiz YSA nı "Blood-opt.net" diye kaydediyoruz. Yine FannTool ile Kaydettiğimiz YSA nı çalıştırıp sonuçlarını inceliyoruz.
YSA'mız Eğitim verileriyle % 79,69 lik bir başarılı tahmin sayısına ulaşıyor ( 448 kişden 357 kişinin bağış yapıp yapmayacağını doğru tahmin ediyor. ) hiçte fean bir tahmin oranı değil.Bir de test sonuçlarına bakıyoruz. YSA'mız Test verileriyle % 82 lik bir doğru tahmine ulaşabiliyor ( 300 kişden 246 kişinin bağış yapıp yapmayacağını doğru tahmin ediyor. ) Bence gayet güzel bir sonuç.

Pek tabii Sizde denemeler yapabilirsiniz. verileri ve diğer dosyalara bakıp inceleyebilmeniz için hepsini bir arada veriyoruz
Download : Kan bağış Tahimini

Peki bu bize ne öğretti.
* YSA'yı sadece Eğitim verisi sonuçlarına göre değerlendirmek mümkün değildir. Muhakkak test edmek lazımdır

* YSA Eğtiminiz Ezberci olmasın :)

şimdilik bu kadar söyleyelim İnşallah Bir başka zamandetaylı anlatmaya çalışırız

Konumuza dönersek Bütün bunlardan fiyakalı bir makale için malzeme çıkabilir. İyi de bütün bunlar makale, tez, ödev ... içinmiydi. Yani Başka bir işimize yaramazmı bu YSA ?

Evet Pek ala bu konuda program yazılabilir. Kan bağışı merkezi bu programın sayesinde bir sonraki ay için yapılacak kan bağışlarını hatta Kan guruplarıyla birlikte tahmin edebilir.
Yapmamız gereken tek şey verileri ona göre düzenleyip FannTool ile Eğittiğimiz YSA'yı yazdığımız program içinden çalıştırmak. Ve bunun için C / C++ bilmenize de gerek yok. FANN kütüphanesinin pek çok dil için arabirimi ( Bindings ) var.

Bir mumda sen yak

Bir önceki yazımızda belirttiğimiz gibi burda görmüş olduğunuz yazılar ve projecikler sebebiyle pek çok kişi ile tanışma şansına sahip oldum

Bu insanların büyük çoğunluğu ya bir ödev ya da tez ile uğraşıyorlardı. Genelde şikayetle konuya başlıyorlardı
".... konusuyla ilgili pratik kaynak, örnek yok. varsada bir kaç tane ve ingilizce ..."

gibi. Biz genelde elimizden geldiğince yardımcı olmaya çalıştık ve inşallah bu şekilde devam edeceğiz.

Yalnız merak ettiğim bir husus var. Bu arkadaşların ödevlerini, tezlerini,... bir şekilde öyle yada böyle bitirmiş olmaları lazım. Bunlardan bir kısmı bile kendi tecrübelerini Diğer insanlarla paylaşmış olsaydı, en azından sonradan gelenler için kaynak sıkıntısı bir nebze azalırdı.

El hasıl klasik tabir ile söylersek
" Karanlığa küfredeceğine bir mumda sen yak "

demişler. Hem laf aramızda bu delilere güven olmaz. Belki birgün akıllanır, yada büsbütün zıvanadan çıkar "yazıyorumda ne oluyor ?" felan der. Benden söylemesi. Sonra demedi demeyin...

Not : Yeri gelmişken Mum yakmaya başlamış olan bir kardeşten bahsetmek istiyorum. Barış daha çok robotik diyecebileceğimiz konulardan bahsediyor. Silah kontrol sistemleri üzerine yazdıklarıyla biraz meyli tahrip sahbi gibi görünsede, memleket olarak israilli firmalara silah modernizasyonu için ödediğimiz tonla para düşünülürse kardeş haklı...

Perşembe, Mayıs 21, 2009

Ufkumu açanlara

Bu blog da yazmaya başladıktan sonra pek çok kişi ile yazıştım ( 100'ün üzerinde ) Hatta bazılarıyla tanışıp yüz-yüze görüşme imkanınada sahip oldum. Şu an itibarıyla düzenli bir zamanı, zemin ve amacı olmasada Ortak ilgi alanına sahip insanlar olarak bir araya gelip laflamak -En azından benim için- ufuk açıcı oluyor.

Geçenlerde yine bir kaçıyla ayrı ayrı görüşme imkanına sahip oldum. Neler görüşmedikki

  • verilen arge destekleri yeterli sayıda başvurunun bile olmaması
  • Destek alanlarında bürokrasiyle aldıklarına pişman olmaları
  • Üniversitelerimizin hali,
  • Formalite gereği hazırlanan yayınlar.
  • Bir heyetin dudakları arasındaki akademik ünvanlar
  • Açık kaynak kodlu yazılımları niçin desteklemeliyiz.
  • Ticari ürünlerin Açık kaynak kodlu alternatiflerine olan haksız rekabetleri
  • Embeded programlama nın nekadar önemli olduğu ve fakat ihmal ediliyor oluşu
  • Bu ihmal yüzünden yabancı ülkelere giden tonla paramız - zengin memleketiz vesselam -
  • Neler yapıyoruz.
  • Secure programming ve önemi, özellikle embeded sistemlerde
  • Finger2Face nin pek akıl yatmadığından DNA2Face'in daha mantıklı olmasına
...

İnşallah bir gün gelir düzenli bir zaman,zemin ve amaç üzerine toplanıp görüşme imkanımız olur...

Not : Bu yazıyı hazırladıktan sonra Ferruh Mavituna'nın "Fikir Üretme, Etki ve Tepki" yazısını okudum konuyla ilgisini sizlerin arifiyetinize bırakıyorum...

Pazar, Mayıs 10, 2009

Tıbbi görüntü İşleme ve ITK


Bir vesileyle Tıbbi görüntü İşlemeyle ilgili konulara bakınca gördümki. Tıbbi görünlülerin kendilerine has özel form ( DICOM mesela ) ve kullanımları var. Mesela bir tomografi aslında 3 boyutlu bir hacim ve gerektiğinde istenilen yerden kesit alınabilmesi gerekiyor. Bu durumda tek başına OpenCv ile birşeyler yapabilmek pek mümkün değil.

İşte ITK yani "Insight Toolkit" bu işler için yazılmış açık kaynak kodlu* cross-platform devasa bir kütüphane. Devasa diye boşuna demiyorum, kütüphaneyi derlemek saatler alıyor. Açık kaynak kodun Kodlaması C++ ile yapılmış. Lisans sistemi de BSD yani ticari uygulamalarınızda da rahatlıkla kullanabilirsiniz. Yalnız alıştığımız şekilde değilde CMake ile build sistemi oluşturulmuş. İlk başta biraz tuhaf gelsede biraz cebelleşerek proje dosyalarını oluşturmanız mümkün.

Kütüphanenin pekçok şeyi yapabiliyor olmasına rağmen görselleştirme ve Grafik Kullanıcı Arabirimi ile ilgili bir kısmı yok. ITK Görselleştirme için VTK yı öneriyor. Pek tabiiki GKA olarakda biz FLTK yı öneriyoruz. Ekran görüntüsünden de anlayabileceğiniz gibi. FLTK ile ITK 'yı kullanan ilk biz olmayacağız. ( unutmadan bir de vtkFLTK diye bir şey var ) Pek tabii ki matlab içinde birşeyler var MATITK

Kütüphane gerçekten çok büyük ve herhalde öğrenmek için epey bir emek ve zaman sarf etmek gerek. Yinede İlk fırsatta giriş niteliğinde bir örnek hazırlmak istiyorum**.


*
Açık Kaynak Kodun önemini bir kez daha görüyoruz. Başka türlü nasıl 13 Milyon Dolarlık bir kütüphaneyi kullanmaya imkanınız olabilirdiki ?
** FannTool 1.0 ile uğraşıyorum bunun dışında yapacak işler çok zaman ve zemin yok tembellik had safhada kısmet artık...

Cuma, Mayıs 01, 2009

GNU Octave bir MATLAB alternatifi

MATLAB programı malum, her konudaki araştırma projelerinde kullanılabilecek kapsamlı matematiksel modelleme ve görselleştirme araçları sağlıyor. Ayrıca C sözdizimine benzer kendi script dilini de içeriyor.

Bir de MATLAB’ a paralel geliştiren açık kaynak kodlu ve tamamen ücretsiz olan GNU Octave var. Daha evvelden belki duydunuz, belki de duymadınız, belki de bir türlü deneyemediniz. GNU Octave açık kaynak kodlu bir matematiksel analiz ve modelleme paketi. Sözdizimi olarak MATLAB ile uyumlu. Evveliyatı olmasına rağmen 1992 den beri tam zamanlı olarak geliştiriliyor.

Octave ana sayfası http://www.gnu.org/software/octave/

Matlab’ ın paketlerine paralel pek çok paketi de içinde bulunduruyor. Örneğin, Artificial Neural Networks, Audio, bioinfo, image processing, information theory, signal processing, finance, econometrics, …
Octave Paket listesi : http://octave.sourceforge.net/packages.html

Octave Forge sitesinden işletim sisteminize uygun paketleri indirip kurabilirsiniz.
Octave SourceForge : http://octave.sourceforge.net/

Mevcut son kararlı sürümü 3.0.5. Kendiniz derlemekle uğraşmak istemezseniz, hazır kurulum dosyalarını kullanabilirsiniz.

LINUX: Kaynak kodu kendiniz derlemek istemezsiniz, kullandığınız Linux dağılımının deposuna bir bakın. Ben Ubuntu kullanıyorum, apt-get ile kolayca kurabilirsiniz. Kurulu değil ise gnu-plot u da kurun.

WINDOWS: Kurulum dosyası versiyon 3.0.2. (Octave + Tüm paketler tek tıkla kuruluyor)

İndirmek için Link :

Internette çeşitli kaynaklarda 3.0.3. versiyonu kurulum dosyasını da bulabilirsiniz. Ben bu versiyonu kurdum. Ama bu kurulum yenilenecekmiş, bu yüzden şimdilik resmi depodan çıkarılmış. Son versiyon kurulumlar için ara ara yukarıdaki sayfaları takip edin. Kurulum gerçekten çok kolay.

GNU Octave elbette tam olarak MATLAB değil. Ancak özgür olan bu ortamda neler yapabileceğinize şaşıracaksınız.

Son olarak, Octave ı nasıl öğreneceksiniz. Tabii ki herhangi bir Matlab kitabından. Ayrıca Octave için yazılmış bir çok tutorial ve hatta basılı kitaplarda mevcut. Paket kullanımında Matlab ile farklılıklar olursa internet kaynaklarına bakabilirsiniz..

Blogun ruhuna uygun olarak, bundan sonraki yazida octave ile bir image processing örneği vermeye çalışacağım.

Yagi


Not: Altındaki imzadan da göreceğiniz gibi yazı bana ait değil. Bu yazıyla bir ilk de gerçekleşmiş oldu. Okurlarımızdan birinin yazısını yayınlamış olduk. Daha önce de Yabancı bir arkadaş tezini yollamışdı ve bizde yayınlamıştık. Yeniliklerimiz devam edecek - inşallah -