Sayfalar

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.

4 yorum:

volkan dedi ki...

Best c=2.0, g=2.0 CV rate=76.5625
Training...
Output model: bloodTrain.txt.model
Scaling testing data...
Testing...
Accuracy = 81% (243/300) (classification)
Output prediction: bloodTest.txt.predict

C:\libsvm-2.89\libsvm-2.89\tools>

Fann 1 - LibSVM 0
:)

Ama sonuçların yakınlığı şaşırtıcı.

birol kuyumcu dedi ki...

Aşağı yukarı aynı sonuçlar. berabere demek daha doğru olur. :)
Artık bir libsvm yazısı yazmanda şart oldu.

doblo dedi ki...

bu örnegi matlab da nasıl yaparız? anlatırsanız çok sevinirim

birol kuyumcu dedi ki...

Matlab hakkında bilgim yok malesef