Glmnet пакетный набор негабаритных данных

Я делаю полиномиальную регрессию с помощью glmnet в matlab, и у меня есть набор данных, который составляет приблизительно 6-10 ГБ, в зависимости от размера тестового набора. Я могу загрузить его в память, но кажется, что glmnetmex не может обработать весь набор данных для больших размеров обучения (например, оставить один). Я подозреваю, что должен быть способ пакетировать входы в glmnetmex, но я не могу найти его в документации. Существует ли он, или у вас есть какие-либо рекомендации о том, как поступить иначе? Я в порядке, используя вместо этого версию R, если есть способ решить эту проблему

1 ответ

Решение

Возможность подавать партии в метод требует двух вещей:

  • Возможность инициализировать алгоритм обучения с предыдущей подгонкой
  • Возможность запуска алгоритма обучения за ограниченное количество итераций

glmnet имеет последнее, но, к сожалению, не первое. Я думаю, что у вас есть несколько вариантов решения проблемы:

  • Найдите машину получше. Вы можете рассмотреть возможность использования одного из облачных сервисов, если ваши финансовые ресурсы позволяют это.
  • Копаться в glmnet код. Пакеты MATLAB и R являются обертками для фактического оптимизатора, который написан на FORTRAN. Обе оболочки выполняют новую инициализацию переменных модели, прежде чем передать их в решатель FORTRAN. Вы можете попробовать изменить его, чтобы использовать предварительно вычисленную модель.
  • Вы можете подумать о создании ансамблевого предиктора, где вы будете обучать glmnet модель для каждой партии и использовать взвешенную схему голосования (где каждый предиктор взвешивается по эффективности перекрестной проверки), чтобы сделать окончательные прогнозы.
  • У меня есть пакет R, который обеспечивает более общую структуру регуляризации, но он также может быть использован для обучения стандартных моделей эластичных сетей, как с glmnet, Мой пакет позволяет вам инициализировать обучение с предварительно вычисленной моделью, а также запускать обучение для фиксированного числа итераций. Недостатком является то, что у меня есть только биномиальный решатель, а не полиномиальный. Таким образом, вам придется взломать его по схеме "один против одного" или "один против другого".
  • Наконец, если вы не привязаны к линейным моделям, существует множество других методов обучения, которые позволяют легко группировать входные данные. Основы глубокого обучения и нейронных сетей в настоящее время являются одними из самых популярных.
Другие вопросы по тегам