Bộ dữ liệu hiểu thực tiễn tốt nhất


13

Tôi là một sinh viên thạc sĩ CS trong khai thác dữ liệu. Người giám sát của tôi đã từng nói với tôi rằng trước khi tôi chạy bất kỳ trình phân loại nào hoặc làm bất cứ điều gì với bộ dữ liệu, tôi phải hiểu đầy đủ dữ liệu và đảm bảo rằng dữ liệu sạch và chính xác.

Những câu hỏi của tôi:

  • Các thực tiễn tốt nhất để hiểu một tập dữ liệu (chiều cao với các thuộc tính số và danh nghĩa) là gì?

  • Thực hành để đảm bảo dữ liệu sạch?

  • Thực tiễn để đảm bảo tập dữ liệu không có giá trị sai hay sao?

Câu trả lời:


8

Có những điều cơ bản bạn có thể làm với bất kỳ bộ dữ liệu nào:

  1. Xác thực các giá trị (Dung sai độ dài chuỗi, kiểu dữ liệu, mặt nạ định dạng, hiện diện trường bắt buộc, v.v.)
  2. Phạm vi chính xác (Dữ liệu có vẻ đúng này nằm trong phạm vi giá trị dự kiến)
  3. Xử lý sơ bộ (Nếu tôi cố gắng phân tích dữ liệu này, tôi có thể thực hiện các thao tác cơ bản mà không gặp phải lỗi không)
  4. Báo cáo sơ bộ (chạy báo cáo dựa trên tập dữ liệu và đảm bảo rằng nó vượt qua bài kiểm tra độ tỉnh táo)
  5. Xác định null so với rỗng so với zero so với Sai cho bất kỳ cột dữ liệu đã cho nào
  6. Xác định dữ liệu không đúng vị trí (giá trị số khác biệt đáng kể so với các giá trị khác trong tập dữ liệu, giá trị chuỗi trông giống như chúng có thể bị sai chính tả, v.v.)
  7. Loại bỏ hoặc sửa chữa dữ liệu rõ ràng sai lầm

Hiểu dữ liệu để xác định lỗi là một trò chơi bóng hoàn toàn khác, và nó rất quan trọng.

Chẳng hạn, bạn có thể có một quy tắc nói rằng số sê-ri phải có trong một tập dữ liệu nhất định và số sê-ri đó phải là chữ và số có độ dài chuỗi tối đa là 255 và độ dài chuỗi tối thiểu là 5.

Nhìn vào dữ liệu, bạn có thể thấy một giá trị số sê-ri cụ thể đọc "PLEASE ENTER SERIAL" Nó hoàn toàn hợp lệ, nhưng sai.

Đó là một điều hiển nhiên, nhưng giả sử bạn đang xử lý dữ liệu chứng khoán và bạn có phạm vi giá cho 1000 cổ phiếu dưới một đô la. Rất nhiều người sẽ không biết rằng giá cổ phiếu quá thấp là không hợp lệ trên một số sàn giao dịch nhất định và hoàn toàn hợp lệ đối với những người khác. Bạn cần có kiến ​​thức về dữ liệu của mình để hiểu liệu những gì bạn đang thấy có vấn đề hay không.

Trong thế giới thực, bạn không phải lúc nào cũng có thể hiểu được dữ liệu của mình một cách thân mật.

Cách tôi tránh các vấn đề là bằng cách tận dụng những người xung quanh tôi. Đối với các tập dữ liệu nhỏ, tôi có thể yêu cầu ai đó xem xét toàn bộ dữ liệu. Đối với những mẫu lớn, việc kéo một tập hợp các mẫu ngẫu nhiên và yêu cầu ai đó thực hiện kiểm tra độ tỉnh táo trên dữ liệu là phù hợp hơn.

Hơn nữa, việc đặt câu hỏi về nguồn dữ liệu và mức độ tin cậy của nguồn dữ liệu đó là bắt buộc. Tôi thường có nhiều nguồn dữ liệu mâu thuẫn và chúng tôi tạo ra các quy tắc để xác định "nguồn sự thật". Đôi khi một bộ dữ liệu có dữ liệu lớn trong một khía cạnh nhất định, nhưng các bộ dữ liệu khác mạnh hơn ở các khu vực khác.

Dữ liệu được nhập thủ công thường là điều tôi nghi ngờ nhất, nhưng trong một số trường hợp, dữ liệu đó mạnh hơn bất kỳ thứ gì có thể có được thông qua tự động hóa.


5

Tôi rất thích @Kallestad trả lời, nhưng tôi muốn thêm một bước meta: Đảm bảo rằng bạn hiểu cách dữ liệu được thu thập và loại ràng buộc nào. Tôi nghĩ rằng rất phổ biến khi nghĩ rằng ở đó không có các bước không rõ ràng khi dữ liệu được thu thập, nhưng đây không phải là trường hợp: Hầu hết thời gian, một số quy trình hoặc không chính đáng đã làm với dữ liệu và các bước này có thể và sẽ ảnh hưởng đến hình dạng của dữ liệu.

Hai ví dụ: Tôi đã có một nghiên cứu gần đây, nơi dữ liệu được thu thập bởi nhiều máy kéo khác nhau trên toàn thế giới. Tôi đã không tham gia cuộc họp, vì vậy điều đó không rõ ràng đối với tôi. Thật không may, các phép đo tắt cho một số phần của pháp: Mọi người đều thích nhồi nhét đá, nhưng chúng tôi mong đợi một phân phối ngẫu nhiên. Không có lý do rõ ràng cho sự đồng nhất này, vì vậy tôi bắt đầu săn lùng các lỗi. Khi tôi hỏi các nhà thầu, một người đã hiểu nhầm về cuộc họp và chỉ chọn những người yêu thích kem từ cơ sở dữ liệu của anh ta.

Lỗi thứ hai khó khăn hơn: Khi thực hiện một số phân tích địa lý, tôi thấy rằng rất nhiều người có mô hình chuyển động cực lớn, điều này cho thấy rất nhiều người trong số họ đã đi từ Munich đến Hamburg trong vài phút. Khi tôi nói chuyện với những người ở thượng nguồn, họ đã tìm thấy một lỗi tinh vi trong phần mềm tổng hợp dữ liệu của họ, điều mà trước đây không được chú ý.

Kết luận:

  • Đừng cho rằng dữ liệu của bạn được thu thập bởi các quy trình / con người hoàn hảo.
  • Hãy cố gắng để hiểu các giới hạn của các nhà cung cấp dữ liệu của bạn.
  • Xem xét các mẫu / giá trị riêng lẻ và cố gắng xác định xem chúng có logic hay không (dễ dàng cho dữ liệu di chuyển / địa lý)

4

Tôi thường thực hiện một cách tiếp cận hai bước

  1. tính toán các thống kê tóm tắt univariate (biến theo biến) như trung bình, phạm vi, phương sai, số thiếu, cardinality, v.v. cho mỗi biến và tìm kiếm các số lẻ (ví dụ: phạm vi không hợp lý với ý nghĩa của biến). Vẽ biểu đồ cho các biến lẻ.

  2. chia dữ liệu thành các tập hợp con có thể quản lý (chọn một biến có ý nghĩa và phân chia dữ liệu theo nó, ví dụ như tất cả các ví dụ tích cực và tất cả phủ định) và khám phá chúng một cách trực quan (ví dụ với ggobi ). Đặc biệt là sử dụng các công cụ như đánh răng và phân tán các ô để hiểu cách các biến được liên kết với nhau.

Và khi bạn bắt đầu xây dựng các mô hình, hãy đảm bảo vẽ các phần dư, tìm kiếm các lỗi cực đoan có thể là do ngoại lệ hoặc nhìn vào ma trận nhầm lẫn và đảm bảo rằng nó được cân bằng. Sử dụng xác thực chéo k-Fold để tối ưu hóa các mô hình của bạn và xem xét phương sai của lỗi đào tạo cho mỗi lần gấp, nếu một lần thực hiện kém hơn nhiều so với các lần khác, nó có thể chứa các ngoại lệ.


4

Dưới đây bạn có thể tìm thấy một bản sao câu trả lời của tôi cho một câu hỏi liên quan (tuy nhiên, tập trung vào khía cạnh làm sạch dữ liệu) ở đây trên Data Science StackExchange ( /datascience//a/722/2452 ), được cung cấp toàn bộ cho thuận tiện cho độc giả. Tôi tin rằng nó cũng trả lời một phần câu hỏi của bạn và hy vọng nó hữu ích. Trong khi câu trả lời tập trung vào Rhệ sinh thái, các gói và / hoặc thư viện tương tự có thể được tìm thấy cho các môi trường phân tích dữ liệu khác . Ngoài ra, trong khi hai bài báo được trích dẫn về chuẩn bị dữ liệu cũng chứa các ví dụ trong R, các bài viết này trình bày quy trình làm việc chung (khung) và các thực tiễn tốt nhất có thể áp dụng cho bất kỳ môi trường phân tích dữ liệu.

R có chứa một số tiêu chuẩn chức năng cho thao tác dữ liệu, có thể được sử dụng để làm sạch dữ liệu, trong mình căn cứ gói ( gsub, transform, vv), cũng như trong các gói của bên thứ ba khác nhau, chẳng hạn như stringr , Reshape , reshape2 , và plyr . Các ví dụ và cách sử dụng tốt nhất cho các gói này và các chức năng của chúng được mô tả trong bài viết sau: http://vita.had.co.nz/ con / tidy-data.pdf .

Ngoài ra, R cung cấp một số gói đặc biệt tập trung vào làm sạch và chuyển đổi dữ liệu:

Một cách tiếp cận toàn diện và chặt chẽ để dữ liệu làm sạch trong R, bao gồm các ví dụ và sử dụng editrulesdeducorrect gói, cũng như mô tả về công việc ( framework ) của dữ liệu làm sạch trong R, được trình bày trong các giấy tờ sau đây, mà tôi khuyên bạn nên: http : //cran.r-project.org/doc/contrib/de_Jrid+van_der_Loo-Int sinhtion_to_data_cleaning_with_R.pdf .


3

Mọi người ở đây đã nêu các bước tuyệt vời, nhưng tôi nghĩ rằng có những thông tin tuyệt vời ở liên kết sau đây tôi sẽ làm gì khi tôi nhận được một bộ dữ liệu mới như được nói qua các tweet , Nó tổng hợp các bước mà mọi người đã tweet trả lời câu hỏi tuyệt vời @hmason "Người dữ liệu: Điều đầu tiên bạn làm khi bắt tay vào tập dữ liệu mới là gì? "

Hy vọng nó sẽ hữu ích.


1

Tôi sẽ thêm một điều - nếu có thể, hãy kiểm tra tính hợp lý bằng cách so sánh dữ liệu của bạn với một số nguồn khác. Dường như bất cứ khi nào tôi không làm điều này, tôi bị cháy :(

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.