Просто чтобы добавить к carlosdc хороший ответ.
Некоторые функции, которые устанавливают vowpal wabbit и позволяют масштабировать их до тера-функциональных (10 12 ) размеров данных:
Вектор веса онлайн:
vowpal wabbit поддерживает в памяти вектор весов , который по существу является вектором весов для модели, которую он строит. Это то, что вы называете «государством» в своем вопросе.
Неограниченный размер данных:
Размер весового вектора пропорционален количеству признаков (независимых входных переменных), а не количеству примеров (экземпляров). Это то, что делает ваубал ваббит , в отличие от многих других (не онлайн) учеников, в масштабе. Поскольку ему не нужно загружать все данные в память, как это делает типичный ученик, он все же может учиться на наборах данных, которые слишком велики, чтобы поместиться в памяти.
Режим кластера:
vowpal wabbit поддерживает работу на нескольких хостах в кластере, навязывая узлам структуру двоичного дерева и используя all-reduce
сокращение от листьев к корню.
Хеш-трюк:
vowpal wabbit использует то, что называется трюк хэширования . Все имена объектов хешируются в целое число, используя murmurhash-32
. Это имеет несколько преимуществ: это очень просто и экономно по времени, не имея дело с управлением хеш-таблицами и коллизиями, в то же время позволяя функциям иногда сталкиваться. Оказывается (на практике), что небольшое количество столкновений функций в обучающем наборе с тысячами различных функций похоже на добавление неявного члена регуляризации. Это нелогично, часто повышает точность модели, а не снижает ее. Он также не зависит от разреженности (или плотности) пространства признаков. Наконец, он допускает, чтобы имена входных объектов были произвольными строками, в отличие от большинства обычных учащихся, которые требуют, чтобы имена / идентификаторы объектов были а) числовыми и б) уникальными.
Параллелизм:
vowpal wabbit использует многоядерные процессоры, выполняя синтаксический анализ и обучение в двух отдельных потоках, дополнительно увеличивая его скорость. Это то, что позволяет vw
учиться так же быстро, как читает данные. Оказывается, что большинство поддерживаемых алгоритмов в vw
, нелогично, ограничены скоростью ввода-вывода, а не скоростью обучения.
Контрольная точка и дополнительное обучение:
vowpal wabbit позволяет сохранять модель на диск во время обучения, а затем загружать модель и продолжать обучение с того места, на котором вы остановились, с опцией --save_resume
.
Оценка теста как ошибка:
Средняя потеря, рассчитанная по vowpal wabbit «как есть», всегда находится на невидимых (вне выборки) данных (*). Это устраняет необходимость возиться с заранее запланированными задержками или проводить перекрестную проверку. Уровень ошибок, который вы видите во время обучения, «похож на тест».
За пределами линейных моделей:
vowpal wabbit поддерживает несколько алгоритмов, включая матричную факторизацию (грубо разреженная матрица SVD), скрытое распределение Дирихле (LDA) и другие. Он также поддерживает генерацию терминов взаимодействий «на лету» (билинейная, квадратичная, кубическая и прямолинейная сигмовидная нейронная сеть с указанным пользователем числом единиц), мультиклассовая классификация (в дополнение к базовой регрессии и двоичным файлам). классификация) и многое другое.
Есть обучающие программы и множество примеров в официальной vw wiki на github.
(*) Единственное исключение - использование нескольких проходов с опцией --passes N
.