Предположим, вы анализируете огромный набор данных из миллиардов наблюдений в день, где каждое наблюдение имеет несколько тысяч разреженных и, возможно, избыточных числовых и категориальных переменных. Скажем, есть одна проблема регрессии, одна проблема неуравновешенной двоичной классификации и одна задача «выяснить, какие предикторы являются наиболее важными». Моя мысль о том, как подойти к проблеме:
Подгонять некоторую прогностическую модель к постепенно увеличивающимся и увеличивающимся (случайным) подвыборкам данных до тех пор, пока:
Подгонка и перекрестная проверка модели становится вычислительно сложной (например, неоправданно медленной на моем ноутбуке, R заканчивается нехватка памяти и т. Д.), ИЛИ
Обучающие и тестовые RMSE или значения точности / отзыва стабилизируются.
Если ошибки обучения и тестирования не стабилизировали (1.), используйте более простую модель и / или реализуйте многоядерные или многоузловые версии модели и перезапустите ее с самого начала.
Если ошибки обучения и теста стабилизировались (2.):
Если (т. Е. Я все еще могу запускать алгоритмы на как он еще не слишком велик), попробуйте повысить производительность, расширив пространство функций или используя более сложную модель и перезапустив ее с самого начала.
Если является «большим» и проведение дальнейшего анализа является дорогостоящим, проанализируйте важность переменной и закончите.
Я планирую использовать пакеты , такие как biglm
, speedglm
, multicore
, и ff
в R на начальном этапе, а затем использовать более сложные алгоритмы и / или многоузловой (на EC2) по мере необходимости.
Похоже ли это на разумный подход, и если да, есть ли у вас какие-либо конкретные советы или предложения? Если нет, то что бы вы попробовали вместо этого для набора данных такого размера?