R dili Büyük Veriler için uygun mu


48

R, Veri Analizini amaçlayan birçok kütüphaneye sahiptir (örneğin JAGS, BUGS, ARULES vb.) Ve aşağıdaki gibi popüler ders kitaplarında bahsedilmiştir: J.Krusche, Bayesian Veri Analizi yapmak; B.Lantz, "R ile Makine Öğrenmesi".

Bir veri kümesinin Büyük Veri olarak kabul edilmesi için 5 TB'lık bir kılavuz gördüm.

Sorum şu: R tipik olarak Büyük Veri problemlerinde görülen Veri miktarı için uygun mu? Bu veri kümesiyle R kullanıldığında uygulanacak stratejiler var mı?


4
Aşağıdaki cevaplara ek olarak, hatırlatılması gereken iyi bir şey, Büyük Veriye ilişkin R'den ihtiyaç duyduğunuz şeylerin çoğunun, ham günlüklere kıyasla çok küçük olan özet veri kümeleriyle yapılabilmesidir. Ham kütükten örnekleme ayrıca, ayrıştırma çizgileri ve ham kütüğün çizgileri baş ağrısı olmadan analiz için R'yi kullanmanın sorunsuz bir yolunu sağlar. Örneğin, işteki ortak bir modelleme görevi için rutin olarak kullandığım 32 gbs ham logları modelleme için 28 mbs kullanıcı verisine özetlemek için harita azaltmayı kullanıyorum.
cwharland

Yanıtlar:


40

Aslında bu geliyor. Özet olarak R kitabında, büyük veri işleme için R ile Hadoop kullanımı hakkında bir bölüm bile var. Etrafında yapılması gereken bazı işler var, çünkü R bunların hepsini bellekte yapıyor, bu nedenle temelde sizin için mevcut RAM miktarınızla sınırlısınız.

R ve Hadoop için olgun bir proje RHadoop'tur.

RHadoop birkaç alt projeye ayrılmıştır: rhdfs, rhbase, rmr2, plyrmr ve quickcheck ( wiki ).


Ancak R'yi Hadoop ile kullanmak bu sınırlamanın (hafızada hesaplamalar yapmak zorunda) üstesinden gelir mi?
Felipe Almeida

RHadoop bu sınırlamanın üstesinden gelir. Burada öğretici: github.com/RevolutionAnalytics/rmr2/blob/master/docs/… açıkça belirtiyor . Bir mapreduce zihniyete geçmeniz gerekir, ancak R'nin hadoop ortamına gücünü sağlar.
Steve Kallestad

2
Bahsetmeye değer iki yeni alternatif: SparkR databricks.com/blog/2015/06/09/… ve h2o.ai h2o.ai/product, her ikisi de büyük veriler için çok uygun.
Wacax

30

Büyük veri kümeleri için R kullanımındaki asıl sorun RAM kısıtlamasıdır. Tüm verileri RAM’de tutmanın arkasındaki sebep, HDD’lerde depolamaktan daha hızlı erişim ve veri manipülasyonları sağlamasıdır. Performansa ilgi duymaya istekliysen, evet, R'deki büyük veri kümeleriyle çalışmak oldukça pratik .

  • RODBC Paketi: Veri almak ve işlem yapmak için R'den harici DB'ye bağlanmaya izin verir. Bu nedenle, işlenen veriler RAM'inizle sınırlıdır. Genel veri seti çok daha büyük olabilir.
  • Ff paketi, hafıza haritalı sayfalar kullanarak RAM veri setlerinden daha büyük kullanımına izin verir.
  • BigLM: Büyük veriler üzerinde genelleştirilmiş doğrusal modeller oluşturur. Veriyi topaklarda belleğe yükler.
  • bigmemory: Güçlü ve hafıza açısından verimli paralel analizlere ve çok büyük veri kümelerinin veri madenciliğine izin veren bir R paketi. Büyük işaretçilere (matrisler vb.) Harici işaretçi nesnelerini kullanarak belleğe (RAM'de) kaydetmeye izin verir.

1
Başka bir paket, RAM içerisinde dağıtılmış dosyalarla çalışmanıza izin veren distributorR'dır.
adesantos

17

Burada bazı iyi cevaplar. Aşağıdaki üç notu ekleyerek tartışmaya katılmak istiyorum :

  1. Üzerinde Sorunun vurgu verilerin hacmine atıfta ederken Büyük Verilerden özellikle dikkate kesinlikle anlaşılır ve geçerli olan sorunu veri hacmi büyümesinin geride bıraktı başına teknolojik kapasitelerin üstel büyümeyi Moore Yasası ( http://en.wikipedia.org/wiki/Moore % 27s_law ).

  2. Bunu söyledikten sonra, büyük veri kavramının diğer yönlerini hatırlamak önemlidir. Gartner'ın tanımına dayanarak (vurgu madeni - AB): " Büyük veri , gelişmiş karar alma, içgörü keşfi ve süreç optimizasyonu için yeni işlem biçimleri gerektiren yüksek hacimli , yüksek hızlı ve / veya çok çeşitli bilgi varlıklarıdır." (genellikle " 3V model " olarak anılır ). Bundan bahsediyorum, çünkü veri bilimcilerini ve diğer analistleri , büyük verilerin hacimli yönleri dışında kalan muazzam R ekosisteminin zenginliği ile etkinleştirilen R paketlerini aramaya ve kullanmaya zorluyor .

  3. Mevcut cevaplar, büyük verilerle ilgili bazı R paketlerinden bahsederken, daha kapsamlı bir kapsama alanı için , CRAN Task View "R ile Yüksek Performanslı ve Paralel Hesaplama" 'ya ( http: //cran.r-project) bakın. org / web / views / HighPerformanceComputing.html ), özellikle "Paralel hesaplama: Hadoop" ve "Büyük bellek ve bellek dışı veri" bölümleri .


12

R "büyük veri" için harika! Ancak, işletim sistemindeki RAM miktarıyla R (bazı basitleştirmelerle) sınırlı olduğu için bir iş akışına ihtiyacınız vardır. Aldığım yaklaşım ilişkisel bir veritabanı RSQLiteile etkileşimde bulunmak (bir SQLite veritabanını oluşturmak ve etkileşimde bulunmak için pakete bakınız ), verilerin yapısını anlamak için SQL tarzı sorgular çalıştırmak ve ardından hesaplama yoğunluğu için verilerin belirli alt kümelerini çıkarmaktır. istatistiksel analiz.

Bununla birlikte, bu sadece bir yaklaşım: diğer veritabanları ile etkileşime girmenize (örneğin, Monet) veya daha az bellek sınırlaması olan R'de analizler yapmanıza izin veren paketler var (örneğin, bakınız pbdR).


9

Başka bir kriter göz önüne alındığında, bazı durumlarda Python'u kullanmanın Büyük Veri için R'den çok daha üstün olabileceğini düşünüyorum. R'nin veri bilimi eğitim materyallerinde yaygın olarak kullanıldığını ve bunun için mevcut iyi veri analiz kütüphanelerinin kullanıldığını biliyorum, ancak bazen bu sadece takıma bağlı.

Tecrübelerime göre, zaten programlamaya aşina olan insanlar için Python kullanmak, programlama dili açısından Python'a göre iyi tasarlanmamış ve güçlü olmayan R gibi bir dile kıyasla çok daha fazla esneklik ve üretkenlik artışı sağlar. Kanıt olarak, üniversitemdeki bir veri madenciliği kursunda, diğerleri R'nin zengin veri analiz kitaplığına erişebilse de en iyi final projesi Python'da yazılmıştır. Diğer bir deyişle, Python için genel verimlilik (öğrenme materyalleri, dokümantasyon vb. Dikkate alındığında), Python için özel amaçlı veri analizi kitaplıklarının bulunmamasına rağmen, R'den daha iyi olabilir. Ayrıca, Python'un veri bilimindeki hızlı temposunu açıklayan bazı güzel makaleler var: Python, Python'daki R ve Zengin Bilimsel Veri Yapılarını Yerine Getiriyor bu yakında R için kullanılabilir kütüphanelerin boşluğunu doldurabilir.

R kullanmamanın bir diğer önemli nedeni ise gerçek dünyadaki Büyük Veri problemleriyle çalışırken, sadece akademik sorunların aksine, veri ayrıştırma, temizleme, görselleştirme, web hurdaya alma ve diğer pek çok araç gibi başka araç ve tekniklere ihtiyaç duyulmasıdır. Genel amaçlı bir programlama dili kullanarak çok daha kolaydır. Bu nedenle, birçok Hadoop kursunda (Udacity'nin çevrimiçi kursu dahil) kullanılan varsayılan dilin Python olması neden olabilir .

Düzenle:

Son zamanlarda DARPA, Python'un Big Data'daki geleceğinin bir işareti olan büyük veri işleri için veri işleme ve görselleştirme yeteneklerini finanse etmek için 3 milyon dolar yatırım yaptı. ( detaylar )


3
R ile işe keyfi veri işleme için (olan reshape2, plyrve şimdi dplyr) ve ben daha iyisini yapabileceğimi sanmıyorum ggplot2/ ' ggvisgörselleştirme için
agave organik

Pearpies Cevabımın başında da belirttiğim gibi, R için uygun olan iyi kütüphaneleri kabul ediyorum, fakat bir bütün olarak, büyük veriler için gerekli tüm alanları göz önüne aldığımda (cevabında bunlardan birkaçını söylediğim gibi), R Python için mevcut olgun ve büyük kütüphaneler için maç.
Amir Ali Akbari


5
Bu cevap tamamen anekdot gibi görünüyor ve R'nin Python'a göre zayıf olduğu hiçbir yerde neredeyse hiç göstermiyor.
stanekam

Aman tanrım! “Bir kanıt olarak, üniversitemdeki bir veri madenciliği kursunda, diğerleri R'nin zengin veri analiz kütüphanesine erişebilmesine rağmen, en iyi final projesi Python'da yazılmıştı.” Ve okuyucuların analizinize saygı duymasını mı istiyorsunuz? vay. En iyi projede yer aldığı dilden başka bir piton projesi olan başka herhangi bir faktör olabilir mi? gerçekten ....
Shawn Mehan

7

R, birçok analiz için mükemmeldir. Bahsedildiği gibi, MapR, RHadoop ve RStudio'nın ölçeklenebilir sürümleri gibi büyük veriler için daha yeni uyarlamalar var.

Bununla birlikte, endişeniz kitaplık ise, gözünüz Spark'ta olsun. Spark büyük veriler için yaratıldı ve tek başına Hadoop'tan çok daha hızlı. Makine yetiştirme, SQL, akış ve grafik kitaplıkları gibi geniş bir alanda büyüyor. Böylece, analizin hepsinin çerçeve içerisinde (çoklu dil API'leri ile, Scala'yı tercih ederim), diller / araçlar arasında karıştırmadan yapılması gerekmese bile izin verin.


4

Diğer cevapların belirttiği gibi, R, "Büyük Veri" seviyesine ölçeklendirmek için Hadoop ve diğer dağıtılmış hesaplama platformlarıyla birlikte kullanılabilir. Bununla birlikte, özellikle R'ye bağlı değilseniz, ancak “R benzeri” bir ortam kullanmaya istekliyseniz, Incanter , JVM'ye özgü (Clojure'a dayanan) olduğu gibi, sizin için iyi çalışabilecek bir projedir. R'nin sahip olduğu Hadop ile kendisi arasında "empedans uyumsuzluğu" yok. Yani, Incanter'dan, bir JNI köprüsünden geçmeden veya herhangi bir şey yapmadan Java yerel Hadoop / HDFS API'lerini çalıştırabilirsiniz.


2

Bir uzmandan uzaktayım, ancak konuyla ilgili anlayışım bana R'nin (istatistiklerde süper) ve örn. Python'da (R'nin eksik olduğu bazı şeylerde mükemmel) birbirini oldukça iyi bir şekilde tamamladığını söylüyor (önceki yayınlarda belirtildiği gibi). .


0

Aslında R.'nin büyük verileriyle çalışmak için birçok araç olduğunu düşünüyorum. Sparklyr bu alanda harika bir oyuncu olacak. sparklyr, Apache Spark'ın R arayüzüdür ve yerel ve uzak kümelerle bağlantı kurarak dplyr arka ucu sağlar. Ayrıca Apache Spark'ın makine öğrenme kütüphanelerine de güvenilebilir. Ayrıca, rmpi ve kar (kullanıcı tarafından kontrol edilen) veya doMC / foreach (sistem bazlı) gibi çeşitli paketlerle paralel işleme mümkündür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.