10 Ağustos 2014 Pazar

Bayes Teoremi: Sözlerin seni ele veriyor!

“Bilimin temellerinden teknolojinin limitlerine,
bizzat insan durumunun tanmına kadar bence 
hesaplamanın kaderi geleceğimizin fikrini tanımlamaktır.” 
Stephen Wolfram


TEDTalks videolarından S.Wofram'ın “Her şey Teorisini Hesaplamak” konuşmasından çok etkilendiğimi söylemeliyim. Oluşturduğu programlarla aklınıza gelebilecek her şeyi hesaplamayı amaçladığını, bunu da başardığını görebiliyoruz ve sonunda şöyle bir farkındalıkla vurucu etkisini yapıyor. Doğada görülen karmaşık sistemlerin oluşmasını bir kaç basit kural sağlayabilir! Elimizle oluşturduğumuz basit bir kaç basit kuralın farklı kombinasyonlarda bir araya gelmesiyle tahmin bile edemeyeceğimiz kompleks oluşumlar meydana gelebilmektedir. Bu bilinçle basit birkaç kuralın değişikliğiyle farklı evrenlerin keşfi veya oluşumu ne kadar da mümkün :).



Hayatını bu hesaplamalara adayan Wolfram, egosunu sahiplenecek kadar da zeki ve aşmış biri kanımca. Mathematica adlı programı ilk önce sadece kendi kullanması için oluşturmak istemiş. Kendi değerinin farkındalığıyla insanın kendi için bir şeyler yapması ne kadar da güzel... Bunu da şu örnekle açıklıyor Galileo nasıl kendi icat ettiği mikroskobu kullandıysa ben de kendim kullanmak istedim.



Wolfram'ın anlattıklarından daha fazla bahsetmeyeceğim, çünkü şuan şu satırları okuyan herkesin farklı bir dünyayı keşfetmenin hazzının ne olduğunu görmek istedikleri takdirde bu videoyu izleyeceklerine inanıyorum. Konuşmanın bana hissettirdiklerine ve fark ettirdiklerine devam edecek olursak, basit algısının neye, kime ve nereye göre değiştiğiyle alakalı ilginç duygular denilebilir. Bakış açının objektifliğiyle ve çeşitliliğiyle neler ortaya konulacağının en mükemmel sonuçlarından biriyle karşı karşıya olmaktan duyduğum sevincin tarifi yok sanırım.



Geleceğe dair bir fikir yürütme çabaları insanoğlunun doyumsuzluğuna bir çare arayışı gibi geliyor bana. Geleceğimizi merak ediyoruz, geleceğimizin nasıl geldiğini (oluştuğunu) merak ediyoruz. Sonrasında geçmişin ayak izlerini takip ederek geleceğimizi inşaa ediyoruz.



Yine Wolfram' ın dediği gibi bilimin temellerinden ve teknoloninin limitlerinden yararlanmak ben de direk “Biyoinformatik” algısını oluşturuyor. Sonrasında da şu soru zinhimi kurcalamaya başlıyor. Canlı, bir algoritma mıdır? Algoritma; çözümün adımlarla ifade edilmesi ya da bir sorunun programlama aşamasında adım adım soruna yönelik çözüm kodlarının yazılması diye de tanımlanabilir. Bu durumda tüm Biyoinformatikçilerin canlının oluşumunun bilinmezliğinin verdiği soruna çözüm bulma amaçlı algoritma geliştiriyorlar. Geliştirirken teknolojinin limitlerini kullanıyorlar ve Biyoloji bilimini esas alıyorlar.


"Think Bayes" adlı kitaptan devam ettiğimiz Bayes Teoremi için öncelikle kitaptaki şu örneği inceledik. B1 ve B2 kasemiz var. B1 kasesinde 30 vanilyalı, 10 çikolatalı kurabiye var, B2 kasesinde 20 vanilyalı, 20 çikolatalı kurabiye var. Bir tane kurabiye alacağız, bu kurabiyenin B1 kasesinden vanilyalı olma olasılığı nedir?

Daha önceki blog yazımda da bahsettiğim gibi Bayes istatistiğini şu formül ile oluşturuyoruz. 
Vanilyalı:V, Çikolatalı:Ç ise;
P(B1/V) =  P(B1) * P(V/B1) / P(V)
               = (1/2 * 30/40) /  (50/80)
              = 3/5
Canlının genlerinin kodları ve vanilyalı kurabiyeler bir yana dursun biz biraz bizi biz yapan kişiliklerimizin ele verdiği şeyler üzerinde oluşturduğumuz algoritamalar üzerinde duralım :). Bildiğiniz üzere yaz stajımız başladığından beri ekibimizin her üyesi blog yazmakta. Her birimizin yazım tarzı birbirinden oldukça farklı, hatta şöyle de denilebilir yazstaji2014.blogspot.com.tr web adresinden ulaşabileceğimiz blogumuzda her güne dair yapılanları iki kişi yorumlamakta ve aynı şeyleri yapmamıza rağmen anlatımın ne kadar farklı olabildiğini görebilmekteyiz. Sizin de bildiğiniz gibi her insanın sevdiği yazar bile değişiklik göstermekte. Biz de ortaya bir istatistik koymak istedik. Hangi yaz stajyeri en çok hangi kelimeleri kullanıyor, bu kelimelerin kullanım frekansı nedir? Herkes için bu özellikler ortaya koyulduktan sonra ki amacımız, isimsiz bir yazının kime ait olduğunu tespit edebilmek olacaktır. Şöyle bir yol bile izlemeyi düşündüğümüzü söyleyebilirim, onedio testleri gibi bir test oluşturup adını da “GenKök'ün hangi yaz stajyerisiniz?” koymak istiyoruz. Sizin için ne derece önemlinin yanında bizim için gayet keyifli bir süreç olmakta.:)



Projeksiyonla yansıtarak ortak yazdığımız kodlarla ortaya koymaya başladığımız istatistikler de kendi adıma insanların çok az kullandığı kelimeleri kullanmada patlama yaşatıyorum diyebilirim. Bu da benim kimliğim oluyor ve böylelikle yazının bana ait olduğu ortaya koyabiliyoruz. Eğer bir gün isimsiz bir e-mail alırsam bunun kime olduğunu bu yöntemle tahmin edebileceğimi bilmenizi isterim! :) Bayes teorimi gün geçtikçe beni kendisine daha bağlı hale getiriyor, normları yıkıp geçmesiyle ortaya koyduğu her parametrenin varlığını sonucundaa göstermesi nedeniyle beni kendisine hayran bırakıyor. Artık tabuları yıkıyoruz ve görüyoruz ki küçüklükten beri bizi inandırdıkları, bir parayı havaya atıp tura gelme ihtimali ½ 'dir savı çürüyüp gidiyor. Bayes teoremi bize bir kelimenin bir yazıda bulunma istatistiğinin yanında yazının uzunluğuna bağlı olarak kullanılma frekansına da bir değer vermesiyle diğer istatistiklere göre daha gerçekçi sonuçlar ortaya koyuyor.

Problemimize geri dönecek olursak, bizim kurabiye probleminden daha farklı bir sorunumuz vardı. Kaselerimizdeki kurabiyelerimiz eşit değildi yani blog yazılarımızda her birimizin toplam kelime sayısı eşit değildi. Bunu normalize edecek bir formüle ihtiyacımız olduğundan dolayı kitabı okumaya devam ettik. Tabi ki kitapta aradığımızın cevabını da bulduk. 

Örnek verecek olursak;

Bi: 30 A:6, Bu:20 A:4

Bi: Bihter' in Blogundaki Kelime Sayısı, 
A: Ahmet kelimesi,
Bu: Burak' ın Blogundaki Kelime Sayısı

P(Bi/A) = (P(Bi)* P(A/Bi)) / P(Bi) * p(A/Bi) + p(Bu) * p(A/Bu)
              = ( 1/2 * 6/30) /  (1/2 * 6/30 + 1/2 * 4/20)
              = 1/2


P(Bu/A) = (P(Bu)* P(A/Bu)) / P(Bi) * p(A/Bi) + p(Bu) * p(A/Bu)
              = ( 1/2 * 4/20) /  (1/2 * 6/30 + 1/2 * 4/20)
              = 1/2

1/2 + 1/2 = 1 --> Bu formül ile her birimizin blog yazılarında ki kelimelerin farklı sayıda olmasına rağmen tüm olasılıkların toplamının "1'e" eşit olmasını sağladık. Yani blog yazılarındaki toplam kelime sayısı farklı olsa da doğru sonucu ulaşmış oluyoruz, bize geri kalan Python'da bunun algoritmasını oluşturmak. Bayes bir harika!
 
"Ipython" kullanarak yazdığımız kodlarımızı "Team Viewer"  programını kullanarak bilgisayarlarımızı birbirine bağlayarak kod yazmaya devam ettik. Müdahale etmek isteyen kendi bilgisayarında yazmaya başlayınca birbirine bağlı tüm bilgisayarlarda da değişim gerçekleşiyor. GenKök ekibi gezmeyi ve gezdiği her yerde çalışmayı çok iyi bildiğinden dolayı, bilgisayarlarımıza Team viewer'ı yükledikten sonra Starbucks'ın yolunu tuttuk, sanki o geniş masayı bizim için koymuşlar. Bir arabaya 7 kişi sığıp her yere eğlenerek gitmek nasıl huzurlu nasıl güzel anlatamam :) Sonrasında Ahmet Raşit Hocamız'da bize katıldı, yanımızda değildi ama yine Team viewer ile kodlarımızda düzeltmeler yaparken hem anlattı hem değiştirdi. Oldukça keyifli olduğunu söyleyebilirim. Biz böylelikle sabahlara kadar çalışmaya devam ediyoruz.



Ipython'da 3 blog yazarının 3'er blog yazısını alıp bu bloglardaki ortak kelime frekanslarını çıkartıp bir de karşılaştırmak amaçlı test yazısı ekleyip o yazının kime ait olduğunun olasılığını hesapladık. İlk önce deneme amaçlı kendi yazımın diğer üç yazımla benzerliğinin ortaya konulması amacıyla test ettik. Ve eklenen 4. test yazısı %40 olasılıkla bana benzediği, yaklaşık %30'ar benzeliklerle de diğer iki blog yazarına benzediğini ortaya koyduk. Bu da demek oluyor ki gerçekten de her birimizin kendine has bir tarzı var. Bir yazı kimliği var. Bir çok güzel sonuç daha koyduk ve bunları yaparken sonuç bulduğumuzdaki heyecanımız, ellerimizle "çak" dediğimiz bir sürü an yaşandı. Paylaşımlarla büyüttüğümüz algoritmalarımızla biz çokça mutluyuz. Bu ekip bir harika!

Hani hep derdimya yolda kalın diye, ben yolda kaldıkça yeni yeni fırsatlar çıkmaya başladı. Fırsatları iyi değerlendirdiğimiz günlerde görüşmek dileğiyle...

Not: Dikkat et sözlerin seni ele veriyor, benden söylemesi :)
Bihter


Hiç yorum yok:

Yorum Gönder