Giriş
Merhaba arkadaşlar,
Veri bilimini hep beraber öğreneceğimiz bu sürece girmeden önce herhangi bir teknik ifade içermeyen bir giriş yapan bir yazı ile başlamayı daha uygun buldum. Buradaki amacım işin nereden gelip nereye gittiğini göstermek ve neden gelecek için bu kadar önemli görüldüğünü irdelemek olacak.
Bir yol haritası çizecek olursak, ilk olarak Veri Bilimi (Data science) denilen şeyin ne olduğunu yanıtlandırmaya çalışacak ve bu soruya yanıt verdikten sonra bu bilimin varolmasını sağlayan öğelere giriyor olacağız:
- Veri Analitiği (Data Analytics)
- Internet of Things
- Big Data
Bu öğelerin ne olduğunu açıkladıktan sonra bu işin en kıymetli görüldüğü şeye, yani Makina Öğrenmesi (Machine Learning) kavramına girecek ve tüm bu dediklerimizi özetleyerek ve gelecek için ne anlamı olduğuna değinerek bitireceğiz.
Not
Bu yazı serisi kaynak olarak Matthew Renze’in Data Science: The Big Picture adlı dersini kullanmaktadır.
Veri Bilimi Nedir, Neden Önemlidir?
İlk olarak içine girmek istediğimiz bu alanın ne olduğunu yanıtlamaya çalışarak başlayalım. En temelinde baktığınızda Veri Bilimi:
(Veri Bilimi) Ham veriyi, eylem yapılabilir görüş haline getirme pratiğidir.
Yani bu disiplin, bir diğer deyişle, verinin, mantıklı kararlar almak için kullanılan bilgiye dönüştürülmesi amacını güder.
Bu disiplin üç farklı alanın iç içe geçmesi ile oluşmuştur:
- Bilgisayar Bilimleri
- Matematik ve (özellikle) İstatistik
- Alan bilgisi
Bu üçüncüsüne çok anlam veremediğinizin farkındayım, detaylandırmaya çalışayım. Bir veri bilimcisi eğer inceleme yaptığı alan konusunda bilgi sahibi değilse, çıkarttığı verileri yorumlamak konusunda ciddi sıkıntı çeker.
Şöyle düşünün, siz eğer ön bilgi sahibi olmadan finans alanındaki bir veri dizisini analiz ettiğinizde bu verinin ne söylediğini, gelecek için yaptığı tahminlerin ne olduğunu yorumlayıp bu işin istatistiğinden anlamayan kişilere nasıl anlatacaksınız?
Bu önemli bir sorudur çünkü bu alanda çalışan kişiler olarak sizin muhataplarınız genel olarak alan dışındaki insanlar olacaklar; net bir biçimde ifade edersek bir firmadaki yönetici takımı sizin raporlarınızı dinleyecek, anlayacak ve karar verecek insanlar olacaklar. Bu insanlara da “Hadi iki istatistik öğrenin canım” diyemeyeceğimiz için de bu işi bizim yapmamız gerekecek.
Veri Bilimcisi Kimdir?
Veri Bilimcisi dediğimiz insan şapkasının altında birden fazla beceriyi bulundurarak işini yapan kişidir diyebiliriz. Bu kişi bazen bir bilimadamı, bazen bir veri analisti ve bazen de bir yazılımcıdır. Bu yüzden de bu alandaki kişilerin akademik bir arkaplana sahip olup aynı zamanda yazılımcı geçmişi olan insanlar olduğunu görmek çok şaşırtıcı değildir. Belki ilerleyen vakitlerde hedefi veri bilimcisi yetiştirmek olan fakülteler görebiliriz ama günümüzde bu alanlarda uzman olmak sizin çabanıza bırakılmış bir şey.
Bu hem iyi, hem de kötü bir özellik aslına bakarsanız. İş ilanlarına göz gezdirdiğinizde genelde matematik fakültesi çıkışlı insanların arandığını görüyor olacaksınız ancak bu sizin cesaretinizi kırmasın, her ne kadar böyle olsa da bu durum bu alanın multidisipliner yapısının iş dünyasına yansıması sırasında çeşitli varsayımlarla hareket etmelerinden kaynaklanıyor. Çünkü, kabul etmek lazım, bu işi öğrenen bizler haricinde kimsenin bir veri bilimcinin ne yaptığı konusunda net bir fikri yok. Siz alanınızda uzmanlaşın, cv’nizi projelerle doldurun; varsın onlar elesinler “ama sen istatistik çıkışlı değilsin” diye, çünkü olayı sadece istatistik olarak gören bir firma, sizin söylediklerinizi dinlemeyecek, ihtiyaçlarınıza boş boş bakacaktır.
Veri Bilimcisi Becerileri
Bir veri bilimcisinin genel olarak kim olduğundan bahsettik ancak, kendinize bir metrik koymak adına, bu insanın becerileri nedir sorusuna geldiğimizde şöyle bir liste çıkartabiliriz:
- Programlama
- Veri ile çalışma
- Tanımsal İstatistik
- Veri Görselleştirmesi
- İstatistiki Modelleme
- Big Data ile çalışma becerisi
- Machine Learning
Programlama Becerisi
Burada öğrenmeniz gereken iki dil var aslında:
- SQL
- Python veya R
SQL
SQL dediğimiz dil (Server Query Language diye geçer) veritabanlarını sorgulamak için kullanılan ve her ne kadar 1970lerde icat edilmiş olsa da hem öğrenim, hem de veri seçimi, girişi ve değiştirilmesinde sunduğu kolaylıkla hala popülerliğini haklı olarak koruyan bir dil. Şöyle diyeyim, bir çok yazılım projesi aslında işin ağır yükünü SQL ile veritabanına yaptıran ön yüzden başka bir şey değil.
Günümüzde Entity Framework veya JPA gibi ORM (Object-Relational Mapping) kütüphaneleri ile birçok yazılımcı saf SQL yazmıyor olsa bile bu kütüphaneler kendi çağrılarını SQL’e dönüştürerek işlem yapıyorlar.
Python veya R
Python Guido von Rossum tarafından 1989’da yazılmış olsa da 2000’lerde özellikle popüler hale gelmeye başlamış bir programlama dili. Bizim konumuzla alakası ise bu dil günümüzde veri bilimi alanında sık kullanılan bir dil haline geldi, ki benim tercihim de bu dil üzerinden anlatmak olacak.
Bunun sebebi Python, kütüphaneleri yardımıyla sadece veri bilimi değil, başka sorunları da çözebileceğiniz bir dil. Mesela Django ve Flask ile veritabanları ile konuşan web uygulamaları yapabilir, Arduino’da çalışan projeler üretebilir, TCL/TK ile masaüstü uygulamaları kotarabilirsiniz.
R’ın kötü bir dil olduğunu düşünmüyorum bu arada, yani öyle bir yanlış anlaşma olmasın. R kendi alanında, yani veri bilimi üzerinde, tartışmasız avantajlara sahip olan bir dil - bunun en büyük sebebi de zaten bu, yani tek bir alan üzerine odaklanmış olması. Ki şu da var, Python öğrendiniz diye R öğrenemez değilsiniz, kimse “Aa sen nasıl R öğrenirsin” diye başınıza tabanca dayamayacak - ki programlamanın temellerine gireceğimiz için öğrenme süreciniz de, umuyorum ki, daha hızlı olacak.
Veri İle Çalışma
Bir veri bilimci olarak işimizin en büyük kısmı bu alanda geçiyor dersem yalan olmaz. Bu başlıktan kasıt verinin:
- toplanması
- temizlenmesi
- dönüştürülmesi
Bunların hepsinin de bizim işimiz olduğunu söylemem gerekir.
Verinin Toplanması
Nitekim bir şirketin bir konudaki sorusuna yanıt verebilecek bir model oluşturmak için en başta bu modelin besleneceği bir veri havuzu oluşturmamız gereklidir. Bu havuzu da araştırma sorusunun ve bu sorunun beraberinde getirdiği diğer soruları da düşünerek tasarlamamız olmazsa olmaz bir şeydir. Bu kısımda cinsiyetten yaşa, aylık gelir toplamından, kullanılan aracın markasına kadar değişik, ama bizim sorumuz ile alakalı ise muhakkak ki setimizde olması gereken öğeleri istemek önemlidir.
Ancak muhtemelen karşımıza çıkacak olan veri setleri, çalıştığımız şirketin daha önceden - bir şekilde - topladığı veriler üzerinden olacaktır. Böyle bir durum ile karşılaştığımızda bu verinin toplanırken hangi kurallara uyularak toplandığı, hangi örneklem üzerinden alındığı gibi metodolojik sorulara yanıt vermeden işe başlamak o araştırmayı daha başlamadan bitirebilir.
Şöyle düşünün, ben kötü bir araştırmacı olarak üniversite öğrencilerinin gelir grubu nedir sorusuna sadece özel üniversite öğrencilerinin olduğu bir örneklemi kullanarak yanıt ararsam, istediğim metodu kullanayım, çıkartacağım sonuç gerçekle tamamen alakasız olacaktır. Bu yüzden önünüze gelen verinin ne olduğunu anlamadan, sorulan soruyla alakalı olduğu konusunda ikna olmadan işe başlamayın derim ben, zira sonucunda - eğer böyle bir itirazla gelmezseniz - olacak olan şey “Özgür bey bu işi beceremiyor” olur, “verimiz kötüymüş” değil.
Verinin Temizlenmesi
Veri setimizi elde ettikten sonraki adımımız bu veri setini temizlemek olacak. Bu temizlemeden kastımız boş, veya geçersiz, verilerin silinmesi veya yerlerine uygun değerlerin yazılması.
Bu konuyu uygun bir örnekle açıklamaya çalışayım: Kaggle’da bulunan Titanik verisetini ele aldığımızda yaş verisinin büyük ölçüde dolu, kabin verisinin ise neredeyse bomboş olduğunu görüyoruz. Dolayısıyla burada bizim kabin verisini atmamız, yaş verisini ise doldurmamız gerekecek. Atma işlemi kolay, ama uygun biçimde doldurmayı nasıl yapacağız?
Basitçe, yolcu sınıfına göre yaş ortalamalarını bulup; yaşları boş olan yolcuların, cinsiyetleri ve hangi sınıfta yolculuk yaptıklarına göre ortalamasını yazacağız. Bu sayede bu veriyi aşağı yukarı gerçeğe uygun bir biçimde doldurmuş olacağız.
Verinin Dönüştürülmesi
Tüm bu aşamaları yaptıktan sonra veriyi kendi sorumuzu yanıtlandıracak hale çevirmemiz gerekecek. Burada iki dönüşüm işlemi gerçekleşiyor olacak; birincisi sütunları bağımsız değişkenler ve bağımlı değişken (x ve y) olarak ayırmak; ikincisi de, eğer makina öğrenmesi yapıyorsak, makinanın model üreteceği eğitim ve bu modelin tahminlerinin test edildiği test veri setleri oluşturmak.
Titanik örneğinden devam edelim, buradaki sorumuz yolcuların hayatta kalmasının hangi faktörlere bağlı olduğu olabilir. Bu projede bağımlı değişkenimiz hayatta kalma
Survived, bağımsız değişkenlerimiz de, sözgelimi:
- Cinsiyet (
Sex)
- Yolcu Sınıfı (
Pclass)
- Nereden yolculuğa çıktığı (
Embarked)
olabilir. Bu listeye baktığımda en son yazdığımla alakalı bir bağıntı çıkmayacağını öngörsem de, veri bazen şaşırtıcı bağıntılarla önümüze çıkabiliyor.
Tanımsal İstatistik (Descriptive Statistics)
İstatistik deyince gözünüz korkmasın hemen. Tanımsal istatistik denildiğinde verilen tanım şu şekilde:
Bir çalışmada kullanılan verinin temel özelliklerini tasvir eden istatistiktir. Örneklem ve ölçüm hakkında basit özetler sunar.
Yani verinin alanlarının ortalaması, ortası, maksimum ve minimum değerleri, standart sapması ve varyasyonu gibi size verinin nasıl bir veri olduğunu ifade eden veri özetleridir bunlar.
Veri Görselleştirilmesi
Bir veri bilimci olarak muhataplarınızın genelde alan dışından insanlar olacağını söylemiştim. Bu nedenle sözlerin yanısıra görsel olarak veriyi ve bulduğunuz sonuçları ifade etmek de önemli oluyor.
Bu bağlamda gerek Python, gerekse R, işimizi oldukça kolaylaştıran kütüphanelere sahipler. Hep beraber Python’un:
- matplotlib
- seaborn
- plotly
kütüphanelerine bakıyor ve bunlar üzerinden veriyi çeşitli şekillerde görselleşetiriyor olacağız.
İstatistiki Modelleme
İstatistiki modelleme işin makina öğrenmesi kısmında önümüze çıkacak bir kavram. Bu basitçe veriden bir istatistiki model çıkartıp bunu kullanarak istatistiki tahmin ve hipotez testi yapmak demek. Python ve R bu konuda bize çok kolay, hatta bana sorarsanız korkutucu derecede kolay, bir biçimde hazırlayan kütüphaneler sunmakta. Korkutucu, zira tek satır kod yazıyoruz ve arkada korkunç bir matematik yoğunluk çalıştırılarak oldukça isabetli tahminler yapan bir modelleme oluşturuluyor. Kod yazma denilince işin ameleliğine alışmış birisi olarak beni oldukça şaşırttı bu.
Big Data ile Çalışma Becerisi
Daha sonra vereceğim bir tanımı şimdi yaparak başlayayım, big data dediğimiz şey şöyle tanımlanıyor:
Big Data, günümüz bilgisayar mimarisinin taşıyabileceğinden daha fazla veri yoğunluğunu ifade eden veri seti ve bu veri setlerinden bilgi çıkartmak için kullandığımız teknolojilerdir.
Yani Spark, yani Hadoop, yani Storm… yani cloud üstünde birden fazla makina üzerinde dağınık halde durabilen bir veriden bahsediyoruz. Siz bu araçlar ile sorgunuzu yazarsınız, bu araçlar veriyi tutan bilgisayarlara sizin sorgunuzu parçalayarak yollar ve tüm bilgisayarlar ortak biçimde çalışarak tüm veri bir bütünmüş gibi size sonuç verirler.
Böyle bir veri ile çalışmak bize nasip olur mu bilmiyorum ancak bu becerinin ileride SQL gibi kritik hale geleceğini tahmin ediyorum.
Makina Öğrenmesi (Machine Learning)
Günümüzde Almanya’nın başını çektiği, Endüstri 4.0 adını taşıyan ve yeni sanayi devrimi olarak görülen bu kavram temel olarak üretim alanında insan yerine tamamen robotların kullanılması şeklinde ifade ediliyor. Makina Öğrenmesi de bu devrimi mümkün kılan teknolojilerden birisi.
Peki bu ne demek. Hemen açıklayalım:
Karşısına çıkan ve programında yer almayan sorunları çözebilmeyi öğrenen programlar.
Bu sayede programlar, ve çalıştıkları araçlar, karşılarına daha önceden görmedikleri bir problem çıktığında çeşitli yöntemler kullanarak bunu çözmeyi deniyorlar.
Veri Bilimi Nasıl Yapılır?
Biraz uzunca bir giriş oldu değil mi? Farkındayım bu yüzden son olarak Veri Bilimi sürecine değinerek yarın Veri Analitiği Nedir sorusuna yanıt vermek üzere bitiriyorum.
Altı adımdan oluşan bu süreci şöyle listeleyebiliriz, ki bu adımlardan zaten bahsettik:
- Yanıt verilmek istenilen sorunun bulunması
- Analiz için veri toplanması
- Verinin hazırlanması
- Verimiz üzerinden oluşturulan ve hipotezimizi ama doğrulayan ama yanlışlayan bir kanıt olarak sunulabilecek bir modelin hazırlanması
- Modelin değerlendirilmesi
- Modelin sunulması
1. Yanıt verilmek istenen sorunun bulunması
Bu soru bir:
- Hipotez
- Vermek istediğimiz bir karar
- Tahmin etmek istediğimiz bir durum
olabilir.
Örnek vermek gerekirse, bir sitede x dakikadan daha fazla geçiren kullanıcılar ürün alırlar gibi bir hipotezimiz varsa bunu test edebiliriz. Ya da varolan veri üzerinden bir yatırım kararı vermek isteyebiliriz, ya da sözgelimi on senelik hava durumu verisini inceleyerek yarının hava tahmininin ne olacağına yanıt vermek isteyebiliriz.
2. Analizimiz için veri toplanması
Bu konuya değindiğim için hızlıca geçiyorum; iki ihtimalimiz var, ya bir deney ile veri toplanacak ya da varolan veri kullanılacak. Varolan veri konusundaki uyarılarımı hatırlamanızı öneririm.
3. Veriyi Hazırlama
Verinin temizlenip dönüştürülerek analize uygun hale getirilmesi.
4. Verimizden model oluşturulması
Bu aşamaya geldiğimizde elimizde veriden temelli bir model oluşturuyoruz. Ben ha bire istatistiki model deyip durdum ama sadece onunla sınırlı değiliz:
- Nümerik model
- Görsel model
- İstatistiki Model
- Makina Öğrenme modeli
Bu modellerin hepsine gireceğiz, rahat olun.
5. Modelin Değerlendirilmesi
Modeli oluşturduk oluşturmasına da bu modelin sorumuza yanıt olup olmadığı, karar vermemize yardım edip etmediği ve/veya uygun bir tahmin yürütüp yürütmediği gibi sorulara tam da bu aşamada yanıt veriyoruz. Dahası bu modelin verdiği sonuçlar, eldeki veri ve bağlama uygun mu soruları da yanıtlandırılmaya değer sorular olarak görülüyor. Yani satın alma ihtimali -%12 çıkan bir sonuç varsa mesela o modelin çok doğru olduğunu söylemek mümkün değil gibi.
6. Modelin sunulması
Bu aşamada da kendi iç kontrollerimizden başarıyla çıktıysa bu model, gidip sunumunu yapıyoruz ve kamuya açık hale getiriyoruz.
Okuduğunuz için teşekkürler! Yarın görüşmek üzere!