Veri Bilimi, gelişmiş istatistiksel ve sayısal becerileri gerçek dünyadaki programlama becerileriyle birleştiren heyecan verici bir çalışma alanıdır. Gelecek vaat eden veri bilimcilerinin uzmanlaşmayı düşünebileceği birçok potansiyel programlama dili vardır.
Bunun tek doğru bir cevap olmasa da, dikkate alınması gereken birkaç şey söyleyebiliriz. Bir veri bilimcisi olarak başarınız, aşağıdakiler de dahil olmak üzere birçok şeye bağlıdır:
1| Özgünlük
Gelişmiş veri bilimi söz konusu olduğunda, aslında tekerleği her seferinde yeniden icat etmeniz gerekecektir. Seçtiğiniz dilde sunulan çeşitli paket ve modüllere hakim olmayı öğrenmelisiniz. Bunun ne ölçüde mümkün olduğu, ilk etapta hangi alanı seçtiğinize ve o alana özgü paketlerin mevcut olup olmadığına bağlıdır!
2| Genellik
Üst düzey bir veri bilimcisi, çok yönlü programlama becerilerinin yanı sıra ileri seviye sayısal hesaplama yeteneğine de sahip olmalıdır. Veri bilimindeki günlük çalışmaların çoğu, ham verilerin sağlanması, işlenmesi ya da temizlenmesi ile ilgilidir.
3| Verimlilik
Ticari açıdan veri biliminin hızlı tempolu dünyasında, işi hızlı bir şekilde yapabilmek için söylenebilecek çok şey var. Bununla birlikte, bu hızlı çözümler beraberinde bir maliyet gerektirecektir ki, bu da sadece mantıklı uygulamalarla minimize edilebilir.
4| Performans
Bazı durumlarda programlama kodunuzun performansını, özellikle büyük miktarda ve kritik veriler üzerinde uğraşırken optimize etmek çok önemlidir. Derlenen diller genellikle yorumlanan dillerden çok daha hızlıdır; aynı şekilde, statik olarak yazılan diller de, dinamik olarak yazılanlardan çok daha fazla hata korumalıdır.
Bariz olarak yukarıda belirtilen temel ilkeler hususunda verilen ödünler üretkenliğe aykırıdır. Bir dereceye kadar, bu ilkeler ikili olarak da gruplandırılabilir, yani “Genellik-Özgünlük” ve “Performans-Verimlilik” gibi. Aşağıda haklarında bilgiler verilen programla dillerinin her biri bu ikili grupların oluşturduğu eksende bir konuma sahiptir.
Bu temel ilkeleri göz önünde bulundurarak, veri biliminde kullanılan popüler dillerden bazılarına göz atalım ne dersiniz? Bundan sonrasında kendim, arkadaşlarım ve meslektaşlarımın araştırma ve kişisel deneyimlerinin bir kombinasyon olarak belirlediğim bazı programlama dillerinden bahsedeceğim, ama kesinlikle bunlarla sınırlı değilsiniz elbette. Popülerlik sırasıyla hadi tek tek tanımaya başlayalım:
1| R Programlama
Artıları ve Eksileriyle Bilmeniz Gerekenler
1995 yılında eski S programlama dilinden doğrudan türetilen ve piyasaya sürülen R programlama dili, o zamanlardan günümüze kadar giderek güçlenerek geliştirilmeye devam etti. C, Fortran gibi diller ile kendi içinde de yapılan ilavelerle geliştirilmiş olan R programlama dili, şu anda “R İstatistiksel Hesaplama Vakfı” tarafından desteklenmektedir.
Lisans
Ücretsiz!
Artıları
Mükemmel seviyede yüksek kaliteli, alana özgü ve açık kaynak paketler sunmaktadır. R, hemen hemen akla gelebilecek her sayısal ve istatistiksel uygulama için bir pakete sahiptir. Bunlar; sinir ağlarını, lineer olmayan regresyonu, filogenetik ve gelişmiş çizimleri ve daha birçoklarını içermektedir.
Temel kurulum çok kapsamlıdır, ve yerleşik istatistiksel fonksiyonlar ve yöntemler ile birlikte geliyor. R ayrıca özellikle matris cebiri konusunda da çok iyidir.
Veri görselleştirme, ggplot2 gibi kütüphanelerin kullanımı ile önemli bir güç katmaktadır veri bilimine.
Eksileri
Performansı: R hızlı bir dil değildir.
Alan adı özgünlüğü vardır. R, istatistik ve veri bilimi amaçları için harikadır. Ancak genel amaçlı programlama için o kadar da iyi değildir.
Özgünlüğü: R, diğer dillerde deneyimli olan programcıların ilgisini çekebilecek sıra dışı özelliklere sahiptir. Örneğin: çoklu atama operatörleri, ve alışılmadık veri yapılarını kullanarak 1’den indeksleme yapabiliyor.
Değerlendirme
“Tasarım amacı açısından mükemmel”
R, çok çeşitli istatistiksel ve veri görselleştirme uygulamalarında mükemmel derecede güçlü bir dildir ve açık kaynak yapıda olması da geliştirilmesi açısından aktif katkıda bulunmak isteyen topluluklar açısından büyük bir avantajdır. Popülerlik kazanması, R yazılım dilinin ne kadar etkili olduğunun önemli bir kanıtıdır.
2| Python
Artıları ve Eksileriyle Bilmeniz Gerekenler
Guido van Rossum tarafından 1991 yılında ilk kez tanıtıldı. O zamanlardan günümüze kadar son derece popüler ve genel amaçlı bir programlama dil haline geldi ve veri bilimi alanında yaygın olarak kullanılan dillerden biridir. Ana sürümleri şu an için 3.6 ve 2.7‘dir.
Lisans
Ücretsiz!
Artıları
Python çok popülerdir ve genel amaçlı bir programlama dilidir. Çok sayıda amaca uygun modüle ve topluluk desteğine sahiptir. Birçok çevrimiçi hizmet, Python API’sı desteği sunmaktadır.
Python, açıkçası öğrenilmesi kolay bir dildir. Bu, onu programlamaya yeni başlayanlar için ideal bir dil haline getiriyor.
Pandas, Scikit-learn ve Tensorflow gibi paketler Python’u gelişmiş makine öğrenimi uygulamaları için güçlü bir seçenek haline getiriyor.
Eksileri
Tür güvenliği: Python dinamik olarak yazılabilen bir dildir, bu da gereken özeni göstermeniz gerektiği anlamına gelmektedir. Yazım hataları (bir String’in bir Tamsayı bekleyen bir değişkene bağımsız değişken olarak atanması gibi) zaman zaman ortaya çıkabilmektedir.
Belirli istatistiksel ve veri analizi amacıyla, R’nin sunduğu geniş paket yelpazesine karşılık, Python daha düşük bir avantaj sunar. Genel amaçlı diller açısından Python’a göre daha hızlı ve daha güvenli alternatifler söz konusudur.
Değerlendirme
“Çok yönlülüğü mükemmel”
Python, sadece giriş düzeyinde değil, veri bilimi için çok iyi bir dil seçimidir. Veri bilimi sürecinin geneli ETL (EDY) süreci etrafında ilerler (Ekstraksiyon-Dönüşüm-Yükleme). Bu, Python’un geneli için idealdir. Google’ın Tensorflow gibi kütüphaneleri, Python’u makine öğrenimi alanında çalışmak isteyenler açısından çok heyecan verici bir dil haline getirmektedir.
3| SQL
Artıları ve Eksileriyle Bilmeniz Gerekenler
SQL (“Yapısal Sorgu Dili”) ilişkisel veritabanlarını tanımlar, yönetir ve sorgular. Dil 1974’te ortaya çıktı ve o zamandan beri de birçok değişimler geçirdi, ancak temel ilkeler genel olarak aynı kaldı.
Lisans
Duruma göre değişmektedir; mesela bazı uygulamalar ücretsizdir, diğerleri ise lisanslı ve ücretli.
Artıları
Birbiriyle İlişkili veritabanlarını sorgulama, güncelleme ve değiştirme konusunda çok etkilidir.
Bildirimli sözdizimi, SQL’i genellikle çok okunabilir bir dil haline getirmektedir.
SQL, bir çok uygulamada kullanılır, bu da onu çok yararlı bir dil haline getirmektedir. SQLAlchemy gibi modüller de, SQL’i diğer dillerle bütünleştirmeyi kolaylaştırmaktadır.
Eksileri
SQL’in analitik yetenekleri oldukça sınırlıdır, ki verilerin kümelenmesinin de ötesinde; toplanması, sayılması ve ortalaması alınırken seçenekleriniz oldukça sınırlıdır.
Zorlu süreçleri geçerek gelen programcılar için SQL’in bildirime dayalı sözdizimi zaman alması açısından bir öğrenme süreci gerektirebilir.
SQL’in PostgreSQL, SQLite, MariaDB gibi birçok farklı uygulaması var. Hepsi, çalışabilirliği zorlu kılacak şekilde çok farklı yapıdadırlar.
Değerlendirme
“Zamansız ve Verimli”
SQL, veri işleme dili olarak gelişmiş bir analitik araçtan çok daha kullanışlıdır. Yine de veri bilimi sürecinin geneli ETL (Ekstraksiyon-Dönüşüm-Yükleme)ye dayanıyor ve SQL’in uzun ömürlülüğü ve verimliliği, modern veri bilimcilerin de bilmesi açısından çok yararlı bir dil olduğunun kanıtıdır.
4| Java
Artıları ve Eksileriyle Bilmeniz Gerekenler
Java, (JVM) Java Sanal Makinesi üzerinde çalışan son derece popüler, genel amaçlı bir dildir. Platformlar arasında sorunsuz bir şekilde taşınabilirlik sunabilen soyut bir bilgi işleme sistemidir. Şu anda Oracle Corporation tarafından desteklenmektedir.
Lisans
Sürüm-8: Ücretsiz!
Artıları
Aynı anda her yerde olma özelliği vardır; birçok modern sistem ve uygulama bir Java arka planı üzerine inşa edilmiştir. Veri bilimi yöntemlerini doğrudan mevcut kod tabanına entegre etme yeteneğinin olması, sahip olunması gereken en güçlü yönüdür.
Güçlü yazılmıştır; Java, tür güvenliğini sağlama konusunda hiç te akıllıca bir seçenek değildir. Ancak görev açısından kritik büyük veri uygulamaları için paha biçilmezdir.
Java yüksek performanslı, genel amaçlı, derleme bir dildir. Bu da onu, verimli ETL üretim kodu ve hesaplamalı ve doğal olarak yoğun makine öğrenme algoritmaları yazmaya uygun hale getirmektedir.
Eksileri
Geçici analizler ve daha özel istatistiksel uygulamalar için Java’nın ayrıntılı olması onu olasılıkdışı da olsa ilk seçenek haline getirmektedir. R ve Python gibi dinamik olarak yazılmış komut dosyasına sahip olan programlama dilleri ise Java’ya kıyasla çok daha fazla üretkenliğe katkıda bulunabilir.
R gibi etki alanına özgü dillerle karşılaştırıldığında, Java’da gelişmiş istatistiksel yöntemler için çok sayıda kütüphane söz konusu değildir.
Değerlendirme
“Veri bilimi için ciddi bir rakip aday”
Java’yı ilk tercih olarak veri bilimi dili olarak öğrenmek isteyenler için söylenebilecek bir çok şey var. Birçok şirket, Java’nın veri bilimi üretim kodunu doğrudan mevcut kod tabanlarına sorunsuz bir şekilde entegre etme yeteneğinin olmasını takdir etmekte, ve performansının ve tür güvenliğinin gerçek avantajları olduğunu bilmektedir. Bununla birlikte, diğer diller için mevcut istatistiklere özgü paketler de yoktur. Bu, kesinlikle dikkate alınması gereken bir durumdur, ki özellikle R ve/veya Python dillerinden birini biliyorsanız.
5| Scala
Artıları ve Eksileriyle Bilmeniz Gerekenler
Martin Odersky tarafından geliştirilen ve 2004 yılında piyasaya sürülen Scala, JVM’de çalışan bir dildir. Hem nesneye yönelik hem de işlevsel yaklaşımları mümkün kılan çok paradigmalı bir dildir. Cluster’ı (kümeleme) bilgi işlem framework’ü Apache Spark Scala’da yazılmıştır.
Lisans
Ücretsiz!
Artıları
Scala + Spark = Yüksek performanslı küme (cluster) hesaplama demektir. Scala, yüksek hacimli veri setleri ile çalışanlar için ideal bir dil seçeneğidir.
Çok paradigmatiktir; yani hem nesne yönelimli hem de fonksiyonel programlama paradigmaları mevcuttur, ki bu da, Scala programcılarını her iki dünyanın da en iyisi yapabilir.
Scala, Java bayt koduna derlenir ve bir JVM üzerinde çalışır. Bu, Java dilinin kendisiyle birlikte çalışabilirlik sağlayarak Scala’yı çok güçlü bir genel amaçlı dil haline getirirken veri bilimi için de çok uygundur.
Eksileri
Scala, yeni başlıyorsanız eğer öğrenmeye, o kadar da basit bir dil değildir. En iyi seçeneğiniz, sbt’yi indirmek ve belirli bir Scala eklentisine sahip Eclipse veya IntelliJ gibi bir IDE oluşturmaktır.
Sözdizimi ve tür sistemi genellikle karmaşık olarak tanımlanır. Bu, Python gibi dinamik dilleri öğrenmiş olarak gelenler için dik bir öğrenme eğrisi oluşturur.
Değerlendirme
“Büyük veri için mükemmel bir dil”
Büyük Veri ile çalışmak için cluster bilgisayar kullanımı söz konusu olduğunda, Scala + Spark harika çözümlerden biridir. Java ve statik olarak yazılan diğer dillerle ilgili deneyiminiz varsa, Scala’nın bu özelliklerini de takdir edeceksiniz elbette. Ancak uygulamanız Scala’nın ek karmaşıklığını haklı çıkaran veri hacimleriyle ilgilenmiyorsa, R veya Python gibi diğer dilleri kullanarak üretkenliğinizin çok daha yüksek olabileceğini de söyleyebilirim.
6| Julia
Artıları ve Eksileriyle Bilmeniz Gerekenler
5 yıldan fazla bir süre önce piyasaya sürülen Julia, sayısal bilgi işleme dünyasında fark yaratan bir iz bıraktı. Julia’nın Profili, finans endüstrisi de dahil olmak üzere birçok büyük kuruluş tarafından erken benimsenmesi sayesinde yükselmiştir.
Lisans
Ücretsiz!
Artıları
Julia, iyi performans sunmasını sağlayan JIT olarak (“tam zamanında”) derlenmiş bir dildir. Ayrıca tıpkı Python gibi basitlik, dinamik yazma ve komut dosyası yazma yeteneklerini de sunar kullanıcılarına.
Julia sayısal analiz için özel olarak tasarlanmıştır. Genel amaçlı programlama da yapabilir ayrıca.
Okunabilirlik: Birçok programlama dili kullanıcısı, bunu temel bir avantajı olduğunu dile getiriyor.
Eksileri
Olgunluk: Yeni bir dil olarak, bazı Julia kullanıcıları paketleri kullanırken kararsızlıklar yaşadı. Ancak çekirdek dilin, kullanım açısından yeterince kararlı olduğu bildiriliyor.
Sınırlı paketler, dilin gençliğinin ve henüz küçük bir destek topluluğunun olmasının bir başka sonucu olduğunu söyleyebiliriz. Köklü birer programlama dilleri olan R ve Python’un aksine, Julia’nın paket seçenekleri henüz mevcut değil (şimdilik).
Değerlendirme
“Gelecekte bir seçenek olabilir”
Julia şuan için tercih edilebilecek bir seçenek değil. Yakın zamanda geliştirilen bir dil olması hasebiyle, ana alternatifleri Python ve R kadar olgun veya üretime hazır değil. Ancak, sabırlı olmak gerekirse, önümüzdeki yıllarda daha da geliştirilmesi onun bir seçenek olabileceğinin bir göstergesidir.
7| MATLAB
Artıları ve Eksileriyle Bilmeniz Gerekenler
MATLAB, akademi ve endüstride kullanılan yerleşik bir sayısal hesaplama dilidir. Yazılımı ticarileştirmek için 1984 yılında kurulan MathWorks tarafından geliştirilmiş ve lisanslanmıştır.
Lisans
Lisanslı ve fiyatlandırma; kullanım durumunuza bağlı olarak değişmektedir.
Artıları
Sayısal hesaplama için tasarlanmıştır. MATLAB, sinyal işleme, Fourier dönüşümleri, matris cebiri ve görüntü işleme gibi gelişmiş matematiksel gereksinimlere sahip sayısal uygulamalar için çok uygundur.
Veri görüntüleme: MATLAB’ın harika dahili çizim yetenekleri vardır.
MATLAB genellikle Fizik, Mühendislik ve Uygulamalı Matematik gibi sayısal konularda birçok lisans dersinin bir parçası olarak üniversitelerde öğretilmektedir. Sonuç olarak; bu alanlarda yaygın olarak kullanılmaktadır.
Eksileri
Özel lisansa sahiptir. Kullanım durumunuza (akademik, kişisel veya kurumsal) bağlı olarak, bir lisans almak için yüksek ücret vermek yerine farklı alternatiflere yönelmeniz gerekebilir. Octave gibi ücretsiz alternatifler de var, ki bu, gerçekten dikkate almanız gereken bir şeydir.
MATLAB genel amaçlı programlama için bariz bir seçenek de değildir.
Değerlendirme
“Matematiksel açıdan yoğun uygulamalar için en iyisi”
MATLAB’ın endüstri ve akademi genelinde bir dizi nicel ve sayısal alanda yaygın kullanımı, onu veri bilimi açısından ciddi bir seçenek haline getirmektedir. Net kullanım örneği, uygulamanızın veya günlük rolünüzün yoğun ve gelişmiş matematiksel işlevsellik gerektirdiği durumlarda söz konusudur; ki gerçekten de MATLAB bunun için özel olarak tasarlanmıştır.
Diğer Programlama Dilleri
C++
JavaScript
Perl
Ruby
8| C++
C++, veri bilimi açısından yaygın kullanılan bir seçenek değildir, ancak yıldırım hızında bir performansa ve yaygın bir popülerliğe sahiptir. Veri bilimi açısından yaygın bir kullanımının olmamasının temel nedeni; verimliliğe kıyasla performans sorunlarına yol açmasıdır.
Bir Quora kullanıcısının söylediği gibi:
“Muhtemelen yalnızca geçici olarak bir kez çalıştırılacak bir analiz yapmak için kod yazıyorsanız, 10 saniye içinde çalışacak bir program yazmak için mi 30 dakika zaman harcamayı veya 1 dakika içinde çalışacak bir program yazmak için mi 30 dakika zaman harcamayı tercih edersiniz?”
Arkadaş önemli bir hususa değinmiş burada. Ciddi bir üretim performansı için, C++ düşük seviyede optimize edilmiş makine öğrenme algoritmalarını uygulamak için mükemmel bir seçenektir.
Değerlendirme
“Günlük işler için uygun değil, lakin performans kritik öneme sahip ise…”
9| JavaScript
Son yıllarda Node.js’nin popülaritesinin yükselmesiyle, JavaScript giderek daha ciddi bir sunucu tarafı dili haline geldi. Bununla birlikte, veri bilimi ve makine öğrenimi alanlarında kullanımı bugüne kadar sınırlı kaldı.
Aşağıda belirtilen dezavantajlardan da muzdariptir:
Oyunun sonlarına doğru atağa geçmiştir (Node.js henüz sadece 8 yaşındadır!), Yani…
Birkaç tane veri bilimi kütüphanesi ve modülü mevcuttur. Bu, gerçek bir ana akım ilgisi veya momentumunun olmadığı anlamına gelir.
Performans açısından, Node.js hızlıdır. Ancak bir dil olarak JavaScript, eleştirmenler tarafından da eleştirilmiyor değil.
Node.js’nin güçlü yönleri; eşzamansız I/O larının olması, yaygın kullanımı ve JavaScript ile derlenen dillerin varlığıdır. Dolayısıyla, veri bilimi ve gerçek zamanlı ETL işleme için yararlı bir frameworkte bir araya gelebileceği düşünülebilir. Buradaki anahtar soru, bunun zaten mevcut olandan farklı bir şey sunup sunmayacağıdır.
Değerlendirme
“JavaScript’in ciddi bir veri bilimi dili olarak seçenek olması için yapılması gereken çok şey var.”
10| Perl
Perl, genel amaçlı bir betik dili olarak çok yönlülüğü nedeniyle ‘Programlama dillerinin isviçre-çakısı’ olarak bilinir. Dinamik olarak yazılabilen diğer bir betik dil olan Python ile çok ortak noktası vardır. Ancak, Python’un veri bilimi alanındaki popülerliği gibi bir şey söz konusu değildir.
Biyoinformatik gibi niceliksel alanlarda kullanımı göz önüne alındığında, bu biraz şaşırtıcıdır. Veri biliminde Perl’in birkaç önemli dezavantajı vardır. Yeterince hızlı değil ve sözdizimi açık bir şekilde çok kötü. Veri bilimine özgü kütüphaneler geliştirmek için ayrıca itici bir gücü yoktur.
Değerlendirme
“Yararlı ve genel amaçlı bir kodlama dilidir, ancak veri bilimi açısından CV’niz için gerçek bir avantaj sunmuyor.”
11| Ruby
Ruby da diğer bir genel amaçlı, dinamik olarak yazılmış ve yorumlanmış kodlama dildir. Yine de Python ile aynı seviyede veri bilimini benimsememiştir.
Bu şaşırtıcı görünebilir, ancak muhtemelen bu Python’un akademideki egemenliğinin ve olumlu bir geri bildirim etkisinin bir sonucudur. Python’u ne kadar çok kişi kullanırsa, o kadar çok modül ve framework geliştirilir ve daha fazla kişi Python’a yönelir. SciRuby projesi, matris cebiri gibi bilimsel hesaplama işlevselliğini Ruby’ye getirmek için geliştirilmiştir. Ancak şimdilik gidilecek yolun başındayız diyebiliriz.
Değerlendirme
“Veri bilimi için henüz açık bir seçenek değil”
İşte bu makale; veri bilimi için hangi dillerin dikkate alınabileceğini gösteren küçük bir rehber niteliğindedir. Burada önemli olan şey; kullanım gereksinimlerinizi genelliğe karşı özgünlük açısından ve kişisel olarak da performans ve verimlilik geliştirme stilinizi anlamaktır.
Benim şuan ki işim, büyük ölçüde mevcut olan veri hattı ve ETL süreçlerini geliştirmeye odaklandığından, R, Python ve SQL’i düzenli olarak kullanıyorum. Bu diller, gerektiğinde R’nin daha gelişmiş istatistiksel paketlerini kullanma seçeneğiyle çalışabilmek için doğru bir şekilde genellik ve verimlilik dengesi sağlıyor.
Ancak, Java ile zaten mevcut bir deneyiminiz olabilir. Veya büyük veri için Scala kullanmak isteyebilirsiniz. Ya da, belki de Julia projesine dahil olmak da diğer bir tercihiniz olabilir. Belki de MATLAB’ı üniversite okurken öğrendiniz veya SciRuby’a bir şans vermek istiyorsunuz? Belki de tamamen farklı bir öneriniz var?!
Comments