28 Şubat 2016 Pazar

Programda değişiklik ...

Şubat ayı için yol haritamda son adım olarak belirlediğim çok kapsamlı gerçek dünya problemli Data Science projesi hazırlama adımı üzerinde değişiklik yapmaya karar verdim.Bunun yerine daha küçük parçalara bölünmüş spesifik konularda çalışmalar yapacağım.Bu işin adı İngilizce'de Portfolio (evrak çantası,belgeler ) oluyor.Takip ettiğim kadarıyla çoğu Veri Bilimci çalışanları yeteneklerini göstermek adına bir Portfolio hazırlamışlar.Ben de bu işi kendime uygun gördüm.İlk olarak yapacağım işte Python'un Pandas kütüphanesi ile içeriğinde  keşifsel veri analizleri,veri manipülasyonları,veri dönüştürmeleri,araştırma sorularını yanıtlayan spesifik sorgular,özet tablo ve raporlar ve son olarak görsel grafikler yer alacak.Problemin konusu olarak  da küresel bir sorunu ele almaya karar verdim.Şu sıralar üstünde çalışacağım veri setini hazırlamakla uğraşıyorum.

Diğer bir yandan bu işi yaparken çok ciddi çalışmak gerekli.Tavsiyem size  Data Science  çalışmalarınızı sadece bir kariyer hazırlığı , kendini geliştirme , daha iyi iş bulmak olarak görmemeniz.Etrafınızdaki insanların  olumsuz yorumları üstünde takılmayın.(Uyarıları dikkate almayın demiyorum) Yarın bile havanın nasıl olacağını henüz %100 olarak göremiyorsak şu an Big data ve Data Science araçlarındaki gelişimin hızının ne olacağını kestirmek gerçekten çok güç.Bunu ben değil bu işin 1 numaralarından biri Andrew Ng söylüyor.Nerede çalışırsanız çalışın eğer veri ile bir şekilde haşır neşir oluyorsanız Data Science ilgili  öğrendiğiniz her pratik bilgi mutlaka size ve çalıştığınız şirkete + puan olarak bir şekilde dönecektir.Her +  puan da ülkemize ve milletimize güç katacaktır bunu kesinlikle aklınızdan çıkarmayın.

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.


20 Şubat 2016 Cumartesi

Seminerden Notlar

İtü Maslak kampüsünde yerleşik Arı Teknokent  binasında  "Exploring Wikipedia With Spark Workshop" isimli seminere bugün katılmış bulundum.Seminer Big Data Sistem Mimarı Şafak Serdar Kapçı tarafından sunuldu ve düzenlendi. Seminerin ilanı  İstanbul Spark Meetup grubundan yapılmıştı. Seminer oldukça faydalı ve bilgilendirici geçti.Workshop da uygulamalar çoğunlukla Scala dili  kodlanmıştı.Bununla birlikte sorgu işlemlerinde Sql sorgu dili de kullanıldı.Spark üzerinde SqlContext nesnesi ile hedef veri setlerine sql sorguları atmak mümkün oluyor.WorkShop'un ilk kısmında English Wikipedia üstünde sayfa görüntülemeleri üstünde keşif analizleri yapıldı.Haftanın hangi günü wikipedia en çok trafiği çekiyor,sayfa görüntülemelerinde kaç tanesinin masaüstü ve mobil konumlardan  yapılıyor olduğu gibi sorulara  SparkSql ile yanıt vermeye çalıştık.İkinci kısımda Wikipedia tıklatma akışı üstünde analizler yapıldı.Wikipedia'dan en çok istek edilen  10 makale nedir,Wikipedia'ya en çok trafik getiren siteler hangileri gibi sorular yanıtlandı.Bu analizlerin yapıldığı veri seti ise Şubat 2015 için  toplam 3.2 milyar  istek (request) le 22 milyon adet veriyi kapsıyordu.Bununla birlikte  böyle devasa veri boyutuna rağmen yaptığımız sorgulamalar kimi zaman 1 saniyenin altında kimi zaman da birkaç saniye içinde gerçekleşiyordu.Tabii ki bu kadar hızlı sorgulamalar yapmamız da  başta Spark'ın big data yazılım teknolojisiyle birlikte kullanıyor olduğumuz Databricks sanal makine platformunun da payı vardı.Mesela benim kullanıyor olduğum sanal makine kümesi toplam 270 GB Ram ve 8 çekirdekli işlemciye sahipti.Workshop'un 3.kısmında ise biraz daha ileri seviye scala ile nitelikli kod yazmayı gerektiren uygulamalar yapıldı.Bunlardan biri de Wikipedia üzerinde en çok kullanılan 10 kelime sorusunu yanıtlayan bir Scala kod bloğuydu.Bu iş için ilk önce geçiçi yeni bir tablo oluşturulduktan sonra ikinci aşamada RDD (Esnek Dağıtım Veriseti) ile flatMap,map,reduceByKey dönüşüm fonksiyonları ile kelime sayacı oluşturuldu.Ve son aşamada Sql sorgusu ile en çok kullanılan 10 kelimenin bilgisi elde edilmişti.Ve bütün bu işlemlerin yapılması  sadece 1 dakikanın altında 25 saniye gibi olağanüstü bir sürede gerçekleşti.En son olarak da Spark'ın grafik veri işleme aracı olan GraphX'e kısaca değinildi.Bu veri işleme aracının yaptığı işin temelinde veriyi bir network ağı halinde ele alması ve analiz edilmesine olanak tanıması yatıyor.Örnek uygulamalar olarak da seminerde sosyal medya ağları ve google'ın pagerank seo uygulaması verildi.

18 Şubat 2016 Perşembe

Kaggle Veri Bilimi Proje Yarışmasına Giriş

Şubat ayı için belirlediğim yol haritasında  1.durak olan web scraping çalışmasını  tamamladıktan sonra sırada 2.durak olan Kaggle Competition (veri bilimi proje yarışması )  beni bekliyor.Bunun için dün Kaggle platformuna üye oldum .Üye olduktan sonra hesabımı, spam tespit etme algoritması ile sınamak için  bir matematik problemi sordular.Problemi çözmek için python'da üç beş satırlık bir for döngüsü yazdım.Her ne kadar hoş bir karşılama olmasa da yaptıkları iş kötü niyetli robot yazılımları engellemek için çok faydalı bir işti.

17 Şubat 2016 Çarşamba

Spark Semineri


Kısmet olursa Cumartesi günü saat 11:00 İtü Maslak Kampüsünde Apache Spark ile ilgili düzenlenecek bir  canlı uygulama seminerine katılacağım.Seminere kaydımı meetup.com sosyal platformunda İstanbul Spark  topluluğu üzerinden yaptırdım.Özellikle workshop amaçlı olması sebebiyle çok daha faydalı bir seminer olacağını düşünüyorum.

Apache Spark, WikiPedia'ya göre açık kaynak olarak düzenlenmiş ve bilgisayar kümeleri (cluster computing) yapısı üstüne  kurulmuş öncelikle Berkeley Kaliforniya AMPLab'da geliştirilmiş ve sonrasında Apache Yazılım Kuruluşuna bağışlanmış bir veri işleme motorudur.Özellikle geniş ölçekli big data olarak tabir edilen verilerin işlenmesi için ideal bir yapıdır.Spark sisteminin çalışması hakkında  teknik bilgiyi Sadi Şeker'in şu yazısında   ve devveri.com'da bulabilirsiniz.Spark'ın sitesinde şu açıklama dikkat çekicidir "bellekte Spark , Hadoop Map Reduce'den 100 kat ve disk'ten 10 kat daha hızlı çalışır.Scala,Java,Python ve R dillerinin paralel kullanıldığı etkin uygulamalar yazılmasına olanak tanır.İçeriğinde SQL,MLLib (Makine Öğrenmesi),GraphX(grafik işleme) ve Spark Streaming (gerçek zamanlı veri yayınlama) kütüphaneler barındırır.Spark'ın ilk sürümü  30 Mayıs 2014 tarihinde yapılmakla birlikte  tam sürümü  4 Ocak 2016 'da yapılmıştır.

Benim Spark ile tam olarak tanışmam beş saatlik bir içerik üzerinden ;  dataquest üzerinde aldığım bireysel öğrenmeli Data Scientist  eğitiminde gerçekleşmişti.Daha öncesinde Quora,kdnuggets ve takip ettiğim data science bloglarında kısmen bilgi sahibi olmuştum.Henüz çok yeni bir veri işleme yazılımı teknolojisi olması sebebiyle  kullanımı konusunda insanların kafasının genel itibariyle karışık olduğunu gördüm.Bir kesim sadece Scala ve Java ile kullanıldığında etkili olacağını söylerken diğer bir kesim de Python ve Spark 'ın kombine kullanılmasından çok büyük faydalar sağlanacağını söylemişler.Kdnuggets'de yer alan bir yazıda ise Python ve Spark ile şimdiye kadar hiç Kaggle data science yarışmalarında ödül kazanılamadığından dem vurulmuş bununla birlikte giderek aradaki farkın kapatıldığına işaret edilmiş.Ve ek olarak belirtmem gerekirse Spark'ın Python ile birlikte kullanılabilmesi için de PySpark uygulaması oluşturulmuştur.

16 Şubat 2016 Salı

Web Scraping Çalışmasından Notlar

Şubat ayı için belirlediğim yol haritasında 1.durak olan Web Scraping çalışmasını da  Harvard Üniversitesi Data Science ders notu üzerinden geçtim. Çalışma esnasında dikkatimi çeken ve önemli notları da sizlerle paylaşmak istiyorum.Ders notlarında yer alan örnekler Python 2 ile yazılmış.Eğer benim gibi Anaconda Python 3.4 dağıtımını kurduysanız bu örneklerde yer alan kodlar sizin için çalışmayacaktır.Ufak tefek değişiklikler yaparak bu açığın üstesinden gelebilirsiniz.İmport urllib2 yerine "import urllib" ve source = urllib2.urlopen(url). yerine ise "source = urllib.request.urlopen(url).read()"    yazdığınızda kodlar çalışır hale gelecektir.(Atladığım yer olabilir lütfen hatırlatınız)

Ders notlarında ayrıca  gerçek dünya uygulamalarına da yer verilmiş.Uygulamaların birinde New York Times gazetesinde geçen haberlerin Twitter üzerinde yarattığı etkiyi coğrafi açıdan göstermek amacıyla  bir web scraping çalışması gerçekleştirilmiş ve neticesinde güzel bir sunumla elde edilen veri görselleştirilmiş.Daha çok dikkatimi çeken diğer bir uygulamada Twitter'da  atılan bir tvit üzerinden twitter kullanıcılarının duygusallık analizini gerçekleştiren  bir çalışmaydı.Mesela Turkey diye sorgu attığımızda bugün için Twitter üzerinden atılan 303 tvit üzerinden duygu kümelenmesinin alert ve excited  tarafına yakın olduğunu aşağıda yer alan ss de  görebiliyoruz.



Burada yapılan iş ilk önce sorgulanan  kelimeye göre  atılan tvitlerin tespit edilmesi ; sonrasında web scraping yöntemiyle ve api kullanımıyla bu tvitlerin toplanması ve son aşamada elde edilen tvitlerde yer alan anahtar kelimelerin duygu tarifini yapan  ilgili tanımlarla sözlükte  eşleştirilmesi ve sonucun görsel hale getirilmesi olarak gerçekleşiyor.


Python'da web scraping işlemlerini urllib kütüphanesiyle gerçekleştirebileceğiniz gibi yanında bu işi daha da kolay getiren ve kod yazımını azaltan BeautifulSoup  kütüphanesinden de yararlanabilirsiniz.En çok kullanılan fonksiyonlardan birisi de findAll.Bu fonksiyon ile web sitesinde elde etmek istediğiniz verinin html etiketini inspect element ile tespit ettikten sonra yapmanız gereken findAll fonksiyonunu tespit ettiğiniz etiket ile çağırmak oluyor.Bu fonksiyon sayesinde web sitelerinden izin ve gizlilik kurallarını aşmamak kaydıyla istediğiniz veriye otomatik olarak erişebilir ve diskinize depolayabilirsiniz.Bu iş özellikle internetten veri toplama işi yapan kişiler için çok büyük bir faydadır.Saatlerinizi alabilecek  bir tablo hazırlığını  python'da kod yazarak dakikalar içinde bitirebilirsiniz.Bu gerçekten çok büyük bir kolaylıktır.




15 Şubat 2016 Pazartesi

Şubat Yol Haritası

Bazı özel işlerimi de hallettikten sonra Data Science (Veri Bilimi) çalışmalarıma kaldığım yerden tam olarak yoğunlaşabilirim.Bunun için de ajandam da üç adet başlık oluşturdum.Başlıklar şöyle 1-Web Scraping 2-Kaggle Competition  3-Data Science Projesi .  Web Scraping , Data Science projelerinde veri setlerini oluştururken kullanılan yöntemlerden birisidir.Web Scraping,kod yazarak web sitelerinde istenilen verilere otomatik olarak erişmeyi ve elde etmeyi sağlayan bir yöntemdir.Web Scraping ile ilk tanışmam DataQuest üzerinde DataScientist eğitimi içinde gerçekleşmişti.Bu sefer  bu bilgiyi Harvard'ın Data Science eğitim notları ile IPython Notebook üzerinde uygulamalı olarak pekiştirmek istiyorum. Sonrasında ise Data Scientist (Veri Bilimci) ler için sosyal bir topluluk olan ve içinde para ödüllü Data Science proje yarışmaları düzenleyen  Kaggle 'da  bir Data Science proje yarışmasına katılacağım.Bu sayede  Data Science işinde hangi seviyede olduğumu ve eksik bilgilerimi tespit etme fırsatım olacaktır.Son başlıkta ise bu işi daha profesyonel hale getirip hazırlayacağım iş akış şemasına sadık kalarak  çok daha detaylı derin nitelikli bir proje hazırlamayı düşünüyorum.Bu işler ne kadar zaman alır şu an için kestiremiyorum.Amacım olabildiğince yüksek performanslı çalışıp en kısa zamanda bu işleri sonuçlandırmak.

Kısa bir aradan sonra ...

Data Science üzerine yaptığım çalışmalarıma kısa bir ara vermek durumunda kaldım.Araya günlük özel hayatın getirdiği işler girdi...

Data Science çalışmasına gelince ,temel seviyede bir veri bilimi projesi hazırlayabilmek için gerekli eğitimleri tamamladığımı söyleyebilirim.Maddi imkanlarım ve kabiliyetim ölçüsünde bu eğitimi tamamladım.Proje çalışmasına başlamadan önce biraz Web Scraping konusunda DataQuest'de öğrendiğim bilgileri  IPython Notebook üzerinde pekiştirmek istiyorum.Web Scraping gerçekten Data Science işinin çok önemli bir silahı.Bu önemi geçenlerde Ebay.com üzerinde belli ürünlerle ilgili data analizi işi yaparken daha da iyi anladım.Yapacağım proje ile ilgili de  kafamın içinde şu sıralar genel konsept fikirler oluşmaya başladı.Bütün bu Data Science ile ilgili yaptığım çalışmalara  çok ciddi bir bakış açısıyla yaklaşıyorum.Hani CV'im  de  görünsün , iş mülakatlarında anlatacağım bir hikaye olsun gibi bir mantıkla katiyyen düşünmüyorum.Bu işten uzun vadeli çok büyük kazanımlar hedefliyorum.Kazanımları sadece para olarak  düşünmeyin.Daha iyi hizmet vermek de bir kazanımdır,iyileştirmedir.Eğer bir haber sitesi, ziyaretçilerine anlık ve doğru  olarak son dakika haberlerini sunabiliyorsa  bu bir kazanımdır.Sonuç olarak müşteri memnuniyeti artacak ve haber sitesi müşteri sayısını arttıracak  ve daha çok reklam alarak bu işten kazancını her halükarda arttıracaktır.