Büyük ölçekli istatistiksel analizler yapmak için hangi beceriler gereklidir?


107

Birçok istatistiksel iş büyük ölçekli verilerle tecrübe ister. Büyük veri setleriyle çalışmak için ihtiyaç duyacağınız istatistiksel ve hesaplamalı beceriler nelerdir? Örneğin, 10 milyon örnekle veri seti verilen regresyon modellerini oluşturmaya ne dersiniz?


1
Burada bazı iyi işaretçiler .
radek

En iyisi olduğunu düşündüğünüz şeyleri özetlemeniz yararlı olur.
rolando2

Ayrıca, büyük veri gruplarıyla hipotez testinin tartışılması da ilgi çekmektedir: stats.stackexchange.com/q/2516/919
whuber

Yanıtlar:


115

İyi cevaplar çoktan ortaya çıktı. Bu nedenle kişisel deneyime dayanan bazı düşünceleri paylaşacağım: ilgili olanları ihtiyaç duyduğunuz şekilde kendi durumunuza uyarlayın.

İçin arka plan ve bağlam- böylece, bu mesaja zarar verebilecek kişisel önyargıları hesaba katabilirsiniz - çalışmalarımın çoğu, insanların göreceli olarak küçük veri kümelerine dayanarak önemli kararlar vermelerine yardımcı oldu. Bunlar küçüktür çünkü verilerin toplanması pahalı olabilir (örneğin bir yeraltı suyu izleme kuyusunun ilk örneği için 10 bin dolar veya olağandışı kimyasalların analizi için birkaç bin dolar). Mevcut olan herhangi bir veriden mümkün olduğunca fazlasını almaya, onları ölüme araştırmaya ve gerektiğinde onları analiz etmek için yeni yöntemler icat etmeye alışkınım. Ancak, son birkaç yılda, Nüfus Sayımı blok düzeyinde ABD'nin tamamını kapsayan sosyoekonomik ve mühendislik verilerinden biri gibi oldukça büyük veritabanlarında çalışmakla meşgul oldum (8,5 milyon kayıt,

Çok büyük veri kümeleriyle, kişinin tüm yaklaşımı ve zihniyet değişikliği . Şimdi analiz edilecek çok fazla veri var. Anlık (ve geriye dönük olarak) açık sonuçlardan bazıları (regresyon modellemesi üzerinde durularak)

  • Yapmayı düşündüğünüz herhangi bir analiz çok zaman ve hesaplama gerektirebilir. Kısmi veri kümelerinde alt örnekleme ve çalışma yöntemleri geliştirmeniz gerekecek, böylece tüm veri kümesini hesaplarken iş akışınızı planlayabilirsiniz. (Alt örnekleme karmaşık olabilir, çünkü tüm veri kümesi kadar zengin verilerin temsili bir alt kümesine ihtiyacınız vardır. Ayrıca , verilerinizi, tutulan verilerle çapraz doğrulamayı unutmayınız .)

    • Bu nedenle, ne yaptığınızı belgelemek ve her şeyi kodlamak için daha fazla zaman harcayacaksınız (böylece tekrarlanabilir).

    • @ Dsimcha'nın daha önce belirttiği gibi, iyi programlama becerileri kullanışlıdır. Aslında, programlama ortamları ile ilgili deneyim deneyimine çok ihtiyaç duymazsınız, ancak programlamaya istekli olmanız, programlamanın ne zaman yardım edeceğini tanıma yeteneğine (neredeyse her adımda, gerçekten) ve temel unsurların iyi bir şekilde anlaşılmasına ihtiyacınız vardır. bilgisayar veri bilimi, uygun veri yapılarının tasarımı ve algoritmaların hesaplama karmaşıklığının nasıl analiz edileceği gibi. Yazmayı planladığınız kodun tüm veri kümesine ölçeklenip ölçeklenmediğini önceden bilmek önemlidir.

    • Bazı veri kümeleri büyüktür çünkü birçok değişkene sahiptir (binlerce veya on binlerce, hepsi farklı). Verileri özetlemek ve anlamak için çok zaman harcayacağınızı umun . Bir kod defteri veya veri sözlüğü ve diğer meta veri biçimleri zorunlu hale gelir.

  • Zamanınızın çoğunda basitçe verileri dolaşmak ve biçimlendirmek için harcanır. Büyük veri tabanlarının işlenmesi ile ilgili becerilere ve büyük miktarda veriyi özetleyerek ve grafik çizerek becerilere ihtiyacınız var . ( Tufte'nin Küçük Çoklu burada öne çıkıyor.)

  • En sevdiğiniz yazılım araçlarından bazıları başarısız olur. Örneğin, elektronik tabloları unut. Bir çok açık kaynaklı ve akademik yazılım büyük veri kümelerini idare etmekle kalmayacak: işlem sonsuza dek sürecek veya yazılım çökecektir. Bunu bekleyin ve kilit görevlerinizi yerine getirmenin birden fazla yolunun olduğundan emin olun.

  • Neredeyse koştuğunuz herhangi bir istatistiksel test o kadar güçlü olacak ki "önemli" bir etki tanımlayacağından neredeyse emin olacaksınız. Önemden ziyade etki büyüklüğü gibi istatistiksel önem üzerine daha fazla odaklanmalısınız .

  • Benzer şekilde, model seçimi zahmetlidir çünkü hemen hemen tüm değişkenler ve düşündüğünüz herhangi bir etkileşim önemli görünecektir. Analiz etmeyi seçtiğiniz değişkenlerin anlamlılığına daha fazla odaklanmalısınız .

  • Değişkenlerin uygun doğrusal olmayan dönüşümlerini tanımlamak için yeterli bilgi bulunacaktır . Bunu nasıl yapacağınızı bilin.

  • Doğrusal olmayan ilişkileri, eğilimlerdeki değişiklikleri, durağanlığı, heteroscedasticiliği , vb . Tespit etmek için yeterli veriye sahip olacaksınız .

  • Asla bitmeyeceksin . Sonsuza dek çalışabilecek çok fazla veri var. Bu nedenle, analitik hedeflerinizi başlangıçta belirlemek ve sürekli akılda tutmak önemlidir.

Daha küçük olana kıyasla büyük veri setli regresyon modellemesi arasında beklenmedik bir fark gösteren kısa bir anekdot ile biteceğim . Census verileriyle birlikte bu projenin sonunda, müşterinin bilgi işlem sisteminde geliştirdiğim bir regresyon modelinin uygulanması gerekiyordu, bu da ilişkisel bir veritabanına SQL kodu yazmaktı. Bu rutin bir adımdır ancak veritabanı programcıları tarafından oluşturulan kod binlerce satır SQL içermektedir. Bu, hatasız olduğunu garanti etmeyi neredeyse imkansız hale getirdi - böcekleri tespit etmemize rağmen (test verilerinde farklı sonuçlar verdi), onları bulmak başka bir konuydu. (İhtiyacınız olan tek şey bir katsayıdaki bir yazım hatası ...) Çözümün bir kısmı, doğrudan SQL modelini doğrudan tahminlerden üreten bir program yazmaktı.. Bu, istatistik paketinden çıkanların tam olarak RDBMS'ye girenlerin olduğunu garanti etti. Bonus olarak, bu senaryoyu yazmak için harcanan birkaç saat, muhtemelen birkaç haftalık SQL kodlaması ve testinin yerine geçti. Bu, istatistikçilerin sonuçlarını iletebilmelerinin ne anlama geldiğinin küçük bir parçasıdır.


3
+1, bu harika cevabı paylaşacağım (ve yakında olması için yazdıracağım ^ _ ^)
Dmitrij Celov

1
+1, bu kesinlikle öğrencilerime uzun yıllar geleceklerini söyleyeceğim şey.
mpiktas

2
fıkra, modeli Eviews'ten R'ye aktarmam gerektiği zamanları hatırlattı. Orijinal model Eviews'te yapıldı, sonuç yaklaşık 20 denklemdi. Sonuçları web sitesinde interaktif arayüz ile sunmak zorunda kaldım. Model devam eden bir çalışma olduğundan, Eviews'in çıktısını R koduna çeviren bir kod yazdım, aynı model hem Eviews'de hem de R'de kullanıldı. analitik gradyanın hesaplanması için.
mpiktas

2
Genelde bir yorumda haklı oylama yapılmazsa (yapmamaya nezaket gösterilmezse) genellikle daha yapıcı olarak kabul edilir, böyle yapmamak için bariz bir neden olmadıkça (örneğin, tek satırlık belirsiz bir cevap, yanlış bir cevabı güncelleme talebine cevap verilmez), saldırgan davranış). Bu, geçerli argümanlar yapıldığında cevabın kalitesini arttırmaya katkıda bulunur. Bu özel durumda, aşağı oy için bir sebep göremiyorum!
chl

2
Otomasyon için +1 hatası azaltır: " SQL komutlarını doğrudan model tahminlerinden üreten bir program yazın ".
Orion

18

Sorunuz bazı iyi cevaplar vermelidir. İşte bazı başlangıç ​​noktaları.

  1. Hassasiyet ile bilgisayar gücüne verilen talepler arasındaki değişimlerle çalışma yeteneği.

  2. Regresyon yapılmadan önce ön eleme araçları olarak kullanılabilecek veri madenciliği teknikleri ile tesis. Örneğin, chaid, cart veya sinir ağları.

  3. İstatistiksel anlamlılık ile pratik anlamlılık arasındaki ilişkinin derinlemesine anlaşılması. Değişken seçim için geniş bir metod repertuarı.

  4. Çapraz değerlendirme içgüdüsü.


Aynı zamanda # 4 ve # 1'i de birleştiririm: bilgisayar kaynaklarınızı ezmeden, geçerliliği nasıl geçeceğinizi bilmek önemlidir.
Zach

1
2. noktanı açıklar mısın? CHAID / CART / sinir ağlarını regresyon için tarama aracı olarak nasıl kullanırsınız?
raegtin

2
@raegtin - Genelde etkileşimin temel etkileri olan ve "etkileşimler" olarak adlandırılan "etkileşimler" denilen CHAID'e aşinayım çünkü prosedürün “girmelerine izin vermenin tek yolu bu”. (CHAID'de, bunun gibi tanımlanmış sadece 1 ana etki olabilir, bu nedenle diğer tüm ana etkiler "etkileşim" hücrelerine sıkışır.) Ancak, CHAID birçok etkileşimi kontrol edebilme avantajına sahiptir. Dolayısıyla, birkaç ümit verici olanlar tanımlandıktan sonra, tüm düşük dereceli bileşenleriyle birlikte bir regresyona veya anovaya dahil edilebilirler ve biri hangilerinin gerçekten yararlı olduğunu test edebilir.
rolando2

1
+1 Potansiyel etkileri araştırmak için veri madenciliğinin (özellikle CHAID) kullanılması ihtimalinden etkilendim. Sunumlu
q/10363/

12

İyi programlama becerileri bir zorunluluktur. Boğulmadan büyük miktarlarda veriyle başa çıkabilen verimli bir kod yazabilmeniz ve makul bir süre içinde çalışmasını sağlamak için söz konusu kodu paralelleştirebilmeniz gerekir.


4
Kodlama bir zorunluluktur, ancak aynı zamanda OS ile nasıl çalışılacağını bilmek de ona karşı değil. Diskleri ve ağlara erişmek ek maliyetler taşıdığından, bazen işi bölmenin bununla ilişkili ek maliyetleri olduğunu anlamalısınız. İşlemler arası iletişimi engellemenin, beklemenin ve yapmanın farklı yollarını anlamalısınız. Bazı sistem çağrılarının bitmesini bekleyerek zamanının çoğunu harcayacak harika bir bilimsel kod gördüm. ); Sisteminizin sistem yöneticisinin dost, onlara kahve getirerek sizindir sistemlerinin optimizasyonu ile pek çok yardım alabilirsiniz
Marcin

2
Bazen, muhtemelen sorulacak olan ilave soruları tahmin eden veri yapıları oluşturmaya yardımcı olacaksa "Verimsiz kod" yazmak daha iyidir.
Ralph Winters,

1
@Ralph: +1, bu zor yoldan kendim olarak kesinlikle katılıyorum ve öğrendim. Ne yapacağınız ne olursa olsun, her zaman etkili kod yazmanız gerektiğini söylemek istemedim, sadece nasıl yapılacağını bilmek zorundasınız.
dsimcha

5

Ayrıca, büyük ölçekli verilerin potansiyel "Kötü veri" sorununu da getirdiğini de ekleyeceğim. Yalnızca veri kaybı değil, aynı zamanda verilere dokunan her sistemin parçası tarafından sunulan veri hataları ve tutarsız tanımlar. Bu yüzden, istatistiksel becerilere ek olarak, başkası sizin için yapmıyorsa, uzman bir veri temizleyici olmanız gerekir.

-Ralph Winters


3
Bunlar iyi noktalar. Aykırı değerler ve diğer veri sorunları , ne kadar büyük veya küçük olursa olsun, herhangi bir veri setine zarar verir . Tecrübelerime göre, büyük veri setlerinde tanımlanması ve ele alınması daha kolaydır, çünkü onları veri yığınlarından ayırma gücüne sahipsiniz ve özellikle sağlam yöntemler kullanıyorsanız, sonuçları etkileme olasılıkları daha düşüktür. BTW, her analizde daima "veri temizliği" yapıyorsunuz. Bu, ayrıştırılabilecek ve bir kez ve herkes için ele alınacak bir uzmana yönlendirilebilecek bir şey değildir. Bir aykırı, yalnızca belirli bir model bağlamında bir aykırıdır.
whuber

2
El ile düzenleme işleminin zorluklarından kaçınmanıza yardımcı olan yarı otomatik bir veri temizleyici olarak google rafine edin .
mindless.panda

5
  1. Problemi Harita azaltma çerçevesinde çerçevelemek.
  2. Mühendislik sorunu, örneğin., Bu zarar genelleme ama depolama ve hesaplama maliyetleri de de dayanacağını alt parametreler için hassas veya model seçimi kullanmak yapar ne kadar yan.

Bahsettiğiniz Harita azaltma çerçevesi için alakalı bir bağlantı verebilir misiniz?
mindless.panda

@ sugar.panda, wiki bağlantısı eklendi!
Bant Genişliği

Enginner bir ayrıcalık olmaktan uzak olmasına rağmen, düşük hassasiyetten bahsettiği için +1. Hassasiyet ne kadar düşük olursa, kötü kararlar almamız o kadar olasıdır. Bu, Tip I / II hatasına yakından bağlıdır ve birçok disiplini kapsar ancak çoğunlukla istatistik, karar bilimi ve ekonomi ile ilgilidir. Yararlı fonksiyonlar, uygun bir metodoloji tanımlamak için zamanın öncesinde ve düşünce sürecinin bir parçası olarak düşünülmelidir.
Thomas Speidel
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.