Kumpulan data memahami praktik terbaik

13

Saya seorang mahasiswa master CS dalam penambangan data. Atasan saya pernah mengatakan kepada saya bahwa sebelum saya menjalankan classifier atau melakukan apa pun dengan dataset saya harus sepenuhnya memahami data dan memastikan bahwa data tersebut bersih dan benar.

Pertanyaan saya:

  • Apa praktik terbaik untuk memahami dataset (dimensi tinggi dengan atribut numerik dan nominal)?

  • Praktik untuk memastikan dataset bersih?

  • Praktik untuk memastikan dataset tidak memiliki nilai yang salah atau lebih?

Jack Twain
sumber

Jawaban:

8

Ada hal-hal dasar yang dapat Anda lakukan dengan set data apa pun:

  1. Validasi nilai (Toleransi panjang string, tipe data, topeng pemformatan, keberadaan bidang yang diperlukan, dll.)
  2. Rentang kebenaran (Apakah data yang tampaknya benar ini berada dalam rentang nilai yang diharapkan)
  3. Pemrosesan awal (Jika saya mencoba menganalisis data ini, dapatkah saya melakukan dasar-dasarnya tanpa mengalami kesalahan)
  4. Pelaporan awal (menjalankan laporan terhadap kumpulan data dan memastikan bahwa ia lulus tes kewarasan)
  5. Mendefinisikan nol vs kosong vs nol vs Salah untuk kolom data yang diberikan
  6. Mengidentifikasi data yang tidak pada tempatnya (nilai numerik berbeda secara dramatis dari nilai lain dalam kumpulan data, nilai string yang terlihat seperti salah eja, dll.)
  7. Menghilangkan atau memperbaiki data yang keliru

Memahami data untuk mengidentifikasi kesalahan adalah permainan bola yang sepenuhnya berbeda, dan ini sangat penting.

Misalnya, Anda dapat memiliki aturan yang mengatakan nomor seri harus ada dalam kumpulan data yang diberikan dan nomor seri harus alfanumerik dengan panjang string maksimum 255 dan panjang string minimum 5.

Melihat data, Anda mungkin menemukan satu nomor seri tertentu dibaca "PLEASE ENTER SERIAL" itu valid, tetapi salah.

Itu agak jelas, tetapi katakan Anda sedang memproses data stok dan Anda memiliki kisaran harga untuk 1000 saham yang di bawah satu dolar. Banyak orang tidak akan tahu bahwa harga saham yang sangat rendah tidak valid di bursa tertentu dan benar-benar berlaku untuk yang lain. Anda perlu pengetahuan tentang data Anda untuk memahami jika apa yang Anda lihat bermasalah atau tidak.

Di dunia nyata, Anda tidak selalu memiliki kemewahan dalam memahami data secara intim.

Cara saya menghindari masalah adalah dengan memanfaatkan orang-orang di sekitar saya. Untuk kumpulan data kecil, saya dapat meminta seseorang untuk meninjau data secara keseluruhan. Untuk yang besar, menarik satu set sampel acak dan meminta seseorang untuk melakukan pemeriksaan kewarasan pada data lebih tepat.

Lebih lanjut, mempertanyakan sumber data dan seberapa baik sumber data itu bisa dipercaya sangat penting. Saya sering memiliki banyak sumber data yang saling bertentangan dan kami membuat aturan untuk menentukan "sumber kebenaran". Terkadang satu set data memiliki data hebat dalam aspek tertentu, tetapi set data lainnya lebih kuat di area lain.

Data yang dimasukkan secara manual biasanya adalah yang paling saya skeptis tentangnya, tetapi dalam beberapa kasus ini lebih kuat daripada apa pun yang dapat diperoleh melalui otomatisasi.

Steve Kallestad
sumber
5

Saya suka @Kallestad menjawab sangat banyak, tetapi saya ingin menambahkan meta-langkah: Pastikan Anda memahami bagaimana data di mana dikumpulkan, dan apa jenis kendala yang ada. Saya pikir itu sangat umum untuk berpikir bahwa di mana tidak ada langkah-langkah yang tidak jelas ketika data di mana dikumpulkan, tetapi ini tidak terjadi: Sebagian besar waktu, beberapa proses atau indivudal melakukan sesuatu dengan data, dan langkah-langkah ini dapat dan akan mempengaruhi bentuk data.

Dua contoh: Baru-baru ini saya melakukan penelitian di mana data dikumpulkan oleh berbagai kontraktor di seluruh dunia. Saya tidak menghadiri briefing, jadi itu tidak jelas bagi saya. Sayangnya, pengukuran untuk beberapa bagian Perancis: Semua orang menyukai es batu, tapi kami mengharapkan distribusi acak. Tidak ada alasan yang jelas untuk keseragaman ini, jadi saya mulai mencari kesalahan. Ketika saya bertanya kepada kontraktor, ada yang salah memahami briefing dan hanya memilih pecinta es krim dari database-nya.

Kesalahan kedua lebih menantang: Ketika melakukan beberapa analisis geografis, saya menemukan bahwa banyak orang memiliki pola pergerakan yang sangat besar, yang menunjukkan bahwa banyak dari mereka melakukan perjalanan dari Munich ke Hamburg dalam hitungan menit. Ketika saya berbicara dengan orang-orang di hulu, mereka menemukan bug halus dalam perangkat lunak agregasi data mereka, yang tanpa disadari sebelumnya.

Kesimpulan:

  • Jangan berasumsi bahwa data Anda dikumpulkan oleh proses / manusia yang sempurna.
  • Cobalah memahami batasan penyedia data Anda.
  • Lihatlah pola / nilai individual dan cobalah untuk menentukan apakah itu logis (mudah untuk data pergerakan / geografis)
Sauer Kristen
sumber
4

Saya biasanya mengambil pendekatan dua langkah

  1. hitung statistik ringkasan univariat (variabel per variabel) seperti rata-rata, kisaran, varians, jumlah yang hilang, kardinalitas, dll. untuk setiap variabel dan cari keanehan (mis. rentang tidak masuk akal mengingat makna variabel). Plot histogram untuk variabel-variabel aneh itu.

  2. pisahkan data menjadi himpunan bagian yang dapat dikelola (pilih variabel yang bermakna dan pisahkan data menurutnya, misalnya semua contoh positif, dan semua negatif) dan jelajahi secara visual (mis. dengan ggobi ). Terutama menggunakan alat-alat seperti menyikat dan menyebarkan plot untuk memahami bagaimana variabel dihubungkan bersama.

Dan ketika Anda mulai membangun model, pastikan untuk memplot residunya, mencari kesalahan ekstrem yang mungkin disebabkan oleh pencilan, atau melihat matriks kebingungan dan memastikannya seimbang. Gunakan validasi silang k-fold untuk mengoptimalkan model Anda dan lihat varians kesalahan pelatihan untuk setiap lipatan, jika satu lipatan berperforma jauh lebih buruk daripada yang lain, mungkin berisi outlier.

damienfrancois
sumber
4

Di bawah ini Anda dapat menemukan salinan jawaban saya untuk pertanyaan terkait (namun, berfokus pada aspek pembersihan data) di sini di Data Science StackExchange ( /datascience//a/722/2452 ), disediakan secara keseluruhan untuk kenyamanan pembaca. Saya percaya itu sebagian menjawab pertanyaan Anda juga dan berharap itu membantu. Sementara jawabannya difokuskan pada Rekosistem, paket dan / atau perpustakaan serupa dapat ditemukan untuk lingkungan analisis data lainnya . Selain itu, sementara dua makalah yang dikutip pada persiapan data juga berisi contoh dalam R, makalah ini menyajikan alur kerja umum (kerangka kerja) dan praktik yang berlaku untuk setiap analisis lingkungan data praktik terbaik .

R berisi beberapa standar fungsi untuk manipulasi data, yang dapat digunakan untuk membersihkan data, dalam nya dasar paket ( gsub, transform, dll), serta di berbagai paket pihak ketiga, seperti stringr , membentuk kembali , reshape2 , dan plyr . Contoh dan praktik terbaik penggunaan untuk paket ini dan fungsinya dijelaskan dalam makalah berikut: http://vita.had.co.nz/papers/tidy-data.pdf .

Selain itu, R menawarkan beberapa paket yang secara khusus berfokus pada pembersihan dan transformasi data:

Pendekatan komprehensif dan koheren untuk pembersihan data di R, termasuk contoh dan penggunaan editrules dan paket deducorrect , serta deskripsi alur kerja ( kerangka kerja ) pembersihan data di R, disajikan dalam makalah berikut, yang sangat saya rekomendasikan: http : //cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf .

Aleksandr Blekh
sumber
1

Saya akan menambahkan satu hal - jika mungkin, lakukan pemeriksaan kewajaran dengan membandingkan data Anda dengan beberapa sumber lain. Tampaknya setiap kali saya gagal melakukan ini, saya terbakar :(

JenSCDC
sumber