Veri Madenciliğinde R / Python Tercihi Nasıl Yapılmalı?

Malumunuz, günümüzün en popüler konularından birisi veri madenciliği ve yapay zekaya kadar giden, bunu tamamlayıcı uzmanlık alanları. Araştırmalarımdan edindiğim şahsi öngörüm, veri madenciliği kavramının yakın gelecekte en önemli bilim alanı haline geleceği ve aynı bilgisayar bilmek gibi bu konularda bilgi sahibi olmanın hem akademik dünyada hem de özel sektörde vazgeçilmez bir hale geleceği. Bazıları yaşadığımız döneme bilişim çağı demeyi tercih ediyor ama verinin her şeyin merkezi haline geliyor olması sebebiyle şahsen ben bilgi çağında olduğumuzu düşünüyorum. Bu alana girmeyi düşünen arkadaşlar varsa, halen geç kalmış sayılmazsınız. Daha buzdağının görünen kısmına bile erişemedik çünkü. Asıl devrim kuantum bilgisayarların günlük hayatta kullanımıyla birlikte gelecek.

Benim gibi veri madenciliğine merak salmış olup gerekli araçları öğrenmek isteyenlerin genelde sorduğu ilk sorulardan birisi: Hangi programlama dilini tercih etmeliyim? oluyor. Biz bilgisayar mühendisleri esasen programlama dilini ikincil planda tutarız. Önceliği her zaman konseptin ve kavramların anlaşılmasına veririz. Temel sistematiği anladığınızda yeni bir programlama dilinin öğrenilmesi zaten kolaydır. Ama hem günümüz yazılım sektörünün gerçekleri, hem de hızlı ürün ortaya koyma ihtiyacı sebebiyle doğru bir yerden başlamak da önemli. Bu yüzden bu yazımda veri madenciliği ve makine öğrenmesi konularında en yaygın kullanılan iki programlama dili olan R ve Python arasındaki tercihimi ve sebebini anlatacağım.

Python ile iki yıl önce tanıştım. Oldukça kolay aşina olunabilecek bir dil. Hatta programlamaya giriş dersinin Python ile verilmesinin faydalı olacağını bile düşündüm öğrenirken. Bilirsiniz, yeni bir programlama diline adım attığınızda ilk yaptığınız şey ekrana “merhaba dünya!” yazdırmaktır. Bunu yazdırdığınızda o programlama dilinin dünyasına adım atmış olursunuz adeta. Python’da bu aşama çoğu programlama diline göre çok daha hızlı geçilebiliyor. Öğrenme süreci oldukça hızlı. Veri madenciliği ve makine öğrenmesi için kullanılabilecek olgun kütüphaneler var. NumPy, Panda, SciPy gibi kütüphaneler hemen aklıma gelenler. Yapmak istediğiniz işlerin her birini iyi yapan kütüphaneler mevcut ve bunların birleşimi size kullanılabilecek araçlar havuzunu oluşturuyor. Ancak bu kütüphaneler Python kurulduğunda hazır gelmiyor. Kurulum gerektiriyor ve sürüm uyumu gibi dikkat edilmesi gereken bazı hususlar var. Uyumsuzluklarla boğuşmak istemeyenler için veri madenciliğine odaklı bazı hazır kurulumlar da geliştirilmiş. Örneğin ben AnaConda yükleyerek başlamıştım.

R dilinin Python’dan en önemli farklarından birisi genel amaçlı bir programlama dili olmaması. R istatistik amacıyla, istatistikçiler tarafından geliştirilmiş bir dil. İstatistikçiler tarafından geliştirilmiş olması üzerinde biraz durmak gerekli. Bu dil ilk tasarlandığında web projeleriyle entegre bir yapıda olması ihtimali söz konusu değildi. Kullanım amacı verilerin yüklenmesi, analizlerin yapılması ve çıktı olarak grafik ve raporların üretilmesiydi. Hem istatistikçiler tarafından üretilmiş olması hem de gerçek zamanlı işlemler düşünülmediği için performans ikinci planda, hatta daha geri planlardaydı. Shiny gibi web tabanlı görünümler ve sunucu özellikleri daha sonradan eklendi. Ama bunlar dilin temelinde bulunan özellikler olmadığı için gerçek zamanlı ya da performansın önemli olduğu sistemler için Python’un tercih edilmesi daha doğru olacaktır. Ki okuduğum makalelerde de benzer bir görüş var. R’ın istatistikçiler tarafından geliştirilmiş olmasının avantajlı yönü ise analizlerin daha az komutla yapılabilmesi. Yazım kolaylığı ön planda tutulmuş. Python da kolay yazımı öne çıkan bir dil, ancak veri analizi özelinde R hem daha kısa sürede aşinalık kazanılabilecek hem de daha az kodla daha fazla çıktı elde edilebilecek bir dil.

Gözlemlediğim kadarıyla R akademik dünyada daha yaygın. Bunun sebebini anlamak mümkün. Herhangi bir bilgisayara hızlıca R geliştirme ortamını yükleyip dakikalar içerisinde veriniz üzerinde analizler yapmaya başlayabilirsiniz. Örneğin bir akademisyen yeni makalesi için bilgisayarına R yükleyip verisini analiz edebilir, sonrasında çıktı olarak aldığı grafik ve değerleri makalesine ekleyebilir. Bu dil veri analizi için geliştirildiğinden, özellikle temel analizler için ilave bir paket kurulumuna ihtiyaç kalmıyor. Yeni bir pakete ihtiyaç olsa bile arayüz üzerinden bu paketleri eklemek oldukça kolay. Python’da durum biraz farklı. Mühendislerin kullanacağı varsayımıyla tasarlanmış bir ortam mevcut. İşi bilenler için yeni paketlerin uygun sürümlerinin kurulumu bu dilde de kolay, ancak programcılık geçmişi olmayan birisinin zorlanacağı kesin. Ayrıca farklı kaynaklardan derlenen kütüphanelerin birbiriyle uyumlu çalışması mümkün olsa da kimi zaman vakit alabiliyor.

Sonuç olarak, akademik uğraşlar için ya da gerçek zamanlı analiz ihtiyacı bulunmayan uygulamalar için R kullanılmasını tavsiye edebilirim. Kimi durumlarda sunucu tarafında R, ön tarafta diğer dillerden birinin kullanıldığına da şahit oluyorum. Bu da bir alternatif. Ancak performansın önemli olduğu alanlarda Python kullanılması daha doğru olacaktır. Stanford Üniversitesi hocalarından birinin tecrübesine göre basit “for” döngülerinde bile R ve Python arasında ciddi performans farkı var. Bu belki saatlik güncellenen verilerde önemli olmayabilir, ancak akan verilerde R kullanma lüksümüz olmaz diye düşünüyorum. Dağıtık altyapıda çalışma konusunda da R ve Python arasında ciddi yaklaşım farkları var ayrıca.

Bu iki programlama dilini birbirini tamamlayıcı şekilde kullanmak da mümkün. R içinde Python kodu çalıştırmak için rPython kütüphanesi, Python içinde R kodu çalıştırmak için de RPy2 kütüphanesi kullanılabiliyor.

Son söz olarak konuyu şu sözlerle bağlayabilirim sanırım: Akademisyen olarak çalışıyorsanız ve amacınız verileri girdi olarak verip sonuç üretmekse kesinlikle R kullanmayı öğrenin derim. Programlamacıysanız ve çıktı olarak ortaya bir web uygulaması çıkmasını hedefliyorsanız ya da diğer uygulamalarla eşzamanlı çalışacak bir sistem öngörüyorsanız Python tercihiniz olabilir. Ancak uzun vadede veri uzmanlığını meslek olarak benimsemeyi düşünüyorsanız her iki dile de hakim olmanızda fayda var diye düşünüyorum. Böyle bir yolu tercih ederseniz uzun vadede eliniz daha kuvvetli olur; ihtiyaca yönelik çözümü en kısa ve etkin geliştirebilecek bir yaklaşım benimsemeniz mümkün olabilir.

Aşağıda yer alan, Job Trends’deki analiz bu iki dilin başa-baş gittiğini ve veri madenciliğine olan ilginin ciddi şekilde artmakta olduğunu gösteriyor. Tabi bu grafik 2013’e kadarlık dönemi gösterdiği için yanıltıcı olabilir.

KDnuggets sitesinde 2014 yılında yapılmış bir anketin sonucu da fikir verebilir:

Anket sonucu R ve Python dillerini beraber kullanmanın önemini göstermesi sebebiyle anlamlı, ancak bu site – yanlış bilmiyorsam – akademisyenlerin daha fazla rağbet ettikleri bir site. Bu yüzden R tercih oranının daha fazla çıkmış olmasını buna da bağlayabiliriz.

Aşağıdaki grafik, iş ilanlarında “Python ve R” ın beraber istendiği görülüyor. Tabi bu tüm kariyerini bu alana yönlendirmek isteyen kişiler için önemli olabilir.

Aşağıda yer alan Google Trends verileri de başa-baş olan mücadeleyi Python’un son dönemde iyice açmakta olduğunu gösteriyor. Buradan benim anladığım şu: İlk dönemde veri madenciliği münferit veriler üzerinde yapılıyor ve elde edilen bilgilerle sistemler güncelleniyordu. Burada kullanılan dilin çok da önemi yoktu. Ancak şimdilerde sistemler veri madenciliği yaklaşımıyla bütünleşik bir şekilde geliştiriliyor. Python’un arayı açıyor olmasını kısmen buna bağlayabiliriz diye düşünüyorum.

Şahsi tecrübelerim doğrultusunda yazdığım bu yazı umarım faydalı olur, sizlerin bu alanlardaki tecrübelerinden de istifade etmek isterim.

Kaynaklar:

https://www.kdnuggets.com/2017/09/python-vs-r-data-science-machine-learning.html

http://blog.revolutionanalytics.com/2014/08/r-tops-kdnuggets-data-analysis-software-poll-for-4th-consecutive-year.html

https://www.datacamp.com/community/tutorials/r-or-python-for-data-analysis

Yorum Yapın