26 Şubat 2016 Cuma

Kaggle Titanik Veri Bilimi Projesi

İlk veri bilimi projemi daha öncesinden gün vermiş olduğum Kaggle Data Science platformunda Titanic: Machine Learning From Disaster konulu yarışma üzerinde tamamlamış bulunmaktayım.Kaggle'ın 101 olarak gördüğü hafif sıklet bu projeyi veri biliminde  öğrendiğim bilgileri sınama ve eksiklerimi görmek açısından gerçekleştirdim.Projenin amacı  eğitim veri seti üzerinde Titanik gemisinde hangi yolcuların hayatta kaldığını tahmin edebilen  bir makine öğrenmesi modeli kurmak ve bu modeli test verisi seti üzerinde sınamaktı.Ben projeyi  Python 3.4 ile  IPython Notebook terminali üstünde kodladım.Projede Pandas (Veri işleme ve analiz) ,Matplotlib-Seaborn (Veri görselleştirme),Numpy(dizi-matris işlemleri) ve Sci-kit learn (Makine Öğrenmesi) kütüphanelerinden faydalandım.





Biraz yaptığım projenin içeriğinden görsel örneklerle bahsetmek isterim.İlk resimde Titanik gemisi eğitim veri setinden küçük bir görünüm yer alıyor.Tabloda Titanik yolcularının isimleri,yolcu sınıfları,cinsiyet,yaş,bilet,kabin ve son olarak hangi limandan gemiye binmiş olduklarına dair veriler yer alıyor.İkinci resimde ise bu verilerle ilgili özet istatistik bilgileri yer alıyor.










Eğitim veri seti özet tabloda görüldüğü gibi toplam 891 satırdan oluşuyordu.Bu özet bilgiden sonra veri temizleme-sadeleştirme ve dönüştürme süreciyle  elimdeki eğitim veri setini keşifsel ve görsel analizler için hazır hale getirdim.Bu süreç esnasında Pandas ve Matplotlib ve alt kütüphanesi Seaborn'dan istifade ettim.Aşağıda yaptığım görsel analizlere ait bazı grafik örnekleri yer alıyor.




Bu keşifsel ve görsel analizler neticesinde veriler üzerinde Titanik gemisinde hayatta kalmayı etkileyen faktörler daha anlaşılır hale geldi.Bu faktörler ve aralarında ikili ilişki dağılımı üzerinden bu problemin bir  Classification (Sınıflandırma) Machine Learning problemi olduğuna karar verdim.Problemin çözümü için de bir Karar Ağacı algoritması olan Random Forest algoritmasını kullanmaya karar verdim.Random Forest algoritması ikiden fazla karar ağacı içeren modellerin çözümünde daha etkili sonuç göstermektedir.Bu algoritma Scikit Learn içinde RandomForestClassifier olarak geçmektedir.Modeli kurarken işlenecek karar ağacı sayısını,minimum yaprak ve dal sayılarını belirledim.Aşağıdaki grafikte modelin 10 farklı veri katmanı üzerinden cross validation  (çapraz doğrulama) yöntemi ile performans değerleri yer almaktadır.Kurmuş olduğum bu makine öğrenmesi modeli , gemi kazasında hayatta kalan yolcuları, ortalama %80 küsür gibi bir değerle tahmin etmeyi başarmıştı.Algoritma her seferinde rastgele olarak  karar ağaçlarını oluşturduğu ve farklı veri dizileriyle eğitildiği  için  sonuçlar farklılık göstermiştir.



Sonrasında  Random Forest içeren  bu makine öğrenmesi modelini , hayatta kalan yolcuları tahmin etmek  üzere Sci-kit learn'ün fit metodu ile çalıştırdım ve predict metodu ile de test verisi seti üzerindeki yolcu bilgilerini kullanarak yolcuların hayatta kalma durumlarını 1 ve 0 olarak tahmin ettim.Test verisi sonuçları daha az ve yeni veriler olması sebebiyle ortalamanın altında biraz düşük geldi.Sonuç bu proje  skor hedefleyen bir çalışmadan öte ,veri bilimi ile ilgili teknik ve teori bilgimi sınamak ve  güçlendirmek adına yapılan bir çalışmaydı.Şöyle bir bakıldığı zaman bütün bu işler size çok akademik içerikli gibi görünebilir.Ama Dünya hızla değişiyor.Bu hızlı değişime ayak uydurabilen yapılar ayakta kalacaklar diğerleri ise zaman içinde şüphe yok ki yok olmaya mahkumlar.Artık Türkiye'deki şirketlerde sınırları aşarak global bir yarışa girmek istiyorlarsa bir şekilde bu Veri Bilimi çözümlerinden ve Big Data teknolojilerinden istifade etmeleri gerekecektir.

Not:Projenin kaynak kodunu gösteren IPython Notebook dosyasına erişmek için github profilimde yer alan bu sayfayı ziyaret edebilirsiniz.

1 yorum:

  1. Tensorflow'un yapay sinir ağları da denenebilir; kavramları, yöntemleri bilmek kütüphâne kullanmaktan daha önemli bence. Allâh-u Te'âlâ'nın mükemmel yarattığı insândan, doğadan esinlenerek tasarlanan bu algoritmaların çalışma mantığını kavramak gerekiyor bence. Proje açıklamanız sâde ve anlaşılır. Allâh-u Te'âlâ hayırlısıyla, rızâsına muvâfık olarak başatılı eylesin, Âmîn.

    YanıtlaSil