Gökhan Tunçkale
ABOUT THE AUTHOR

Gökhan Tunçkale

IdeaSoft'ta Yazılım Geliştirici. Yıldız Teknik Üniversitesi Matematik Mühendisliğinde halen öğrenci. Yazılımla ilgili konularda çalışmayı sever. Hem Beşiktaşlı, hem Barcelona takipçisi.

Veri Madenciliği dediğin şey de ne?

Hani sürekli söylenen bir laf vardır, “bilgi çağında yaşıyoruz artık” diye. Aslında bilgi çağında yaşamıyoruz, veri çağında yaşıyoruz. Cep telefonuyla konuşurken, kredi kartı ile ödeme gerçekleştirirken, sosyal bir ağda birşeyler paylaşırken ya da bir markette satın almak istediğimiz ürünlerin barkotlarını okuturken içinde bulunduğumuz veri uzayını sürekli genişletiyoruz. Yani hepimiz bir veri uzayındayız ve bu uzay sürekli büyüyor. İşte veri madenciliği temel olarak bu uzayda işimize yarayabilecek bilgileri sürekli oluşan verilerden üretmemizi sağlıyor. Yani veriden bilgi çıkarmamızı sağlıyor.

Peki ne tür verilerden bilgi çıkarılmaktadır diye sorarsanız, sağlıklı bilgi çıkarımı yapılabilecek verilerin belli başlı özellikleri olması gerekiyor:

  • Verinin uzun bir dönemde(birkaç yıllık veri genelde fena değildir) oluşması gerekiyor.
  • Verinin bir ön işlemden geçirilmesi gerekiyor. Yani sistemsel işlemler için kullanılan verilerin(OLTP) veri madenciliği uygulamalarına hazır(OLAP) hale getirilmeleri gerekiyor.
  • Verilerin içindeki kirli ya da boş verilerin normalize edilmesi gerekiyor. Bu normalizasyon olağan dışı verilerin boş ya da ortalama değerler ile doldurularak da gerçekleştirilebilmektedir.

Veriler hazırlandıktan sonra da bilgi çıkarımı için temel olarak şu işlemler yapılmaktadır:

  • Bilgi çıkarımı yapılacak verilerin seçimi.
  • Çıkarım metodlarının seçilmesi. Bu metodlar istatistiksel metodlardır ve veriler arasında sınıflandırma ya da kümelendirme yapmaya yararlar.
  • Verilerin belirli bir kısmının model oluşturma amacıyla seçilmesi ve çıkarım metodunun bu verilere uygulanarak model oluşturulması.
  • Verilerin diğer belirli bir kısmının test amacıyla seçilmesi ve seçilen çıkarım metodunun test verilerine uygulanarak model ile karşılaştırma yapılması.
  • Eğer yapılan karşılaştırma sonucu test belirli bir güven aralığında gerçekleşmiş ise oluşturulan modelin(yani aslında çıkarılan bilginin) daha anlamlı bir şekilde raporlanması.

Yukarıda bahsettiğim aşamalar biraz afaki gelebilir. Lakin bu aşamalar günlük hayata uygulandığında bir kitap sipariş sitesi en çok hangi türdeki müşterilerinin bilgisayar ile ilgili kitapları aldıklarını görebiliyor ya da bir sigorta şirketi kendisine başvuran müşterinin profilini belirleyip karar verebiliyor. Aynı şekilde bankalar da size ne kadar kredi limiti açacağını daha önceden yapmış olduğunuz ödemelere, harcamalara ve bu işlemlerin zamanlarına bakarak karar verebiliyor. Veri madenciliği biraz da şapkadan tavşan çıkarma hissiyatı veriyor çünkü anlamsız görünen veri yığını üzerinde bir çok işlem yaparak önemli ve anlamlı bilgilerin çıkarımına olanak sağlıyor. Hatta bazı süper bilgisayarların milyonlarca makaleyi okuyup analiz ederek Libya ve Mısır’daki isyanlardan önce oradaki işlerin kötüye gitmekte olduğu sonucunu çıkardığı bile iddia ediliyor(kaynak: http://www.popsci.com/technology/article/2011-09/supercomputer-analyzes-news-articles-predicts-revolutions).

TORNADO 101

Tornado friendfeed geliştiricilerinin python üzerinde geliştirmiş oldukları bir framework. Friendfeed’te bir canlı veri akışı vardır, bir kelime aradığınızı düşünelim, o kelime ile ilgili sonuçların sayfasına yönlendiğinizde o kelime ile ilgili yeni bir feed gelirse hemen sonuç sayfasında yerini alır, canlı bilgiyi görmeniz için sayfayı yenilemenize gerek kalmaz. Web tabanlı bu tür teknolojileri araştırmak için “long polling” ve “comet programming” kelimeleri üzerinde araştırma yapmanız yeterlidir.

Tornado sadece bir chat uygulamasına yarayan framework değildir. Aynı zamanda basit ama etkili bir veritabanı sınıfına, template mekanizmasına ve mvc destekleyici bir yapıya sahiptir. Tornado’daki en temel sınıf RequestHandler sınıfı ve bu sınıftan uygulama içinde türetilecek sınıflardır. Bu sınıf yardımıyla get, post, file ve cookie işlemleri yapılır, aynı zamanda bu sınıftaki render metodu ile templateler yorumlanır.

Basit bir tornado uygulaması yaratmak için temel olarak 3 şeyi yapmak gerekecektir:
En az 1 adet RequestHandler sınıfından türeyen ve requeste karşılık response üretebilecek bir sınıf oluşturmak,
Hangi url isteklerine hangi RequestHandler sınıfının karşılık geleceğini belirlemek
Ana python kodununun main kısmını, yani uygulamanın bellekten çalışmaya başladığı kısmı oluşturmak.

Dilerseniz bu 3 maddenin de basitçe yer aldığı bir örnek oluşturalım:

İlgili kodu çalıştırıp “http://localhost:4444” adresine bağlandığınızda “Naber” yazısını göreceksiniz.