Veri bilimi üzerinde çalışırken verileri nasıl yöneteceğimizi, nasıl ayrıştırıp düzenli hale getirebileceğimizi, dönüştüreceğimizi, analiz edeceğimizi ve görselleştireceğimizi öğrenmeliyiz. Tabii, bunları yaparken bazı araçlardan yararlanacağız. Doğru araç setini kullandığınızda programlama bilgisi olmadan da veri bilimi alanında çalışmanız mümkündür. Ama veri bilimi alanında çalışacaksanız, veriler üzerinde programlama becerilerine sahip olarak çalışmak size esneklik kazandırır ve fark yaratır.
Bir çok aracın görsel programlama ve modelleme imkanı bulunur.
Bu kolaylık, yazılım dili bilmeyen kişilerin de veri bilimi alanında çalışmasını ve geliştirme sürecinin kısalmasını sağlar.
Veri bilimi alanında açık kaynaklı uygulamalar lider konumdadır. Ancak bunları kullanırken yazılım yeteneğiniz ya da yazılımcısı olan bir ekibiniz yoksa ücretsiz olsalar bile; konfigürasyonu, özelleştirilmesi ve bakımı gibi maliyetleri olacaktır. Biz veri bilimi araçlarını incelerken hem açık kaynaklı hem de ticari yazılımları ele alacağız. Birbirlerinden üstün yanlarını, eksik ya da avantajlı yönlerini de zaman içerisinde değerlendireceğiz.
Ayrıca veri bilimi alanında çalışırken bulut bilişim hakkında da önemli bilgiye sahip olmanız gerekecektir. Çünkü, daha öncede bahsettiğimiz gibi büyük veri(big data) ile çalışırken birden fazla bilgisayarın gücüne ihtiyaç duyacağınız veri setleriniz olabilir.
Veri bilimi alanında çalışırken en çok kullanılan programlama dilleri Python ve R ile birlikte SQL’dir.
Bunların yanı sıra; Scala, Java, C++ ve Julia en popüler olan dillerdendir. Kendi alanında çok güçlü yönleri olan Javascript, PHP, Go ve Ruby gibi dillerde mevcuttur. Bu dillerden hangisini öğrenmeye ihtiyacınız olduğu; çalışacağınız şirkete, o şirketteki rolünüze ve çözmeniz gereken sorunlara göre değişkenlik gösterebilir. Veri Bilimi alanında çalışırken üstleneceğiniz görevlere göre rolünüz belirleyici bir etkendir;
- Veri Analisti(Data Analyst),
- İş Analisti(Business Analyst),
- Veritabanı Geliştirici(Database Engineer),
- Veri Mühendisi(Data Engineer),
- Araştırmacı(Research Engineer),
- Veri Bilimi Uzmanı(Data Scientist),
- İstatistikçi(Statistician),
- Yazılım Mühendisi(Software Engineer),
- Ürün Yöneticisi(Product Manager),
- Proje Yöneticisi(Project Manager) gibi
Veri Bilimi Görev Kategorileri
Farklı veri bilimi görevleri için kullanılan pek çok farklı araç mevcuttur. Bu araçların hangi veri bilimi alanında kullanıldıklarını görmeden önce, Veri Bilimi görevlerini kapsayan alanlara bir göz atalım. Ham verilerin yararlı olabilmesi için; veri yönetimi(Data Management), veri entegrasyonu ve dönüşümü(Data Integration and Transformation), veri görselleştirme(Data Visualization), model oluşturma(Model Building), model dağıtımı(Model Deployment), model izleme ve değerlendirme(Model Monitoring and Assessment) gibi çeşitli Veri Bilimi görev kategorilerinden geçmesi gerekir. Bu görevleri yapmak için veri varlık yönetimi(Data Asset Management), kod varlık yönetimi(Code Asset Management), yürütme ortamları(Execution environments) ve geliştirme ortamlarına(Development Environments) ihtiyacınız vardır.
Veri Yönetimi(Data Management) görevleri verileri toplamak ve kalıcı olarak depolama işlemleridir. Veriler Twitter, Flipkart, Medya, Sensörler ve daha fazlası gibi birçok kaynaktan toplanır. Toplanan verileri kalıcı depolamada saklayın, böylece ihtiyacınız olduğunda kullanılabilir.
Veri Entegrasyonu ve Dönüşümü(Data Integration and Transformation) Extract,Transform&Load – ETL olarak da bilinir. Uzak veri yönetimi sistemlerinden veri alma işlemleridir. Ayrıca, verilerin dönüştürülmesi ve yerel bir veri yönetim sistemine yüklenmesi de bu kapsama girmektedir.
Verilerin bazıları birden çok depoda yer alır. Örneğin aynı işlem için, bir veritabanı(database), bir veri küpü(data cube) ve düz dosyalar(flat files)da depolanan verilerin alınması gerekebilir. Bu çok sayıda depodan veri ayıklamak ve Veri Ambarı(Data Warehouse) gibi merkezi bir depoya kaydetmek için Veri Toplama(Extract) işlemi kullanılır. Veri ambarları öncelikle veri analizi için büyük miktarda veri toplamak ve depolamak için kullanılır. Daha sonra, Veri Dönüşümü, verilerin değerlerini, yapısını ve biçimini dönüştürme işlemidir. Verileri topladıktan sonra, bir sonraki adım verileri dönüştürmektir. Örneğin, inch ve libre olarak depolanmış boy ve kilo verilerinin cm ve kg gibi metrik değerlere dönüştürülmesi gerekebilir. Son adım, verileri depolama zamanı. Dönüştürülen veriler Veri Ambarına geri yüklenir.
Veri Görselleştirme(Data Visualization) görevleri, veriyi teslim aşamasının bir parçasıdır. Veri görselleştirme, verilerin ve bilgilerin grafiksel gösterimidir. Verileri grafikler, haritalar, animasyonlar vb. şeklinde temsil anlaşılır bir şekilde iletir.
Çeşitli veri görselleştirme biçimlerini tercih edebilirsiniz; her bileşenin boyutunu karşılaştıran bir çubuk grafik(charts), hiyerarşi verilerini görüntüleyen bir ağaç haritası(tree map), zaman içinde bir dizi veri noktasını çizen bir çizgi grafiği(plots) ve verileri konuma göre görüntüleyen bir harita(maps) içerir.
Model Oluşturma(Model Building), çok sayıda veriye sahip uygun bir algoritma kullanarak Makine Öğrenimi ya da Derin Öğrenme algoritmalarıyla kalıpları analiz ettiğiniz yerdir. Sistem, kendi başına tahminlerin veya kararların nasıl verileceğini ‘öğrenir’. Daha sonra bu modeli yeni, görünmeyen veriler üzerinde tahminlerde bulunmak için kullanabilirsiniz. Model oluşturma, IBM Watson Machine Learning adlı bir hizmet kullanılarak yapılabilir.
Model Yayınlanması(Model Deployment) görevleri, oluşturulan Makine Öğrenimi ya da Derin Öğrenme modelini diğer uygulamalar için kullanılabilir hale getirmek amacıyla yayınlanması işlemleridir. Geliştirilmiş bir modeli üretim ortamına entegre etme sürecidir. Modelin yayınlanması aşamasında, bir makine öğrenimi modeli API’ler aracılığıyla üçüncü taraf uygulamalara sunulur. Endüstri kullanıcıları, üçüncü taraf uygulamalar aracılığıyla verilere erişebilir ve böylece veriye dayalı kararlar vermelerine yardımcı olur. Örnek olarak, SPSS İşbirliği ve Dağıtım Hizmetleri(SPSS Collaboration and Deployment Services), SPSS yazılım araçları paketi tarafından oluşturulan her türlü varlığı yayınlamak için kullanılmaktadır.
Model İzleme ve Değerlendirme(Model Monitoring & Assessment), yayınlanan modelin izlenmesi ve performans kalitesini kontrol etme işlemleridir. Model izleme için örnek olarak Fiddler gibi araçlar kullanılabilir. Model değerlendirmesi ise; Doğruluk(Accuracy), Tarafsızlık(Fairness) ve Sağlamlık(Adversarial Robustness) kontrollerini içerir. Bir modelin performansını anlamak için; F1 puanı(F1 Score), gerçek pozitif oran(True Positive Rate) veya kare hatanın toplamı(Sum of Squared Error) gibi değerlendirme metrikleri kullanılır. İyi bilinen bir örnek, devreye alınan makine öğrenimi ve derin öğrenme modellerini sürekli olarak izleyen IBM Watson OpenScale’dir. Model izleme ve değerlendirme araçları tahminlerinizin doğruluğunu ve kalitesini artıracaktır.
Veri Varlık Yönetimi(Data Asset Management) Bir veri bilimcisi olarak tüm resimlerinizi, videolarınızı , metinlerinizi ve diğer verilerinizi merkezi bir konumda düzgün bir şekilde depolamak ve düzenlemek istersiniz. Ayrıca verilerinize kimlerin erişebileceği, düzenleyebileceği ve yönetebileceği üzerinde kontrol sahibi olmak istersiniz. Dijital Varlık Yönetimi (DAM) olarak da adlandırılan Veri Varlık Yönetimi, farklı kaynaklardan toplanan önemli verilerin organize edilmesi ve yönetilmesidir. DAM, sürüm oluşturma ve işbirliğine izin veren bir DAM platformunda gerçekleştirilir. DAM platformları ayrıca depolanan verilerin kopyalanarak çoğaltılması(Replication), yedeklenmesi(Backup) ve Erişim Hakları Yönetimi(Access Right Management) görevlerini de kapsar.
Kod Varlık Yönetimi(Code Asset Management), ekip çalışmasını kolaylaştırmak için sürüm oluşturma ve diğer ortak çalışma görevlerini içerir. Bir model geliştirmek istediğinizde, modeli güncellemeniz, hataları düzeltmeniz veya kod özelliklerini aşamalı olarak iyileştirmeniz gerekebilir. Geliştiriciler, bir yazılım projesinin kodundaki değişiklikleri izlemek ve yönetmek için sürüm oluşturmayı kullanır. Bir model üzerinde çalışırken, herkesin kod dosyalarını aynı anda yükleyebileceği, düzenleyebileceği ve yönetebileceği merkezi bir depo oluşturur. Bu farklı kişilerin aynı proje üzerinde birlikte çalışmasına ve kodu güncellemesine olanak tanır. GitHub, kod varlık yönetimi platformuna iyi bir örnektir. Web tabanlıdır ve paylaşım, işbirliği ve erişim kontrolü özellikleri sağlar.
Geliştirme Ortamları(Development Environments) genel olarak tümleşik geliştirme ortamı(Integrated Development Environment-IDE) olarak bilinir ve Veri Bilimi Uzmanı’nın çalışmalarını uygulaması(implement), yürütmesi(execute), test etmesi(test) ve yayınlaması(deploy) işlemlerini içerir.
Çalıştırma Ortamları(Execution Environments); veri işleme(data processing), model eğitimi(model training) ve yayınlanması(deployment) işlemlerini içerir.
Ayrıca bu alanlarda yer alan araçları kısmen ya da tamamen kapsayan Tam Entegre Görsel Araçlar(Fully Integrated Visual Tools) mevcuttur.
Veri Biliminde Kullanılan
Programlama Dilleri
Python Programlama Dili
Veri Bilimi’nde Python’ın yeri hiç tartışmasız oldukça özeldir. Veri bilimi için en popüler programlama dilidir ve oldukça güçlü olmasına karşın öğrenmesi diğerlerine nazaran daha kolay denilebilir. 2019 Kaggle Veri Bilimi ve Makine Öğrenimi anketine göre dünyanın farklı yerlerinden 10.000 katılımcının %75’i düzenli olarak Python kullandıklarını belirttiler. Glassdoor 2019’da veri bilimi alanındaki iş ilanlarının %75’inden fazlasının iş tanımında Python yer aldığını bildirdi.
Bu popülerliğinde, daha az kodla daha çok iş yapmasının etkisi büyüktür. Ayrıca daha kolay okunabilir bir yazım stili vardır. Geniş bir yazılımcı topluluğuna sahip olduğu için kaynak ve yardım bulmakta zorlanmazsınız.
Python; Veri Bilimi, Yapay Zeka ve Makine Öğrenimi, Web Geliştirme ve Raspberry Pi gibi IoT(Nesnelerin İnterneti) cihazlar için kullanışlıdır.
Bildiğiniz tüm büyük şirketler bir şekilde Python kullanmaktadırlar; Google, Facebook, IBM, Wikipedia, Yahoo, NASA, CERN, Amazon, Instagram, Reddit, Spotify……
Python; veritabanları, otomasyon, web üzerinden veri yakalama, metin işleme, görüntü işleme, makine öğrenimi, veri analizi gibi bir çok farklı görevi yerine getirebilen çok geniş bir standart kütüphaneye sahiptir.
Ayrıca Veri Bilimi için; Pandas, NumPy, SciPy, MatplotLib gibi ek kütüphaneleri kullanabilirsiniz.
Yapay Zeka için; TensorFlow, PyTorch, Keras ve ScikiLearn gibi ek kütüphaneleri kullanabilirsiniz.
Doğal Dil İşleme(Natural Language Processing-NLP) için Doğal Dil Araç Seti(Natural Language ToolKit-NLTK) kullanabilirsiniz.
R Programlama Dili
R programlama dili, bir GNU projesidir. Yani Python gibi açık kaynaklı değildir ama kullanımı ücretsizdir. Açık Kaynak Girişimi(Open Source Initiative-OSI) açık kaynak kodlu yazılımı, Özgür Yazılım Vakfı(Free Software Foundation-FSF) özgür yazılımı tanımlar. Birbirlerine çok yakın olmakla birlikte, Açık Kaynak daha iş odaklı iken Özgür Yazılımlar daha çok değere odaklanmıştır.
R bir özgür yazılım projesidir ve dili kullanarak açık kaynak geliştirme yapabilir ya da ticari amaçla kullanabilirsiniz.
R çoğunlukla İstatistikçiler, Matematikçiler ve Veri Madencileri tarafından istatistiksel yazılımlar, grafik oluşturma ve veri analizi geliştirmek için kullanılır.
Dilin yazım kuralları(syntax) dizi odaklı olduğu için özellikle programlama temeli olmayan kişiler için matematiksel ifadelerden koda geçişte kolaylık sağlar.
Kaggle tarafından yapılan anket sonuçlarına göre veri bilimi alanına giren ancak daha önce programlama deneyimi olmayan kişiler genellikle R ile bir başlangıç yapıyorlar.
R genellikle akademik alanda popüler bir dil olmakla birlikte; Gogole, Facebook, Amazon, IBM, Microsoft, Ford, Uber gibi büyük firmalarda da kullanım alanı buluyor.
R dünyanın en büyük istatistiksel veri deposu haline gelmiştir. İçerdiği 15.000’den fazla paket ile kompleks veri analizi yapmayı mümkün kılar.
Ayrıca ; Python, C++, Java gibi diğer diller ile de entegre çalışabilmektedir.
R, çoğu istatistiksel programlama dilinden daha güçlü bir nesne tabanlı programlama yapısına sahiptir.
SQL Programlama Dili
Yapılandırılmış Sorgu Dili(Structured Query Language-SQL) anlamına gelen SQL, prosedürel bir dil olmadığı ve kapsamı sadece verileri sorgulamak ve yönetmek olduğu için bir çok kişi tarafından bir geliştirme dili olarak görülmez. Ancak veritabanları ve dolayısıyla veriler ile çalışmanız gereken her alanda çok güçlü ve kullanılması zorunlu bir dil olduğunu söylemeliyiz.
İlk kez 1974’de IBM tarafından geliştirilmiş olan SQL Python ve R gibi dillerden 20 yıl daha eski ve köklü bir dildir.
Yapılandırılmaış veriler üzerinde çalışmakta kullanışlıdır. SQL, ilişkisel veritabanlarındaki verileri yönetmek için tasarlanmıştır. İlişkisel veritabanları, birbirleriyle ilişkilendirilmiş iki boyutlu tabloların koleksiyonu şeklinde oluşturulur.
SQL; iş ve veri analisti olarak çalışırken size yardımcı olacağı gibi, Veri Bilimi Uzmanı ve Veri Mühendisi rolleri için bir zorunluluktur.
SQL ile çalışırken veriye direkt ulaşabildiğiniz için, çalışmak için önceden veriyi kopyalamak gibi bir işlem yapmanıza gerek yoktur. Bu da çalışmanızı hızlandırır.
SQL bir standarttır. Yani SQL biliyorsanız ve herhangi bir veritabanı ile çalışırken kullanıyorsanız, kolayca diğer veritabanları ile de çalışabilirsiniz; MySQL, PostgreSQL, IBM DB2, SQLite, Oracle, MariaDB, Microsoft SQL Server gibi…
Diğer Diller
Veri bilimi alanında çalışırken popüler Python, R ve SQL’in yanı sıra üzerinde çalışılan projeye özel kullanabileceğiniz sık karşılaşılan diller Scala, Java, C++ ve Julia olabilir.
Java, her türlü projede kullanabileceğiniz nesne tabanlı bir programlama dilidir. Kurumsal projelerde sıklıkla kullanılmaktadır ve ölçeklenebilir yapıdadır. Java uygulamaları bytecode olarak derlenir ve JVM adı verilen java sanal makinesi üzerinde çalışır.
Java ile kodlanmış önemli Veri Bilimi araçları arasında;
- Veri Madenciliği için Weka
- Makine Öğrenimi kütüphanesi olan Java-ML
- Makine Öğrenimini ölçeklenebilir kılan Apache MLlib
- Derin Öğrenme için Deeplearning4j bulunur.
Apache Hadoop Java ile kodlanmış bir başka önemli uygulamadır. Büyük Veri üzerinde çalışmak Hadoop teknolojisi ile mümkün hale gelmiştir. Hadoop, daha önce bahsettiğimiz gibi birden çok cihazın kaynaklarını kümeleyerek birleştirmeyi ve bu sayede işlem gücü ve depolama alanı gerektiren büyük veri üzerinde çalışmayı sağlayan bir teknolojidir.
Scala; fonksiyonel programlama dilidir. Scala, Java’nın aldığı eleştiriler dikkate alınarak geliştirilmiştir. Aslında Java’ya bir genişletme paketi gibi geliştirilmiş olduğu ve Java Sanal Makinesi(JVM) üzerinde çalıştığı için Java ile birlikte kullanılabilir.
Adını Ölçeklenebilir Dil(Scalable Language) deyiminden almaktadır. Bu dil, uygulamanın kullanıcıların talepleri ile birlikte büyümesi için tasarlanmıştır.
Veri Bilimi alanında Scala’nın en popüler uygulaması Apache Spark’tır. Spark tıpkı Hadoop gibi bir kümelenmiş bilgi işlem sistemi oluşturulmasını sağlar. Büyük veri işleme için tümleşik analiz motoruna, yayın akışı için hazır modüle, SQL, makine öğrenimi ve grafik işleme yeteneklerine sahiptir. Spark; bir sorgu motoru olan Shark, makine öğrenimi için MLlib, grafik işleme için GraphX, yayın akışı için Spark Streaming sistemlerini içerir. Apache Spark, Hadoop’tan daha hızlı olmak için tasarlanmıştır.
C++, programlama dillerinin atası sayılan güçlü C dilinin nesne tabanlı programlama ile evrimleşmiş olan programlama dilidir. C++ işlem hızı yüksek, sistem programlama yapabilen, uygulama üzerinde daha geniş kontrol sağlayan bir dildir.
Veri Bilimi alanında veri analizi ya da veri araştırma görevleri için Python ve diğer üst seviye dilleri kullanan bir çok kuruluş, müşterilere gerçek zamanlı veri akışı için C++ ile geliştirdikleri uygulamaları kullanmaktadırlar.
Örneğin, Veri Bilimi alanında bir Derin Öğrenme kütüphanesi olan TensorFlow C++ ile geliştirilmiştir. Ancak temeli C++ ile geliştirilmiş olmasına rağmen, bir Python arayüzü ile çalışır. bu sayede kullanmak için C++ bilmenize gerek kalmaz.
Büyük Veri yönetimi için bir NoSQL veritabanı olan MongoDB de C++ ile geliştirilmiştir.
Bir Derin Öğrenme Algoritma Deposu olan Caffe, C++ ile geliştirilmiştir.
Javascript, web geliştirme alanında yıllardır arayüz kodlama tarafında kullanıldıktan sonra Node.js ve diğer sunucu tarafı çalışan çerçevelerin(framework) geliştirilmesi ile birlikte tarayıcıda çalışan bir script dili olmanın ötesine geçmiş ve komple bir programlama diline evrilmiştir.
Veri Bilimi alanında en popüler uygulaması TensorFlow.js’dir. Makine Öğrenimi ve Derin Öğrenmenin Node.js ve tarayıcı içinde geliştirilmesini mümkün kılar.
Diğer açık kaynak kodlu kütüphanelere örnek; brain.js ve machinelearn.js verilebilir.
R-js projesi ise veri bilimi alanı için geliştirilmiş bir başka javascript uygulamasıdır. R-js lineer cebir özelliklerini R dilinden javascript’e kazandırmıştır. Bu da, Numpy ve SciPy gibi daha güçlü matematiksel çerçeveleri(framework) uygulamak için bir temel sağlayacaktır.
Julia, MIT tarafından hesaplamalı bilimler ve yüksek performanslı sayısal analizler için geliştirilmiştir. Julia, C veya Fortran kadar hızlı çalışan program geliştirme işlemini, Python ya da R gibi hızlı geliştirme yeteneği ile birleştirir.
Julia derlenen bir dildir ve bu sayede kodu direkt işlemcide çalıştırılabilir. Python, C, Go, Java, R, Fortran ve Matlab kütüphanelerini çalıştırabilir. 2012’de geliştirilen Julia diğerlerine nispeten genç bir dildir diyebiliriz. Ancak veri biliminin geleceğine çok katkısı olacağı söylenebilir.
Veri bilimi alanı için Julia ile geliştirilen uygulamalardan biri JuliaDB, büyük veri setleri ile çalıştırılmak için geliştirilmiş bir pakettir.
Veri Biliminde Kullanılan
Açık Kaynak Kodlu(Ücretsiz) Araçlar
Şimdi bu görevleri yerine getirmek için ilgili alanda kullanılan açık kaynak kodlu araçlara göz atalım. Öncelikle Veri Yönetimi, Veri Entegrasyonu ve Dönüşümü ile Veri Görselleştirme araçlarını inceleyelim.
Veri Yönetimi(Data Management) alanında en çok kullanılan açık kaynak kodlu araçlar;
- MySQL ve PostgreSQL gibi ilişkisel veritabanları,
- MongoDB, Apache CouchDB ve Apache Cassandra gibi NoSQL veritabanları,
- Hadoop HDFS ve Ceph Bulut Dosya Sistemi gibi dosya sistemi araçları,
- ElasticSearch metin verileri depolama ve hızlı belge erişimi için arama dizini oluşturma aracıdır.
Veri Bilimi alanında Veri Entegrasyonu ve Dönüşümü(Data Integration and Transformation) görevleri; Ayıklama(Extract), Dönüştürme(Transform) ve Yükleme(Load) işlemlerinin baş harflerinden oluşan ETL kısaltmasıyla da bilinir. Günümüzde sıralaması değiştirilerek ELT olarak isimlendirilmektedir. Bu işlemler yeni bir terimi ortaya çıkartmıştır; Veri Arıtma ve Temizleme(Data Refinery and Cleansing).
En yaygın kullanılan araçları ise;
- AirBNB tarafından oluşturulan Apache Airflow,
- Kubernetes üzerinde Veri Bilimi işlemlerini yürütmenizi sağlayan Kubeflow,
- Linkedin tarafından geliştirilen Apache Kafka,
- güzel bir görsel editöre sahip olan Apache Nifi,
- ANSI SQL kullanabilmenizi sağlayan ve binlerce sunucudan oluşan kümelerde hesaplama yapabilecek şekilde ölçeklenebilen Apache SparkSQL,
- Görsel bir editör sunan ve çok az kaynak kullanan, hatta Raspberry Pi’de dahi çalışabilen Node-RED.
Açık kaynaklı Veri Görselleştirme araçları içinde ise kod yazarak kullanılabilen programlama kütüphanelerinin yanısıra kod yazmaya gerek kalmadan bir kullanıcı arayüzüne sahip olan araçlar da vardır. Yazılım kütüphanalerine ileride değineceğim. Öncelikle kullanıcı uygulamalarından bahsedelim;
- SQL sorgularından görselleştirmeler oluşturan HUE,
- Python’da çizim yapmayı kolaylaştıran kullanıcı arabirimine sahip olan PixieDust,
- Veri sağlayıcı olarak Elasticsearch ile sınırlı olan veri keşfi ve görselleştirmesi için web uygulaması olan Kibana,
- Bir başka veri keşfi ve görselleştirmesi için web uygulaması olan Apache Superset
Model Yayınlama(Model Deployment) çok önemli bir başka veri bilimi kategorisidir. Gelecek ile ilgili tahminler oluşturan bir makine öğrenimi algoritması geliştirildiğinde, bu modeli diğer geliştiriciler için kullanılabilir hale getirmek gereklidir. Apache PredictionIO, şu anda sadece Apache Spark makine öğrenimi modellerini desteklemektedir ancak ilerleyen zamanlarda diğer kütüphaneleri de desteklemesi hedeflenmektedir. Seldon ise; TensorFlow, Apache Spark ML, R ve Scikit-learn dahil geniş bir çerçeve(framework) desteği olan ilgi çekici bir üründür. RedHat OpenShift ve Kubernetes üzerinde çalışır.
Apache SparkML modellerini yayınlamanın bir diğer yolu mleap kullanmaktır.
TensorFlow Service ile TensorFlow modellerini yayınlayabilir.
Raspberry Pi ya da cep telefonları gibi gömülü sistem cihazlar için TensorFlow Lite kullanarak model yayınlayabilirsiniz.Hatta, TensorFlow.js kullanarak bir web tarayıcı için modelinizi yayınlayabilirsiniz.
Model İzleme ve Değerlendirme(Model Monitoring & Assessment) bir başka önemli adımdır. Bir Makine Öğrenimi modelini yayınladıktan sonra, zaman aşımına uğrayan modelleri güncel tutabilmek için yeni veriler ile tahmin performansını izlemeniz gerekir. Bu işlem için kullanılabilecek Model İzleme araçlarından bazıları şunlardır;
ModelDB, modeller ile ilgili bilgilerin depolandığı ve sorgulanabildiği bir Makine Öğrenimi meta veritabanıdır. Apache Spark ML ve Scikit-Learn destekler.
Prometheus adı verilen genel ve çok amaçlı bir diğer araç özellikle bu amaç için üretilmiş olmasa da, Makine Öğrenimi Model İzleme için çok kullanılan bir diğer araçtır.
Model performansı sadece doğruluk için ölçülmez. Cinsiyet ya da ırkçılık gibi konularda önyargılı olmaması da önemlidir. IBM AI Fairness 360 açık kaynaklı araç seti bunun için geliştirilmiştir.Makine Öğrenimi algoritamalarına oluşabilecek önyargıları algılar ve düzeltir. Örneğin bankacılık sektöründe kullanılan bir algoritmanın kredi hesaplarken kadınlara erkeklerden daha düşük miktarda kredi tanımlaması gibi cinsiyetçi hataların önüne geçmeye çalışır.
Makine Öğrenimi modelleri, özellikle de sinir ağları(neural network) temelli derin öğrenme(Deep Learning) modelleri, art niyetli kişilerin modeli manipüle edilmiş verilerle yanıltmaya çalıştığı saldırılara maruz kalabilir. IBM Robustness 360 Toolbox bu tür saldırılara karşı güvenlik açığını tespit etmek ve modelin daha sağlam olmasına yardım etmek için kullanılabilir.
IBM AI Explainability 360, kullanıcıya verilen bir veri seti içinde benzer örnekler bularak Makine Öğrenimi sürecini daha anlaşılabilir hale getirir. Ayrıca, farklı giriş değişkenlerinin modelin kararını nasıl etkilediğini açıklayarak daha basit bir Makine Öğrenimi modeli oluşturmaya yardımcı olur.
Kod Varlık Yönetimi(Code Asset Management), araçları zaman içerisinde ortak bir standarta indirgenmiştir. Sürüm Yönetimi ya da Sürüm Kontrolü olarak adlandırılan bu görev kategorisi için standart araç “Git” haline gelmiştir. Bu projeyi destekleyen bir çok hizmet ortaya çıkmıştır. Örneğin GitHub, yazılım geliştirme sürecinde sürüm yönetimi için ortak çalışma ve barındırma alanı sağlamaktadır. Diğer benzer hizmetler ise; GitLab ve BitBucket.
Bu hizmetlerin temel amacı ise aynıdır; veriler meta veriler ile sürümlendirilmeli ve açıklamaya sahip olmalıdır. Apache Atlas bu görevi destekleyen bir araçtır.
ODPi Egeria ise Linux Vakfı(Linux Foundation) tarafından yönetilen açık bir ekosistemdir. Meta veri depolarının, veri paylaşımı ve alışverişi için kullanabileceği API, veri türü ve değişimi protokolü sunar.
Son olarak Kylo, bu alandaki çok çeşitli görevler için kapsamlı destek sağlayan açık kaynak bir platformdur.
Veri Bilimi uzmanlarının kullandığı en popüler Geliştirme Ortamları(IDE)‘ndan biri Jupyter’dir. Jupyter esasen Python için geliştirilmiş bir interaktif geliştirme aracıdır. Ancak şu anda temel kod çekirdeği(kernel) aracılığıyla yüzden fazla farklı programlama dilini desteklemektedir. Buradaki çekirdek(kernel) kavramı Linux’daki gibi bir işletim sistemiçekirdeği(kernel) ile karıştırılmamalıdır. Jupiter’deki çekirdek(kernel) kavramı daha çok farklı programlama dilleri için tercüman niteliğindedir.
Jupyter Notebook’un en önemli özelliği; kodları, kod çalıştırıldığındaki çıktıyı, yapılan işlem ile ilgili belgelendirmeyi, terminal komutlarını ve görselleştirmeyi bir arada sunmasıdır.
JupyterLab ise uzun vadede Jupyter Notebook’un yerini alması beklenen projedir. Daha modern ve geliştirilmiş, modüler hale getirilmiş, yeni nesil bir sürümü de diyebiliriz. Kullanıcı açısından ise temel farklılık; farklı veri türleri, terminalleri ve Jupyter Notebook da dahil olmak üzere farklı dosya türlerini açabilme yeteneğine sahip olmasıdır. Daha sonra bu dosyaları düzenleyebilirsiniz.
Apache Zeppelin, Jupyter Notebook’tan esinlenilmiş bir projedir ve benzer bir deneyim sunar. Önemli bir farkı, entegre çizim özelliğidir. Jupyter Notebook’ta bunun için harici kütüphaneler kullanmanız gerekir. Apache Zeppelin’de ise çizim için kodlama bilmenize gerek yoktur.
R Studio ise, istatistik ve veri bilimi alanında tanıtılan en eski geliştirme ortamlarından biridir. Adından da anlaşılacağı üzere sadece R programlama dili ve kütüphaneleri ile çalışabilirsiniz. Ancak Python geliştirme imkanına da sahiptir. R Studio; programlama, çalıştırma, hata ayıklama, uzaktan veri erişimi, veri keşfi ve görselleştirme aracıdır.
Spyder, R Studio benzeri bir yapıyı Python dili için sunan bir araçtır. Ancak R Studio seviyesinde değildir ama bir alternatif olarak düşünülebilir. buna rağmen Python dili ile kullanılan en popüler ve iyi araç Jupyter’dir diyebiliriz.
Büyük veriler ile çalışırken yerel bilgisayarınızın disk ya da RAM hafızası kapasitesine sığmanız zor olabilir. Çalıştırma Ortamları(Execution Environments) böyle durumlarda projelerinizi çalıştırmanızı sağlayabilecek kapasiteye sahip kümelenmiş sunuculardan oluşan güçlü altyapılardır. Bunlardan en popüler olanlarından biri Apache Spark’tır ve Fortune 500 şirketlerinin bir çoğu da dahil olmak üzere tüm sektörlerde kullanılmaktadır.
Apache Spark’ın en önemli özelliği; Doğrusal Ölçeklenebilirlik(Linear Scalability)’dir. Bu özellik; bir kümedeki sunucu sayısını iki katına çıkartırsanız, performansı da iki katına çıkartabileceğiniz anlamına gelir.
Apache Spark’tan sonra gelen bir başka Apache projesi Apache Flink ile arasındaki fark; Apache Spark’ın büyük miktarda veriyi dosya dosya işleyebilen bir toplu veri işleme motoru olmasıdır. Apache Flink ise; gerçek zamanlı veri akışı işleme üzerine odaklanmıştır.
Bu alanda, büyük ölçekteki Derin Öğrenme(Deep Learning) modellerine odaklanmış bir başka araç ise UCBerkeley riselab tarafından geliştirilen Ray’dir.
Veri Bilimi alanında çalışırken birden fazla görevi birleştiren ve birden fazla kategorideki araçların görevlerini tek araç ile çözmeyi hedefleyen Tam Entegre Görsel Araçlar(Fully Integrated Visual Tools) da mevcuttur. Bu araçları kullanırken programlama bilgisi gerekmez. Bu araçların birleştirdiği veri bilimi görevleri arasında; Veri Entegrasyonu ve Dönüşümü(Data Integration and Transformation) , Veri Görselleştirme(Data Visualization) ve Model Oluşturma(Model Building) vardır.
Bunların açık kaynaklı olan örneklerinden KNIME, 2004 yılında Konstanz Üniversitesinde geliştirilmiştir. Sürükle-bırak mantığıyla çalışan görsel bir arayüzü vardır. Ayrıca dahili görselleştirme araçları mevcuttur. Knime, R ve Python programlama dilleri ile kullanılabilir ve Apache Spark ile entegre olabilir.
Bir başka örnek araç ise Orange’dır. Knime kadar esnek olmasa da kullanımı daha kolaydır.
Veri Biliminde Kullanılan
Ticari(Ücretli) Araçlar
Veri Yönetimi(Data Management) alanında en çok kullanılan ticari araçlar;
- Oracle Veritabanı
- Microsoft SQL Server
- IBM DB2
Her ne kadar yukarıda bahsettiğimiz açık kaynak kodlu ücretsiz veritabanı araçları popülerliklerini artırmış olsa da, endüstri standardı haline gelmiş olan bu ücretli araçlar da bu alanda büyük söz sahibidir.
Bu durum yalnızca işlevsellikle ilgili değildir. Veri tüm organizasyonların kalbi durumundadır ve organizasyonlar ücretli ürün sağlayan bu firmaların teknik desteğine ihtiyaç duymaktadır. Ticari destek direkt olarak yazılımı sağlayan firmadan alınabileceği gibi, partner firmalardan ve destek gruplarından da alınabilir.
Veri Entegrasyonu ve Dönüşümü(Data Integration and Transformation) alanındaki ticari araçlara göz atacak olursak; Gartner Magic Quadrant, Informatica PowerCenter ile IBM InfoSphere Data Stage sektör liderleridir. Bunları SAP, Oracle, SAS, Talend ve Microsoft tarafından geliştirilen ürünler takip eder. Bu araçlar grafik bir arayüz ile ELT veri işleme hattının tasarım ve yayınlanmasını sağlar. Ayrıca, çoğu ticari ve açık kaynaklı hedef bilgi sistemleri ile bağlantı kurabilirler. Son olarak; IBM’in Watson Data Studio uygulaması Veri Arıtma(Data Refinery) adı altında, veri entegrasyonu süreçlerinin tanımlanması ve çalıştırılmasında Excel’e benzer hesap tablosu mantığında çalışan bir bileşen içerir.
Ticari ortamda; Veri Görselleştirme(Data Visualization) araçları, İş Zekası(Business Intelligence-BI) araçları olarak kullanılır. Temel amacı, görsel olarak çekici ve kolay anlaşılır raporlar ve gerçek zamanlı yönetim panelleri oluşturmaktır. Önde gelen örnekleri; Tableau, Microsoft Power BI ve IBM Cognos Analytics.
Bir başka veri görselleştirme türü sıradan kullanıcılar yerine veri bilimi uzmanlarını hedeflemektedir. Örnek bir problem, “Tablodaki farklı sütunlar birbirleriyle nasıl ilişkilidir?” olabilir. Bu tür bir fonksiyon IBM Watson Studio Desktop uygulamasında mevcuttur.
Model Oluşturma(Model Building) alanında, ticari araçlar ile bir makine öğrenimi modeli oluşturmak istiyorsanız, Veri Madenciliği(Data Mining) ürünlerini kullanmalısınız. Bu tür işlemlerde öne çıkan ürünler; SPSS Modeler ve SAS Enterprise Miner. Ek olarak, IBM Watson Studio Desktop içinde SPSS Modeler’ın bulutta çalışan bir versiyonu mevcuttur.
Model Yayınlama(Model Deployment) görevleri ticari araçlarda Model Oluşturma(Model Building) sürecine entegre haldedir.
Bu görsel; IBM SPSS İşbirliği ve Yayınlama Hizmetleri(IBM SPSS Collaboration and Deployment Services)’nin, SPSS uygulaması tarafından oluşturulan herhangi bir çıktının yayınlanmasında kullanılışını göstermektedir. Diğer araçlarda da süreçlerin türü benzerdir.
Ticari uygulamalar da, modelleri açık formatta dışarı aktarırlar. Örneğin, SPSS Modeler modellerin Tahmin Modeli Biçimlendirme Dili(Predictive Model Markup Language-PMML) formatında dışa aktarımını destekler. Böylece diğer bir çok ticari ve açık kaynaklı uygulama tarafından da okunabilir.
Model İzleme ve Değerlendirme(Model Monitoring & Assessment) nispeten daha yeni bir örev alanıdır ve bu alanda geliştirilmiş bir ticari araç yoktur. Benzer şekilde, Kod Varlık Yönetimi(Code Asset Management) için de ticari araçlar bulunmamakta, açık kaynak kodlu Git ve GitHub bu alanınstandardı olarak kabul edilmektedir.
Veri Varlık Yönetimi(Data Asset Management) aynı zamanda Veri Yönetimi(Data Governance) ve Veri Kökeni(Data Lineage) olarak da bilinir ve büyük kuruluşlar seviyesinde veri biliminin önemli bir parçasıdır. Veriler, versiyonlanmalı ve meta data ile açıklanmalıdır. Informatica Enterprise Data Governence ve IBM gibi firmalar bu görev için araçlar geliştirmişlerdir. IBM InfoSphere Information Governance Catalog uygulaması veri sözlüğü ile verilerin bulunmasını kolaylaştırma gibi işlevlere sahiptir.
Her veri bir veri sahibine atanmıştır. Veri sahibi, bu veriden sorumludur ve onunla bağlantılıdır.
Veri Kökeni(Data Lineage) de bir diğer özelliğidir. Böylece kullanıcı, verinin oluşturulmasından bulunulan zamana kadar geçen değişimin adımlarını geriye doğru takip edebilir. Mevcut kaynak veriye referans da içerir. Veri güvenliği ve koruma için iş gereksinimlerine kurallar ve koşullar eklenebilir.
IBM Watson Studio, veribilimi uzmanları için tam entegre bir Geliştirme Ortamı(IDE)‘dır. Genellikle bulut ortamında hizmet verir. Ancak masaüstü sürümü de mevcuttur.
Watson Studio Desktop Jupyter Notebook’u grafil araçları ile birleştirerek veri bilimi uzmanlarının performansını artırır.
Ticari olan Tam Entegre Görsel Araçlar(Fully Integrated Visual Tools) arasında yer alan Watson Studio ile Watson OpenScale birlikte tüm veri bilimi yaşam döngüsünü kapsayan bir ortam sağlar.
İleride detaylıca değineceğiz ama şimdilik bu ortamı yerel veri merkezinizde Kubernetes ya da RedHat OpenShift üzerinde hayata geçirebileceğinizi söyleyelim.
Tam Entegre Görsel Araçlar(Fully Integrated Visual Tools) alanındaki bir başka ticari araç ise H2O Driverless AI(H2O.ai), benzer şekilde tüm veri bilimi yaşam döngüsünü kapsayan araçlardandır.
Veri Biliminde Kullanılan
Bulut Tabanlı Ticari(Ücretli) Araçlar
Bulut tabanlı araçlar yeni bir tür olarak ortaya çıktığından beri, çoklu görevler yürütebilme trendini sürdürmektedirler.
Özellikle de görmüş olduğunuz yeşil görev kategorilerinde bulut tabanlı hizmetler mevcuttur.
Öncelikle Tam Entegre Görsel Araçlar(Fully Integrated Visual Tools) kategorisinden incelemeye başlayalım. Bu araçlar hesaplama kümeleri(Server Clusters) içinde veri bilimi iş akışının yüksek ölçeklerde çalıştırılması için bileşenler sunduklarından beri onlara unvan olarak Platform adını verdik. Bu kümeler kullanıcının fark etmemesine karşın arkaplanda bir çok sunucunun birleşiminden oluşurlar.
Daha önce de bahsettiğimiz gibi Watson Studio, Watson OpenScale ile birlikte tüm Veri Bilimi, Makine Öğrenimi ve Yapay Zeka geliştirme sürecinin tamamını kapsar.
Bir diğer bulut çözümü ise Microsoft’un Azure Makine Öğrenimi(Microsoft Azure Machine Learning) çözümüdür.
Son olarak bu alandaki diğer uygulama da daha önce adı geçen H20 Driverless AI(H2O.ai) uygulamasıdır. İndirip kurabileceğiniz bir uygulaması olmasına rağmen, bir çok bilinen bulut hizmeti sağlayıcısı(Amazon, Google, Digital Ocean gibi) için tek tıklama ile hayata geçirilen bulut çözümü de vardır.
Veri Yönetimi(Data Management) alanında bazı istisnalar haricinde mevcut açık kaynaklı ve ticari uygulamaların Yazılım Hizmeti(Software as a Service-SaaS) versiyonları da vardır. Bu çalışma modeli, bulut hizmeti sağlayıcıların sizin için bu uygulamayı bulutta kullanımınıza sunduğu çözümler mevcut demektir. Örneğin, bulut sağlayıcılar verilerinizi yedeklemek, konfigüre etmek ve güncellemek gibi işlemleri yürütebilirler.
Bazen bu tür hizmetlere tek bir bulut sağlayıcıdan erişilebilir. Bu hizmete bir örnek olması bakımından Amazon Web Services DynamoDB, depolama sağlayan ve anahtar-değer şeklinde verinin alınabildiği ya da bir doküman formatında depolandığı NoSQL veritabanıdır. En önde gelen doküman formatındaki veri yapılarından biri JSON’dır.
Bir başka veritabanı hizmeti sunan bulut uygulaması Cloudant, arka planında açık kaynaklı Apache CouchDB ile bu hizmeti sunmaktadır. Avantajı ise; güncelleme, yedekleme, yedekten geri yükleme ve ölçeklendirme gibi kompleks işlemleri bulut sağlayıcının üstlenmesi ve kolaylaştırmasıdır. Bunun yanı sıra uygulama hiç bir değişikliğe ihtiyaç duymadan farklı bir CouchDB üzerinde de çalışır.
Bir başka örnek ise, IBM Db2 bulut veritabanı hizmetini sunmaktadır. Bu da ticari bir veritabanının bulut üzerinde Yazılım Hizmeti(SaaS) olarak sunulmasına örnektir.
Veri Entegrasyonu ve Dönüşümü(Data Integration and Transformation) görevlerine sıra geldiğinde, dönüştürme işleminin veri entegrasyonu ekibi tarafından yapılmadığı, Veri Bilim Uzmanı(Data Scientist) ya da Veri Mühendisi(Data Engineer)’nin alanına devredildiği bir yaklaşım söz konusu olabilir. Çok kullanılan 2 ticari veri entegrasyonu aracı Informatica Cloud Data Integration ve IBM Data Refinery’dir.
IBM Data Refinery, Excel benzeri bir hesap tablosu arayüzü ile büyük miktarda ham veriyi işleyerek kaliteli bilgiye dönüştürülmesini sağlar. Data Refinery, IBM Watson Studio’nun bir parçasıdır.
Veri Görselleştirme(Data Visualization) alanında ise oldukça çok sayılabilecek bulut uygulamaları vardır ve tüm büyük bulut hizmeti sağlayıcı firmalar bu hizmeti sunar.
Küçük boyutlardaki bulut tabanlı veri görselleştirme firmalarından biri DataMeer’dır.
Büyük boyutlardaki bulut tabanlı veri görselleştirme firmalarından biri olan IBM’in IBM Cognos Analytics aynı alanda hizmet vermektedir.
Ayrıca IBM Data Refinery, Watson Studio içerisinde veri keşfi ve görselleştirmesi işlemlerini de gerçekleştirmektedir.
Watson Studio’da, verileri daha iyi anlamak için çok sayıda farklı görselleştirme kullanılabilir. Örneğin şu 3boyutlu çubuk grafiği hedeflenen değeri dikey eksende, bağımlı olduğu diğer 2 değeri yatay eksende yerleştirerek görselleştirir.
Renklendirme size görselleştirmede 3. bir boyut kazandırmaktadır.
Aşağıdaki şekilde hiyerarşik olarak uç kenarlarda gruplama yapmak ise, varlıklar arasındaki korelasyonları ve ilişkileri görselleştirmenize olanak tanır.
Standart olarak kullanılan diğer 2 boyutlu bar grafikleri, pasta grafikleri, renklendirilmiş sıcaklık grafikleri görselleştirme ile veriden elde edilen bilgiyi anlamayı kolaylaştırır.
Model Oluşturma(Model Building) alanında bulut tabanlı olarak kullanabileceğiniz IBM Watson Machine Learning uygulaması ihtiyaçlarınızı karşılayacaktır. Modelleri farklı açık kaynaklı kütüphaneler ile eğitebilir ve inşa edebilirsiniz.
Google’ın da kendi bulut platformu üzerinde benzer bir hizmeti vardır; AI Platform Training.
Hemen hemen her bulut hizmeti sağlayıcının bu alanda bir hizmeti mevcuttur.
Ticari yazılımlarda Model Yayınlama(Model Deployment) adımı model oluşturma adımı ile birlikte entegre yürütülmektedir. Örnek olarak daha önce IBM SPSS İşbirliği ve Yayınlama Hizmetleri(IBM SPSS Collaboration and Deployment Services)’nden bahsetmiştik.
IBM Watson Machine Learning’de modeli yayınlamak için kullanılabilir ve müşteriler tarafından REST arayüzü le erişilebilir olarak sunmaktadır.
Model İzleme ve Değerlendirme(Model Monitoring & Assessment) görevleri için Amazon tarafından sunulan bulut tabanlı hizmet Amazon SageMaker Model Monitor, yayınlanan Makine Öğrenimi(Machine Learning) ve Derin Öğrenme(Deep Learning) modellerini sürekli olarak izlemeyi sağlamaktadır. Büyük bulut hizmeti sağlayıcılarınında buna benzer araçları mevcuttur. IBM Watson OepnScale’de olduğu gibi.
OpenScale ve Watson Studio, veri bilimi alanındaki veri yönetimi hariç tüm görevleri gerçekleştirecek araçlar bulabileceğiniz komple bir çözümdür.
Bağlantıda Kalalım