Bagaimana cara menjaga analisis eksplorasi dataset besar?

22

Ketika saya memulai analisis eksplorasi pada set data besar (banyak sampel, banyak variabel), saya sering menemukan diri saya dengan ratusan variabel turunan, dan ton plot yang berbeda, dan tidak ada cara nyata untuk melacak apa yang terjadi di mana. Kode berakhir seperti spaghetti, karena tidak ada arah sejak awal ...

Apakah ada metode yang direkomendasikan untuk menjaga analisis eksplorasi tetap rapi dan rapi? Secara khusus, bagaimana Anda menangani banyak cabang eksplorasi (termasuk yang buntu), dan dengan versi plot yang berbeda?


Sebagai referensi, saya sedang mengerjakan data geoscientific (banyak variabel dari waktu ke waktu, kadang-kadang juga di luar angkasa). Saya biasanya bekerja dengan Python atau R, dan menyimpan semuanya di git, dan telah mencoba Notebook IPython juga. Namun, akan lebih baik jika jawabannya agak umum dan bermanfaat bagi orang-orang di semua bidang, dengan tipe data (besar?) Lainnya.

berguna101
sumber
1
Saya akan membayangkan banyak saran yang Anda dapatkan akan sama berlaku untuk studi simulasi yang dirancang untuk mengevaluasi metode estimasi atau prediksi yang bersaing.
probabilityislogic
1
Ya, jawaban ini mungkin perlu dibaca juga: stats.stackexchange.com/questions/2910/… . Saya sedang berpikir bahwa mungkin ada saran yang lebih spesifik, tetapi saya kira mungkin tidak ada saran.
naught101

Jawaban:

10

Saya berpikir bahwa sering, kecenderungan untuk merasa seperti Anda telah jatuh ke lubang kelinci dengan analisis eksplorasi adalah karena kehilangan pandangan terhadap pertanyaan substantif yang Anda tanyakan. Saya melakukannya sendiri, kadang-kadang, dan kemudian harus mengingatkan diri saya apa tujuan saya. Misalnya, apakah saya mencoba membangun model tertentu, atau mengevaluasi kecukupan model yang sudah ada? Apakah saya mencari bukti masalah dengan data (yaitu, analisis data forensik)? Atau, apakah ini dalam tahap awal analisis, di mana saya sedang menyelidiki pertanyaan spesifik secara informal (misalnya, apakah ada hubungan antara dua variabel?) Sebelum pindah untuk mengembangkan model formal? Singkatnya, jika Anda menemukan diri Anda membuat plot dan tabel tetapi tidak dapat menyatakan dengan jelas apa tujuan langsung Anda atau mengapa plot / tabel itu relevan, maka Anda tahu Anda

Saya mencoba mendekati analisis data eksplorasi seperti yang saya lakukan menulis, apakah itu menulis program atau menulis artikel. Dalam kedua kasus itu, saya tidak akan memulai tanpa membuat garis besar terlebih dahulu. Garis besar itu dapat berubah (dan sering kali memang demikian), tetapi untuk mulai menulis tanpa itu tidak efisien, dan sering menghasilkan produk akhir yang buruk.

Organisasi WRT, setiap analis harus menemukan alur kerja yang sesuai baginya — melakukannya adalah IMO lebih penting daripada mencoba mengikuti alur kerja orang lain secara kaku (meskipun selalu membantu untuk mendapatkan ide dari apa yang dilakukan orang lain). Jika Anda bekerja secara terprogram (yaitu, menulis kode yang dapat dijalankan untuk menghasilkan / membuat ulang serangkaian hasil) dan memeriksa pekerjaan Anda menjadi git, maka Anda sudah berada jauh di depan banyak orang dalam hal ini. Saya menduga bahwa Anda mungkin hanya perlu menghabiskan waktu mengatur kode Anda, dan untuk itu, saya sarankan mengikuti garis besar Anda. Misalnya, simpan file analisis Anda relatif singkat dan bertarget, sehingga masing-masing menjawab satu pertanyaan spesifik (misalnya, plot diagnostik untuk model regresi tertentu). Atur ini menjadi subdirektori pada satu atau dua level, tergantung pada ukuran dan kompleksitas proyek. Dengan cara ini, proyek menjadi mendokumentasikan diri; tampilan daftar direktori, subdirektori dan file (bersama dengan komentar di bagian atas setiap file), secara teori, harus mereproduksi outline Anda.

Tentu saja, dalam proyek besar, Anda mungkin juga memiliki kode yang melakukan pembersihan dan pengelolaan data, kode yang Anda tulis untuk memperkirakan jenis model tertentu, atau utilitas lain yang Anda tulis, dan ini tidak akan cocok dengan substantif garis besar untuk analisis data Anda, sehingga mereka harus diatur dalam bagian yang berbeda dari folder proyek Anda.

Pembaruan: Setelah memposting ini, saya menyadari bahwa saya tidak secara langsung menjawab pertanyaan Anda tentang "jalan buntu." Jika Anda benar-benar memutuskan bahwa seluruh rangkaian analisis tidak bernilai, maka jika Anda bekerja di git, Anda selalu dapat menghapus file yang sesuai dengan pesan komit seperti "Abaikan garis analisis ini karena tidak produktif." Tidak seperti meremas-remas apa yang telah Anda tulis dan membuangnya di tempat sampah, Anda selalu dapat kembali ke apa yang Anda lakukan nanti, jika diinginkan.

Namun, saya pikir Anda akan menemukan bahwa jika Anda melanjutkan dari garis besar yang telah Anda pikirkan, Anda akan memiliki lebih sedikit yang disebut jalan buntu. Alih-alih, jika Anda menghabiskan waktu menyelidiki pertanyaan yang berharga dan relevan — bahkan jika ini mengarah pada temuan nol atau tidak berubah seperti yang Anda antisipasi — Anda mungkin masih ingin menyimpan catatan tentang apa yang telah Anda lakukan dan hasilnya (pada minimum, sehingga Anda tidak membuat kesalahan dengan mengulanginya nanti). Pindahkan ini ke bagian bawah garis besar Anda, dalam semacam "Lampiran."

Phil Schumm
sumber
4

Saya tidak tahu seberapa membantu jawaban umum itu. Anda bertanya bagaimana melakukan sesuatu yang sulit; jawaban yang baik mungkin akan tergantung pada disiplin dan mungkin akan panjang dan bernuansa. :)

Sejauh organisasi berjalan, Anda sudah menggunakan git, jadi selanjutnya Anda harus mulai menggunakan makefile untuk menjalankan analisis. Makefile menjabarkan bagaimana file yang berbeda bergantung satu sama lain (yaitu, statistik mana yang berasal dari kode mana) dan ketika Anda menelepon make, semua yang perlu diperbarui akan.

Sekarang, itu tidak membantu dengan bagian eksplorasi. Untuk EDA saya menggunakan (kebanyakan) R dalam emacs melalui ESS. Anda perlu membutuhkan REPL untuk EDA. Alur kerja saya adalah bermain dengan plot, taksiran, dll di ESS (dalam exploratory.Rfile tipe), putuskan apa yang ingin saya simpan, kemudian rekode ulang sehingga bisa dijalankan secara batch dengan make. Re: git, saya tidak tahu bagaimana Anda menggunakannya, tapi saya menggunakan repositori tunggal untuk setiap proyek (biasanya satu kertas) dan rebase sih dari basis kode saya untuk menjaga sejarah bersih; yaitu saya gunakan

$ git merge meandering-branch --squash
$ git add -p somefile
$ git rebase -i master
$ git reset HEAD --hard

jauh lebih daripada ketika saya mulai dengan git, dan jauh lebih dari saya akan merekomendasikan seorang pemula. Jika Anda tidak terbiasa dengan semua perintah dan opsi itu, Anda mungkin ingin mempelajari lebih lanjut git. Hal terbesar yang membantu saya adalah berdisiplin membuat komitmen yang berbeda secara logis; yaitu setiap komit harus berisi semua perubahan yang mungkin ingin Anda batalkan sekaligus di masa mendatang (dan tidak lebih atau kurang).

Sejauh sebenarnya mengeksplorasi data, saya menemukan buku-buku ini bermanfaat dan menarik, dan mereka berurusan secara khusus dengan kumpulan data besar (setidaknya sebagian):

  • Grafik Kumpulan Data Besar , diedit oleh Unwin, Theus, dan Hofmann. via springerlink jika Anda memiliki akses, jika tidak, masing-masing bab mungkin tersedia dengan googling.

  • Buku pegangan visualisasi data , diedit oleh Chen, Härdle, dan Unwin. juga melalui springerlink

  • Analisis Data oleh Huber (2011) ..

Abu-abu
sumber
3

Dua kata: peta konsep. Itulah satu-satunya cara efektif yang saya temukan untuk membagi dan menaklukkan kumpulan data besar atau konsep apa pun yang benar-benar berbelit-belit. http://en.wikipedia.org/wiki/Concept_maps

Secara pribadi, saya berpikir lebih baik di atas kertas daripada di layar, jadi saya hanya keberatan memetakan apa yang saya hadapi sebelum saya bahkan mulai melakukan analisis dasar. Untuk diagram yang lebih profesional, ada banyak perangkat lunak pemetaan pikiran http://en.wikipedia.org/wiki/List_of_concept-_and_mind-mapping_software

Mind mapping memiliki beberapa keunggulan:

  • memberi tahu saya apa yang saya miliki dalam hal variabel "inti" dan variabel turunan (jika ada)
  • memungkinkan untuk organisasi / perumusan model berdasarkan teori / logika
  • menunjuk ke variabel apa yang mungkin saya lewatkan dan / atau dapat tambahkan jika hubungan antara variabel inti tidak berjalan seperti yang saya pikir seharusnya

Edit :

Sebagai contoh, berikut adalah peta konsep untuk analisis faktor: http://www.metacademy.org/graphs/concepts/factor_analysis#focus=factor_analysis&mode=explore Sekarang ini murni untuk mempelajari konsep, tidak melakukan analisis, tetapi gagasan adalah sama: untuk memetakan sebelumnya apa yang masuk akal untuk dilakukan, dan kemudian melakukannya.

Jika Anda mencari versi otomatis / berkode ini, saya rasa tidak ada. Anda tidak dapat mengotomatiskan konsep pemodelan ketika Anda mencoba memahami suatu sistem. (Dan itu hal yang baik karena akan membuat banyak orang keluar dari pekerjaan.)

rocinante
sumber
Hrm ... Ini bisa dilakukan dengan contoh yang lebih rinci. Saya mengalami kesulitan melihat bagaimana ini akan membantu menangani kompleksitas yang saya bicarakan. Secara khusus, ini tidak membantu menangani apa yang harus dilakukan dengan analisis (data yang diperoleh, plot, dll.) Dari jalur investigasi yang mengarah pada jalan buntu.
nucky101
Peta konsep dirancang untuk hanya menyelidiki jalur yang harus mengarah ke suatu tempat berdasarkan teori spesifik subjek. Jika ternyata investigasi tertentu tidak pergi ke mana pun, Anda membuat catatan pada peta konsep karena itu adalah panduan / daftar tugas Anda. Dari sana, Anda langsung melihat variabel turunan apa yang terpengaruh dan investigasi lain yang Anda bisa mencoba.
rocinante
3

Anda sudah menggunakan git: mengapa tidak menggunakan kontrol versi untuk mengatur eksplorasi Anda? Buat cabang baru untuk setiap "cabang" baru dari eksplorasi Anda, dan potong cabang untuk versi plot yang berbeda juga. Metode ini akan membuatnya sedikit lebih sulit untuk menggabungkan hasil akhir Anda, tetapi Anda selalu bisa mempertahankan direktori yang tidak terlacak di mana Anda bisa memasukkan "permata" dari analisis Anda. Anda mungkin ingin entah bagaimana memberi label pada file Anda di direktori ini untuk menunjukkan dari mana garpu / komit itu berasal. Metode ini memiliki manfaat tambahan sehingga sangat mudah untuk membedakan analisis yang berbeda melalui diffperintah.

David Marx
sumber
1

Saya akan melihat alat Business Intelligence ... di mana masalah serupa muncul. Secara khusus (gudang data, analisis dimensi,) hierarki dan menelusuri.

Ide dasarnya adalah bahwa Anda mencoba untuk merepresentasikan data dasar Anda sebagai jumlah yang dapat diagregasi (jumlah, pendapatan, dll, bukan misalnya persentase). Kemudian Anda merancang hierarki untuk digabungkan dengan detail (mis. Bulan / minggu / ...). Ini memungkinkan Anda memiliki ikhtisar sederhana semua data Anda dan kemudian memperbesar area tertentu. lihat misalnya http://cubes.databrewery.org/ (python) atau excel power pivot

seanv507
sumber