Перший крок для великих даних (


21

Припустимо, ви аналізуєте величезний набір даних у розмірі мільярдів спостережень на день, де кожне спостереження має кілька тисяч розріджених та, можливо, зайвих числових та категоріальних змінних. Скажімо, є одна проблема регресії, одна незбалансована проблема бінарної класифікації та одне завдання "з'ясувати, які прогнози є найважливішими". Моя думка, як підійти до проблеми:

Встановити деяку модель прогнозування на прогресивно більші та більші (випадкові) під вибірки даних до:

  1. Встановлення та перехресна перевірка моделі стає обчислювально складною (наприклад, на моєму ноутбуці нерозумно повільно, R не вистачає пам'яті тощо), АБО

  2. Навчальні та тестові значення RMSE або точність / відкликання стабілізуються.

Якщо помилки навчання та тестування не стабілізувались (1.), використовуйте більш просту модель та / або реалізуйте багатоядерні або багатомодові версії моделі та перезапустіть спочатку.

Якщо помилки навчання та тесту стабілізувалися (2.):

  • Якщо (тобто я все ще можу запускати алгоритми на оскільки він ще не надто великий), спробуйте підвищити продуктивність, розширивши простір функцій або використовуючи більш складну модель і перезапустивши спочатку.NсубсетNХсубсет

  • Якщо "велика", а подальший аналіз буде дорогим, проаналізуйте змінне значення та кінець.Nсубсет

Я планую використовувати пакети , такі як biglm, speedglm, multicore, і ffв R на початковому етапі, а потім використовувати більш складні алгоритми і / або многоузловой (на EC2) по мірі необхідності.

Це звучить як розумний підхід, і якщо так, чи є у вас якісь конкретні поради чи пропозиції? Якщо ні, то що б ви спробували замість цього набору даних такого розміру?


1
Це звучить як розумний підхід. Я знайшов розмову про подібний підхід: youtube.com/watch?v=X9YVSDWQokQ .
альфа

2
jmlr.csail.mit.edu/proceedings/papers/v7/miller09/miller09.pdf Це може бути корисно. Детальніше про математику тут: ms.unimelb.edu.au/~millerh/papers/gencor_JCGS.pdf
dcl

@dcl: Спасибі - ідея - це приємний, обчислювально дешевий, нелінійний метод вибору змінних, який буде добре паралелізувати (хоча він є однозначним). Я міг би спробувати, тому що це швидко та дуже просто кодувати. Я спочатку думав використовувати цей дуже класний алгоритм: code.google.com/p/rf-ace .
заблоковано

@alfa: Мені дуже подобається ця ідея! Використовуючи послідовний тест на більших і більших підмножинах даних, щоб послідовно усунути найгірші мета-параметри. Це повинно значно покращитися. Спасибі! ps ось паперова версія розмови: biglearn.org/files/papers/biglearn2011_submission_2.pdf
заблоковано

Відповіді:


2

Вам слід перевірити онлайн-методи регресії та класифікації для наборів даних такого розміру. Ці підходи дозволять вам використовувати весь набір даних без необхідності завантажувати його в пам'ять.

Ви також можете перевірити Vowpal Wabbit (VW):

https://github.com/JohnLangford/vowpal_wabbit/wiki

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


2

Я б запропонував використовувати Hadoop та RMR (специфічний пакет для зменшення карти на R). За допомогою цієї стратегії ви можете запускати великі набори даних на комп'ютерах із зручною конфігурацією (можливо, через дві години ви придумали і встановлені та запущені Hadoop, і RMR (RHadoop)).

Насправді, якщо у вас є декілька комп'ютерів, ви можете створити кластер, скорочуючи час обробки.

Я даю вам кілька посилань, що підтримують мою пропозицію:

  • Це посилання приведе вас до підручника по встановленню Hadoop на кластері з одним вузлом (на одному комп’ютері).
  • Це посилання та це посилання покажуть вам, як встановити RMR на кластер Hadoop.
  • І нарешті, тут ви можете знайти приклад логістичної регресії за допомогою RHadoop.

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


0

Це скоріше коментар, ніж відповідь, але я не можу розмістити його як коментар (потрібно 50 повторень).

Ви намагалися використовувати PCA на своєму наборі даних? Це може допомогти вам зменшити простір змінної та знайти можливий напрямок, за яким змінна виключає з вас модель регресії. Зробивши це, модель буде легше обчислити. Тут ви можете знайти цікаву дискусію щодо використання PCA з категоричними змінними: Чи можна застосувати аналіз основних компонентів до наборів даних, що містять суміш безперервних і категоричних змінних?

Крім того, я думаю, що ви використовуєте R з багатьох причин (я також використовую R), але може бути простіше використовувати таке програмне забезпечення, як SAS або STATA. Вони краще працюють з великими даними, і вам не доведеться мати справу з багатоядерними та паралельними обчисленнями.

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

Сподіваюся, це допомагає

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