Які навички потрібні для проведення масштабних статистичних аналізів?


107

Багато статистичних робочих місць вимагають досвіду з великими масштабами даних. Назвіть види статистичних та обчислювальних навичок, які знадобляться для роботи з великими наборами даних. Наприклад, як щодо побудови регресійних моделей з набором даних з 10 мільйонів зразків?


1
Деякі хороші покажчики тут .
radek

Було б корисно, якщо ви підсумуєте ті, які ви вважаєте найкращими.
rolando2

Також цікаво пов'язане обговорення тестування гіпотез з великими наборами даних: stats.stackexchange.com/q/2516/919
whuber

Відповіді:


115

Хороші відповіді вже з’явилися. Тому я просто поділюся деякими думками, заснованими на особистому досвіді: адаптуйте відповідні до вашої власної ситуації за потребою.

Для фону та контексту- тож ви можете пояснити будь-які особисті упередження, які могли б повзати в цьому повідомленні - значна частина моєї роботи була спрямована на те, щоб допомогти людям приймати важливі рішення на основі порівняно невеликих наборів даних. Вони невеликі, тому що дані можуть бути дорогими для збирання (наприклад, 10 000 доларів за перший зразок свердловини з підземних вод, або кілька тисяч доларів за аналіз незвичайних хімічних речовин). Я звик отримувати якнайбільше будь-яких наявних даних, досліджувати їх до смерті, а також придумувати нові методи аналізу їх, якщо це необхідно. Однак в останні кілька років я займався роботою над деякими досить великими базами даних, такими як соціально-економічні та інженерні дані, що охоплюють всю США на рівні блоку перепису (8,5 млн записів,

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

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

    • Через це ви будете витрачати більше часу на документування того, що ви робите, та все сценарії (щоб це можна було повторити).

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

    • Деякі набори даних є великими, оскільки вони мають багато змінних (тисячі чи десятки тисяч, всі вони різні). Розраховуйте витратити багато часу на узагальнення та розуміння даних . Кодова книга або словник даних , а також інші форми метаданих , стають істотними.

  • Значна частина вашого часу витрачається просто на переміщення даних і переформатування. Вам потрібні вміння обробляти великі бази даних та вміння підсумовувати та графікувати великі обсяги даних. (Тут Мале множина Туфте виходить на перший план.)

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

  • Практично будь-який статистичний тест, який ви проводите, буде настільки потужним, що майже впевнено визначити «значний» ефект. Вам потрібно набагато більше орієнтуватися на статистичну важливість , наприклад, на розмір ефекту, а не на значущість.

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

  • Буде більш ніж достатньо інформації для виявлення відповідних нелінійних перетворень змінних. Знайте, як це зробити.

  • У вас буде достатньо даних для виявлення нелінійних зв’язків, зміни тенденцій, нестаціонарності, гетеросцедастичності тощо.

  • Ви ніколи не закінчите . Є так багато даних, що ви могли б вивчити їх назавжди. Тому важливо спочатку встановити свої аналітичні цілі та постійно пам’ятати про них.

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


3
+1, я
поділюсь

1
+1, це я обов'язково переказую своїм студентам ще багато років.
mpiktas

2
анекдот нагадав мені час, коли мені довелося перенести модель з Eviews до R. Оригінальна модель була зроблена в Eviews, результат склав близько 20 рівнянь. Мені довелося представити результати на веб-сторінці з інтерактивним інтерфейсом. Оскільки модель працювала, я написав код, що переводить вихід Eviews в код R з тією ж метою, що точна модель була використана і в Eviews, і в R. R, працювала дуже добре, я навіть закінчила використання диференціації перекладеного коду для розрахунку аналітичного градієнта.
mpiktas

2
Як правило, це вважається більш конструктивним (якщо не простою люб'язністю), коли голосові коментарі виправдовуються в коментарі, якщо тільки немає очевидних причин цього не робити (наприклад, однорядний розпливчастий відповідь, жодної відповіді на запит на оновлення невірної відповіді, образлива поведінка). Це сприяє підвищенню якості відповіді при виправданих аргументах. У цьому конкретному випадку я не бачу причин для протистояння!
chl

2
+1 для автоматизації зменшує помилку: " написати програму, яка генерувала команди SQL безпосередньо з оцінок моделі ".
Оріон

18

На ваше запитання слід отримати хороші відповіді. Ось кілька вихідних моментів.

  1. Здатність працювати з компромісами між точністю та вимогами, що пред'являються до обчислювальної потужності.

  2. Механізм із методами пошуку даних, які можуть бути використані як попередні інструменти скринінгу перед проведенням регресії. Наприклад, ланцюжок, візок або нейронні мережі.

  3. Глибоке розуміння зв'язку між статистичною значимістю та практичною значимістю. Широкий репертуар методів варіативного вибору.

  4. Інстинкт перекреслити.


Я також поєднав би №4 та №1: важливо знати, як перекреслити перевірку, не перевантажуючи ваші обчислювальні ресурси.
Зак

1
Чи можете ви пояснити свою другу точку? Як би ви використовували CHAID / CART / нейронні мережі як інструменти скринінгу для регресії?
raegtin

2
@raegtin - Я найбільше знайомий із CHAID, який придумує так звані "взаємодії", які часто є основними ефектами, що маскуються як взаємодія, тому що це єдиний спосіб, щоб процедура "впустила їх". (У CHAID може бути лише 1 основний ефект, ідентифікований як такий, тому всі інші основні ефекти стискаються у клітинах "взаємодії".) Але CHAID має перевагу в тому, що він може перевірити багато багатьох взаємодій. Отож, після виявлення кількох перспективних з них, вони можуть бути включені до регресії або anova з усіма їх компонентами нижчого порядку, і можна перевірити, які з них справді корисні.
rolando2

1
+1 Мене заінтригує можливість використання майнінгу даних (особливо CHAID) для дослідження потенційних ефектів. Було б цікаво побачити додаток, наприклад, зі штучним (і малим) набором даних на stats.stackexchange.com/q/10363/919
whuber

12

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


4
Кодування є обов'язковим, але також важливо знати, як працювати з ОС, а не проти цього. Ви повинні розуміти, що іноді розбиття твору пов'язане з цим додатковими витратами, оскільки доступ до дисків та мереж несе додаткові витрати. Ви повинні розуміти різні способи блокування та очікування та міжпроцесорного спілкування. Я бачив чудовий науковий код, який би витратив більшу частину часу на очікування завершення деяких системних дзвінків. Подружившись із систематичним власником вашої системи, ви можете отримати велику допомогу в оптимізації ваших систем, пропонуючи їм каву;)
Marcin

2
Іноді краще написати "Неефективний код", якщо це допоможе у створенні структур даних, які передбачають додаткові запитання в дорозі, які, ймовірно, будуть задані.
Ральф Вінтерс

1
@Ralph: +1, я абсолютно згоден і навчився цього важко. Я не хотів застосовувати, що ви завжди повинні писати ефективний код незалежно від того, які компроміси, просто ви повинні знати, як це зробити.
dimimcha

5

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

-Ральф Зимовий


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

2
Ознайомтеся з функцією google refine як напівавтоматичне очищення даних, що допомагає уникнути підводних каменів редагування рук.
mindless.panda

5
  1. Постановка проблеми в рамках зменшення карт .
  2. Інженерна сторона проблеми, наприклад., Скільки робить це боляче використовувати більш низьку точність для параметрів, або вибір моделей грунтується не тільки на узагальненні , але зберігання і витрати обчислень , а також.

Чи могли б ви надати відповідне посилання для згадуваної вами карти зменшення карт?
mindless.panda

@ sugar.panda, додано посилання на wiki!
highBandWidth

+1, щоб згадати про меншу точність, хоча це далеко не є спонукальною прерогативою. Чим менша точність, тим більше шансів на те, що ми приймемо погані рішення. Це тісно пов'язане з помилками типу I / II і охоплює декілька дисциплін, але в основному стосується статистики, науки про прийняття рішень та економіки. Функції корисних функцій слід продумати заздалегідь та частину продуманого процесу, щоб визначити відповідну методологію.
Томас Шпідель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.