Набори даних, що розуміють кращі практики


13

Я студент-магістр CS з вибору даних. Мій керівник одного разу сказав мені, що перед тим, як запустити будь-який класифікатор або зробити що-небудь із набором даних, я повинен повністю зрозуміти дані та переконатися, що дані чисті та правильні.

Мої запитання:

  • Які найкращі практики для розуміння набору даних (великі розміри з числовими та номінальними атрибутами)?

  • Практики, щоб забезпечити чистий набір даних?

  • Практики, щоб переконатися, що в наборі даних немає неправильних значень чи так?

Відповіді:


8

Є основні речі, які ви можете зробити з будь-яким набором даних:

  1. Валідація значень (Допуск довжини рядка, тип даних, маски форматування, необхідна наявність поля тощо)
  2. Правильність діапазону (чи відповідають ці, здавалося б, правильні дані, у межах очікуваного діапазону значень)
  3. Попередня обробка (якщо я спробую проаналізувати ці дані, чи можу я виконувати основи, не стикаючись з помилками)
  4. Попередня звітність (запустіть звіт проти набору даних та переконайтеся, що він проходить перевірку на безпечність)
  5. Визначення нуля проти порожнього та нуля проти Неправильного для будь-якого стовпця даних
  6. Ідентифікація даних, які не мають місця (числові значення різко відрізняються від інших значень у наборі даних, рядкові значення, схожі на те, що вони можуть бути неправильно написані тощо)
  7. Усунення або виправлення явно помилкових даних

Розуміння даних для виявлення помилок - це зовсім інша гра з м'ячем, і це дуже важливо.

Наприклад, ви можете мати правило, яке говорить про те, що серійний номер повинен бути присутнім у заданому наборі даних, і що серійний номер повинен бути буквено-цифровим з максимальною довжиною рядка 255 та мінімальною довжиною рядка 5.

Переглядаючи дані, ви можете виявити одне конкретне значення серійного номера, яке читається "PLEASE ENTER SERIAL" Це абсолютно дійсне, але неправильне.

Це щось очевидне, але, скажімо, ви обробляєте дані про запаси, і у вас був діапазон цін на 1000 акцій, який був нижчим за долар. Дуже багато людей не знають, що настільки низька ціна акцій є недійсною на деяких біржах і цілком діє на інших. Вам потрібні знання про ваші дані, щоб зрозуміти, чи є те, що ви бачите, проблематичним чи ні.

У реальному світі не завжди є розкіш глибокого розуміння своїх даних.

Те, як я уникаю проблем, - використовуючи людей навколо мене. Що стосується невеликих наборів даних, я можу попросити когось переглянути ці дані повністю. Для великих - більш доцільним є витяг набору випадкових вибірок і прохання когось зробити перевірку достовірності даних.

Крім того, важливо ставити під сумнів джерело даних та наскільки добре цьому джерелу даних можна довіряти. У мене часто є декілька суперечливих джерел даних і ми створюємо правила для визначення "джерела істини". Іноді один набір даних має чудові дані в даному аспекті, але інші набори даних є більш сильними в інших областях.

Дані, введені вручну, - це зазвичай те, до чого я найбільше скептично ставлюсь, але в деяких випадках він є сильнішим за все, що можна отримати за допомогою автоматизації.


5

Мені подобається @Kallestad відповідь дуже, але я хотів би додати мета-крок: Переконайтеся, що ви розумієте, як дані, де збираються, та які типи обмежень існують. Я думаю, що дуже часто можна думати, що там, де немає очевидних кроків, коли дані, де збираються, але це не так: Більшість часу, якийсь процес або індивідал колись замислювався з даними, і ці кроки можуть і будуть впливають на форму даних.

Два приклади: нещодавно у мене було дослідження, де дані збираються різними контракторами по всьому світу. Я не був на брифінгу, тому це було для мене непрозорим. На жаль, вимірювання десь у деяких частинах Франції: Людям всі подобалися крижані крижані, але ми очікували випадкового розподілу. Очевидних причин такої рівномірності не було, тому я почав полювати на помилки. Коли я запитував підрядників, хтось неправильно зрозумів інструктаж і вибрав лише любителів морозива зі своєї бази даних.

Друга помилка була більш складною: роблячи якийсь географічний аналіз, я виявив, що у багатьох людей є надзвичайно великі схеми руху, що дозволяє припустити, що багато з них їхали з Мюнхена до Гамбурга за лічені хвилини. Коли я розмовляв з ppeople вгору за течією, вони знайшли тонкий помилку в їх програмному забезпеченні для збору даних, що раніше було непоміченим.

Висновки:

  • Не припускайте, що ваші дані були зібрані ідеальними процесами / людьми.
  • Спробуйте зрозуміти межі своїх постачальників даних.
  • Подивіться на окремі шаблони / значення та спробуйте визначити, чи вони логічні (прості в русі / географічні дані)

4

Зазвичай я використовую двоступеневий підхід

  1. обчислити уніваріатну (змінну за змінною) підсумкову статистику, таку як середнє значення, діапазон, дисперсія, кількість відсутніх, кардинальність тощо для кожної змінної та шукайте дивацтва (наприклад, діапазон не правдоподібний з огляду на значення змінної). Накресліть гістограми для цих непарних змінних.

  2. розділіть дані на керовані підмножини (виберіть змістовну змінну та розділіть дані відповідно до неї, наприклад, всі позитивні приклади та всі негативні) та візуально вивчіть їх (наприклад, за допомогою ggobi ). Особливо використовуйте такі інструменти, як чистка та розкидання сюжетів, щоб зрозуміти, як змінні пов'язані між собою.

І коли ви починаєте створювати моделі, переконайтеся, що побудуйте залишки, шукаючи екстремальні помилки, які можуть бути викликані стороннім виглядом, або подивіться на матрицю плутанини та переконайтесь, що вона врівноважена. Використовуйте перехресну перевірку k-fold, щоб оптимізувати ваші моделі та подивитися на відмінність помилки тренувань для кожного згину, якщо одна складка виконує набагато гірше, ніж інші, вона може містити видатки.


4

Нижче ви можете знайти копію моєї відповіді на пов’язане (однак, зосереджене на аспекті очищення даних) тут на Data Science StackExchange ( /datascience//a/722/2452 ), надане в повному обсязі для зручність читачів. Я вважаю, що він частково відповідає і на ваше запитання, і сподіваюся, що це корисно. Хоча відповідь зосереджена на Rекосистемі, подібні пакети та / або бібліотеки можна знайти для інших середовищ аналізу даних . Більше того, хоча ці два цитовані статті про підготовку даних містять також приклади на R, вони представляють загальний робочий процес (рамки) та найкращі практики , застосовні до будь-якого середовище аналізу даних.

R містить деякі стандартні функції для обробки даних, які можна використовувати для очищення даних, у своєму базовому пакеті ( gsub, transformтощо), а також у різних сторонніх пакетах, таких як stringr , reshape , reshape2 та plyr . Приклади та кращі практики використання цих пакунків та їх функцій описані в наступній статті: http://vita.had.co.nz/papers/tidy-data.pdf .

Крім того, R пропонує деякі пакети, спеціально орієнтовані на очищення та трансформацію даних:

Комплексний та узгоджений підхід до очищення даних у R, включаючи приклади та використання пакетів редагувань та дедукцій , а також опис робочого процесу ( рамки ) очищення даних в R, представлений у наступному документі, який я настійно рекомендую: http : //cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf .


3

Люди тут заявляли про великі кроки, але я думаю, що на наступному посиланні є чудова інформація про те, що я роблю, коли отримую новий набір даних, про який розповідають у твітах. Це підсумовує кроки, про які твіт написав, відповідаючи на чудове @hmason питання "Дані люди: Що найперше, що ти робиш, коли отримуєш новий набір даних? "

Сподіваюся, це стане в нагоді.


1

Я додам одне - якщо можливо, зробіть перевірку розумності, порівнявши ваші дані з якимсь іншим джерелом. Здається, що коли я цього не роблю, я згораю :(

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.