Каков наиболее эффективный способ тренировки данных с наименьшим объемом памяти?

10

Это мои тренировочные данные: 200 000 примеров х 10 000 функций. Итак, моя матрица тренировочных данных - 200 000 x 10 000.

Мне удалось сохранить это в плоском файле без проблем с памятью, сохраняя каждый набор данных один за другим (один пример за другим), поскольку я генерировал функции для каждого примера.

Но теперь, когда я использую Milk , SVM light или любой другой алгоритм машинного обучения, все пытается загрузить все данные обучения в память, а не тренировать их один за другим. Однако у меня просто 8 ГБ ОЗУ, поэтому я не могу так поступить.

Знаете ли вы, что я мог бы обучить алгоритм один набор данных одному набору данных? То есть, чтобы в любой момент во время тренировки у меня был только один набор данных, загруженный в память.

madCode
источник
1
Что вы подразумеваете под "сохранить каждый набор данных по одному?" Вы имеете в виду "каждая строка данных?" Если у вас есть несколько наборов данных, которые вы сохраняете один за другим, почему бы не загрузить их один за другим и подогнать алгоритм к каждому из них?
Зак
1
Означает ли «один набор данных за один набор данных» строку за строкой? Т.е. один набор данных = 10000 функций? Если это так, то онлайн-алгоритмы могут быть чем-то, что вы ищете, см. En.wikipedia.org/wiki/Online_algorithm и en.wikipedia.org/wiki/Online_machine_learning . Существует онлайн-версия для многих алгоритмов машинного наклона, например SVM и случайных лесов.
Херра Хуу
Спасибо .. Зак и Эрра. Я отредактировал вопрос, чтобы определить более четко по одному. И да, я думал об онлайн-обучении, но никогда не думал об онлайн-алгоритмах, позвольте мне прочитать об этом и попробовать.
madCode

Ответы:

4

Я считаю, что термин для этого типа обучения является неосновным обучением. Одним из предложений является vowpal wabbit , который имеет удобную библиотеку R , а также библиотеки для многих других языков.

Zach
источник
У меня возникают проблемы с зависимостями при надстройке при его установке. есть ли у вас идеи, почему я это получил? bit.ly/L939DO
madCode
@madCode Я никогда не использовал vowpal wabbit, поэтому я не могу помочь вам установить его. Я слышал, что у них отличный список рассылки, и я уверен, что вы можете найти там помощь по его настройке.
Зак
Hey..Zach. Работало нормально. Я установил его и даже дал мне прогнозы. спасибо :-)
madCode
1

Я от всего сердца предлагаю второе предложение Зака. vowpal wabbit - отличный вариант, и вы будете удивлены его скоростью. Набор данных 200k на 10k не считается большим по нормам vowpal wabbit.

vowpal_wabbit (доступно в исходной форме через https://github.com/JohnLangford/vowpal_wabbit , более старая версия доступна в виде стандартного пакета во вселенной Ubuntu) - это быстрый онлайн линейный + билинейный учащийся, с очень гибким вводом. Вы можете смешивать двоичные и числовые функции. Нет нумерации объектов, так как имена переменных будут работать «как есть». Он имеет множество опций, алгоритмов, сокращений, функций потерь и универсальной гибкости. Вы можете присоединиться к списку рассылки (найти его через github) и задать любой вопрос. Сообщество очень хорошо осведомлено и поддерживает.

arielf
источник
1

Я ответил на аналогичный вопрос здесь . Дело в том, что большинство алгоритмов машинного обучения / интеллектуального анализа данных являются пакетными обучающимися, то есть они загружают все данные в память. Поэтому вам нужны разные инструменты для очень больших наборов данных. Смотрите также инструменты этих вопросов.

Онлайн обучение - это способ уменьшить объем памяти алгоритмов.

Атилла Озгур
источник