Site icon CIO Update

R ile büyük veriyi harmanlamak

Açık kaynak kodlu R programlama dili ile büyük veri üzerinde istatistikler ve grafiksel çıktılar alabilirsiniz…

Martin Heller 

Büyük veri setleri üzerinde istatistiki bilgiişlem ve grafikler gerçekleştirmek için açık kaynak R programlamayı kullanmaya başlayın. Birkaç yıl önce medikal uygulama yönetimi yazılımı alanında bir startup firmasının CTO’su ve kurucularından biriydim. Çözmeye çalıştığımız problemlerden bir tanesi medikal ziyaret takvimlerinde herkesin zamanını nasıl optimize edebileceğimizdi. Sıklıkla ofis ziyaretleri doktorun zamanını optimize etmek üzere planlanır ve hastalar da ciğerlerindeki bulaşıcı hastalıklar yüzünden kesintisiz olarak öksüren insanlarla dolu kalabalık bekleme odasında beklemek zorundaydı.

Hastane medikal direktörü olan kuruculardan bir tanesinin ziyaret nedeni bazında bir ofis ziyaretinin gereken uzunluğunu tahmin edebilen çok değişkenli bir doğrusal modeli vardı; hastanın bir tercümana ihtiyaç duyup duymaması, hem doktor hem de hastanın geçmiş ziyaret uzunlukları ortalaması ve diğer olası ilgili faktörler. İnşa etmem gereken alt sistemlerden bir tanesi model içinde geçmiş verilere dayanan tüm katsayıları güncellemek için aylık bir ilişki yoklaması göreviydi.

Çok sayıda seçeneği araştırdıktan sonra bu bileşeni R’da geliştirmeyi seçtim; R sistemi içerisinde geliştirilmiş geniş çeşitlilikte istatistik (doğrusal ve doğrusal olmayan modelleme, klasik istatistiki testler, zaman serisi analizi, sınıflandırma, kümeleme) ve grafik tekniklerinin avantajında yararlanarak.

Beni çeken şeylerden bir tanesi R’ın kod diliydi ki güncellenen veri setlerinde analizleri kaydedip yeniden çalıştırmamı kolaylaştırıyor; bir diğer cazibe noktası R ve C++’ı entegre yeteneğiydi. Bu projenin anahtar faydalarından bir tanesi esasında Excel ve diğer GUI analiz programlarının aksine R’ın tamamen denetlenebilir olmasıydı.

Bununla birlikte pilot Web uygulamasını geliştirmemden kısa bir süre sonra startup’ın nakdi tükenmişti; en azından kısmen çünkü ilk hastane müşterimiz iflas açıklamak zorunda kalmıştı. Buna rağmen istatistiki analiz ve veri bilimleri için R halen benim favorim.

R script’leri

Computerworld’den Sharon Machlis 2013 yılında iş zekasına yönelik olarak R için mükemmel bir başlangıç eğitimi yazmıştı. Göz atmanızı öneririm.  (http://www.computerworld.com/article/2497143/business-intelligence-beginner-s-guide-to-r-introduction.html)

Masaüstünüze R ve RStudio’u kurarak başlayın. İkisi de ücretsiz. RStudio opsiyonel ama ben onu seviyorum ve muhtemelen siz de seveceksiniz. Yarım düzine başka R IDE’leri ile kısmi R desteği sunan bir düzine editör mevcut ama hepsini deneme çılgınlığına düşmeyin.

R’ı, (Şekil 1) R Konsolu (Şekil 2) ve RStudio’yu(Şekil 3) komut satırından çalıştırmayı deneyin.  Bir takım R dersleri ve demolarıyla kendinizi alıştırın.

Şekil 1

 

 

Şekil 2
Şekil 3

 

 
R’ın gücü istatistiksel analizler gerçekleştirmek için aldatıcı biçimde basit gözüken çağrılarda yatıyor. Söz gelimi,

 

fm1 <lm(y ~ x, data=dummy, weight=1/w^2)

summary(fm1)

 

Diyor ki “sağlanan veri ve ağırlık vektörleri için y ve x değişkenli bir lineer model için en uygun katsayıyı, döşeli değerleri ve artıkları bul. Onları fm1 nesnesine kaydet ve ardından sonuçları özetle.” Daha önce aşağıdakini tanımlamıştık:

 

w <1 + sqrt(x) / 2

 

Bu kod anlaşılır bir biçimde okunuyor. Ancak onu yazmak biraz çalışma gerektiriyor. Ama zor değil ve düzinelerce kitabın yanı sıra sayısız ücretsiz yardım mevcut.

 

Web’deki R help’inin, R Console ve RStudio içinde Help menü içeriklerinin yanı sıra R komut satırından da yardım alabilirsiniz. Örneğin;

 

?functionName

help(functionName)

example(functionName)

args(functionName)

help.search(“your search term”)

??(“my search term”)

 

Veriyi R içine çekmek için data() fonksiyonuyla listelenen basit verileri kullanabileceğiniz gibi bir dosyadan da yükleyebilirsiniz:

 

mydata <read.csv(“filename.txt”)

 

R fazlasıyla genişletilebilir. Library() ve require fonksiyonları eklenti paketlerini yüklüyor; require() diğer fonksiyonların içinden kullanımı için tasarlandı. Çok sayıda eklenti paketi ve R dağıtımı CRAN’da (dünya çapındaki Kapsamlı R Arşiv Ağı) yaşıyor. Diğer iki yaygın R arşivi Omegant ve Bioconductor. Ekstra paketleri RForge içinde bulunuyor.

 

R kurulumu temel paketleri ve CRAN’dan önerilen paketleri yerel bir kütüphane dizini içerisine kopyalıyor; Mac’teki bu konum /Library/Frameworks/R.framework/Versions/3.1/Resources/library/. R library() komutunu herhangi bir argüman olmadan çalıştırmak yerel paketlerle kütüphane konumlarını listeleyecek. RStudio aynı zamanda, Packages sekmesindeki kurulum onay kutusunu işaretlediğinizde listelenmiş bir paketi kurmak için doğru library() komutunu da üretecek. Komut yardımı (package = packageName) fonksiyonları belirlenmiş paketler içinde görüntüleyecek.

 

Yalnızca CSV dosyalarından değil herhangi bir makul kaynaktan veri yüklemek için R paket ve fonksiyonları var. Read.table() fonksiyonu kullanılarak kontrol edilen virgül dışındaki ayırıcıların ötesinde veri tablolarını kopyala yapıştır yapabilir, Excel dosyalarını okuyabilir, Excel’i R’a bağlayabilir, SAS ve SPSS verilerini çağırabilir, ayrıca veritabanları, Salesforce ile RESTful arayüzlerine erişebilirsiniz.

 

RStudio Tools|Import Dataset menü nesnesi, veriye bir metin dosyası ya da URL’e bakarak ve gördüklerinizi temel alan açılır menülerdeki doğru dönüşüm seçeneklerini ayarlayarak doğru komutları üretmenize yardımcı olacağından standart veri aktarımları için sözdizimi öğrenmenize gerçekten gerek yok.

 

CRAN üzerinde var olan paketleri isimlerine göre listeleyebilirsiniz; bu liste masaüstünüze varsayılan olarak download edilmiş önerilen paketler listesinden çok daha kapsamlı. Varsayılan arşivlerden birinden paket yüklemek için install.packages fonksiyonunu kullanın:

 

install.packages(“ggplot2”)

 

 

Edgar Anderson’un Iris verisi bir stok R veri setidir ve bu saçılım grafiği grafik demosundan elde edildi.

Bu arada ggplot2’nin standart grafik paketine nazaran daha fazla seçeneğe sahip popüler bir gelişmiş grafik paketi olduğunu hatırlatalım. Hiç şüphesiz grafikler çok şey başarabilir. Şekil 2 ve 3 grafiklerine ek olarak 4 ve 5’i göz önünde bulundurun.

Bu topografik harita stok verilerinden ve grafik demosundan ortaya çıktı

 

 

 

Grafikler ve istatistiki analiz anlamında R çok daha fazlasını yapabilir. Sharon Machlis’in derslerini okuyun ve ekstra bilgilere götüren bağlantılarını takip edin. Bu noktada konuyu R’da büyük verinin nasıl analiz edilebileceğine genişletmek istiyorum.

 

Buluttaki R

R programcıları “büyük veri” hakkında konuştuklarında onlar Hadoop üzerinden giden veriler demek istemiyor. Onlar “büyük” kelimesini bellek içinde analiz edilememiş verileri anlatmak için kullanıyor genellikle.

 

Esasında masaüstü ya da laptop’a kolaylıkla 16 GB RAM getirebiliyorsunuz. 16 GB RAM içinde çalışan R milyonlarca veri dizisini problemsizce analiz edebilir. Bir milyon satırlık bir veritabanının büyük olarak nitelendirildiği günlerden bu yana zaman epey değişti.

 

Programları daha fazla RAM’e gerek duyduğunda birçok geliştiricinin attığı ilk adımlardan biri onu daha büyük bir makinede çalıştırmaktı. R’ı bir sunucu üzerinde çalıştırabilirsiniz; yaygın bir 4U Intel sunucusu 2 TB’a kadar RAM’e sahip olabilir. Elbette 2 TB’lık bütün bir sunucuyu tek kişisel R oturumuna bağlamak biraz müsriflik olabilir. Bu yüzden insanlar büyük bulut oturumlarını ihtiyaç duyduklarında çalıştırıyor, sunucu donanımlarında VM’leri çalıştırıyor veya sunucu donanımları üzerinde RStudio Server benzerlerini çalıştırıyor.

 

RStudio Server ücretsiz ve Pro sürümleriyle geliyor. Bireysel analistler için her ikisi de aynı özelliklere sahip fakat Pro versiyonu ölçek tarafında daha çok şey sunuyor: yetkilendirme ve güvenlik, yönetim görünürlüğü, performans ayarları, destek ve ticari bir lisans. RStudio’dan Roger Oberg’e göre firmanın niyeti bireyler için ödemeyle gelen özellikler yaratmak değil.

 

Şekil 6
Şekil 7

RStudio Server Pro çeşitli büyük veri sistemleriyle entegre çalışıyor. Söz gelimi IBM Bluemix PaaS’i incelerken R ve RStudio’nun IBM’in DashDB servisinin bir parçası olduğunu fark ettim. (Şekil 6) Esasında RStudio’dan Oberg ve Tareef Kawaf’a göre bu Bluemix ve SoftLayer üzerine RStudio’nun bir kurulumu.

 
 

R’ı büyük veri karşısında çalıştırmak için ekstra bir strateji var: Sadece analiz etmeniz gereken veriyi getirin. MapReduce, Hadoop, Spark ve Storm ruhuyla, küçültülmüş veri setleri üzerinde bellek içi analizlerin izlenebilir olmasını sağlamak için veri akarken onu elemek istersiniz. Kawaf’ın örneğine bakacak olursak, 100 TB’lık bir veriye sahip olabilirsiniz ama “sadece” 5 sütun ve 20 milyon satır, birkaç yüz megabyte’lık azaltılmış veriye ihtiyacınız olabilir.

 

Aynı zamanda uygulama içinde değil de veritabanı içinde bir takım analizler gerçekleştirmek de isteyebilirsiniz. R kaynak kodu içinde IBM bir örnek sağlama işini güzelce yapmış. Şekil 7’ye göz atabilirsiniz.

 

Veriyi veritabanı dışına R içine aktarmak hatırı sayılır bir zaman alabilir. Eğer network veri akışının çoğunu ortadan kaldırırsanız analiz için gereken zamanı önemli oranda azaltabilirsiniz. Veritabanı içi bağlanım analizi için zamanlamanın 2.7 saniye olduğunu fark edeceksiniz. Uygulama içinde aynı görev 1.47 dakika ile 30 kattan daha uzun sürdü. Hesaplanan bağlanım katsayıları tamamen aynıydı. Tek fark birinde analiz verinin bulunduğu yerde yapılırken, diğerinde veritabanından R uygulamasına çekilerek yapıldı.

 

IBM’in uygulaması tek değil; bir Bluemix hesabım vardı. Vertica (HP), Greenplum (Pivotal), Oracle ve Teradata’nın tümü R paketlerine sahip. Diğer taraftan ötekilerin veritabanı içi analitikler tarafında ne kadar ileri gittiğinden emin değilim.

 

Bu arada, RStudio Server Pro’yu browser üzerinde çalıştırmak RStudio’yu masaüstümde çalıştırmakla aynı hissettirdi ki bu beni hem şaşırttı hem de memnun etti.

 

Shiny ve R Markdown

Şekil 8

Elbette geliştiriciler ve analistler hiçbir zaman sadece kod yazarak ve sonuçları belirleyerek işini tamamlamaz. Tepe yönetim aylık raporlar ister ve orta seviye yönetim altında neler yattığını bilmeksizin veriyle oynamak ister. Buyurun Shiny ve R Markdown’a; RStudio’dan sırasıyla Web uygulamaları ve raporlama için iki R paketi.

Şekil 8 RStudio’da çalışan basit bir Shiny uygulamasını gösteriyor.

 

Widget’lerle girdi alanları gibi HTML kontrol bileşenlerini ilişkilendirerek interaktif ve “tepkisel” Web uygulamaları inşa etmek için Shiny’yi kullanabilirsiniz. “Tepkisel” derken RStudio şunu demek istiyor ki bir değer değiştiğinde değişen değere bağlı tüm değerler yeniden hesaplanıyor; bir tablolama programından bekleyeceğiniz gibi.

 

Girdi değiştiğinde neyin yeniden hesaplandığını kısıtlamak için tepkisel örtü fonksiyonu değerlerini önbelleğe alıyor ve sadece geçersiz olanları yeniden hesaplıyor. Shiny uygulamalarını kendi donanımınız üzerinde çalışabilir ya da onları shinyapps.io sunucusnda yayınlayabilirsiniz.

 

Shiny uygulamaları orta seviye idarecilerin gereksinimlerini karşılayabilir. Peki ama üst yönetimdeki durum ne?

 

Şekil 9

Eğer bir GitHub kullanıcısıysanız veya son on yıldır Web ve geliştirme alanlarına sadece dikkat gösteriyorsanız, HTML ve diğer etiket bazlı işaretleme dillerinde biçimlendirilmiş dokümanların üretilmesine yönelik Markdown dilini bilirsiniz. RStudio bir Markdown uygulamasına sahip ve onu gömülü R kod yığınlarına, R Markdown paketindeki LaTeX ve MathML’e dahil edecek şekilde genişletiyor. Ayrıca Shiny’yi kullanarak interaktif R Markdown dokümanları yaratıp onları kendi Shiny sunucunuzda veya shinyapps.io’da yayınlayabilirsiniz. Bunun için şekil 11’e bakabilirsiniz

 

 

Şekil 10

R’ın Gücü

Gördüğümüz gibi R, veri bilimciler ve istatistikçiler için yararlı bir araç ve veri analizleri için aksi halde Python (NumPy, Pandas ve StatsModels ile birlikte); SQL (veritabanında tutulan veri için); ya da SAS (ve onun GUI varyasyonu JMP)’ye yönelebilecek programcıların bir şekilde standart dışı script dili olarak ilgisini çekecek. Excel ile karşılaştırıldığında R hatırı sayılır oranda daha fazla istatistik ve grafik gücüne sahip. Bilhassa özel gereksinimleriniz için paketler ekliyorsanız ve çok daha fazla denetlenebilir. Formüllerle dolu bir tabloya nazaran R script’ini doğrulamak çok daha kolay.

Şekil 11

 

 

Bir IDE olarak RStudio’nun eklenmesiyle birlikte gelişen R uygulamaları fazlasıyla verimli olabilir. RStudio Server firmaların büyük donanımlarda var olan  büyük RAM ve çok sayıda işlemcinin avantajından yararlanmasına imkan tanıyor. Shiny R’ı bir Web uygulamasına dönüştürüyor ve R Markdown raporlar için R’ı kullanmanızı sağlıyor.

 

Diğer yandan R’ın devasa gücü ve mevcut R paketlerinin çokluğu epey göz korkutucu bir öğrenme sürecini ortaya çıkartabilir. R’ı öğrenirken ve kullanırken biraz istatistiki arkaplana sahip olmanın çok faydası var ama bu tüm veri bilimleri için geçerli. Çok sayıda kütüphanesi olan diğer tüm programlama dilleri için söylenebileceği gibi, R’ı öğrenmeye yönelik en iyi stratejiniz her defasında bir adım atmaktır.

 

Exit mobile version