Glmnet пакетный набор негабаритных данных
Я делаю полиномиальную регрессию с помощью glmnet в matlab, и у меня есть набор данных, который составляет приблизительно 6-10 ГБ, в зависимости от размера тестового набора. Я могу загрузить его в память, но кажется, что glmnetmex не может обработать весь набор данных для больших размеров обучения (например, оставить один). Я подозреваю, что должен быть способ пакетировать входы в glmnetmex, но я не могу найти его в документации. Существует ли он, или у вас есть какие-либо рекомендации о том, как поступить иначе? Я в порядке, используя вместо этого версию R, если есть способ решить эту проблему
1 ответ
Возможность подавать партии в метод требует двух вещей:
- Возможность инициализировать алгоритм обучения с предыдущей подгонкой
- Возможность запуска алгоритма обучения за ограниченное количество итераций
glmnet
имеет последнее, но, к сожалению, не первое. Я думаю, что у вас есть несколько вариантов решения проблемы:
- Найдите машину получше. Вы можете рассмотреть возможность использования одного из облачных сервисов, если ваши финансовые ресурсы позволяют это.
- Копаться в
glmnet
код. Пакеты MATLAB и R являются обертками для фактического оптимизатора, который написан на FORTRAN. Обе оболочки выполняют новую инициализацию переменных модели, прежде чем передать их в решатель FORTRAN. Вы можете попробовать изменить его, чтобы использовать предварительно вычисленную модель. - Вы можете подумать о создании ансамблевого предиктора, где вы будете обучать
glmnet
модель для каждой партии и использовать взвешенную схему голосования (где каждый предиктор взвешивается по эффективности перекрестной проверки), чтобы сделать окончательные прогнозы. - У меня есть пакет R, который обеспечивает более общую структуру регуляризации, но он также может быть использован для обучения стандартных моделей эластичных сетей, как с
glmnet
, Мой пакет позволяет вам инициализировать обучение с предварительно вычисленной моделью, а также запускать обучение для фиксированного числа итераций. Недостатком является то, что у меня есть только биномиальный решатель, а не полиномиальный. Таким образом, вам придется взломать его по схеме "один против одного" или "один против другого". - Наконец, если вы не привязаны к линейным моделям, существует множество других методов обучения, которые позволяют легко группировать входные данные. Основы глубокого обучения и нейронных сетей в настоящее время являются одними из самых популярных.