Может ли SVM выполнять потоковое обучение по одному примеру за раз?

33

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

Насколько я знаю, нейронная сеть способна выполнять потоковое обучение, подавая примеры по одному и выполняя прямое распространение и обратное распространение на примере.

Может ли SVM выполнить потоковое обучение по одному примеру за раз и сразу отказаться от него?

siamii
источник
2
Принятый ответ должен быть обновлен. Кажется, на данный момент существует несколько библиотек, которые поддерживают алгоритмы онлайн-обучения SVM. Vowpal Wabbit имеет сокращение для SVM , другие альтернативы: Scikit-Learn, Sofia-мл и пакет Kernlab R имеет несколько вариантов для онлайн-обучения.
Marbel

Ответы:

22

Настройка потоковой передачи в машинном обучении называется «онлайн-обучением». В онлайн-настройке нет точной машины опорных векторов (поскольку определение целевой функции присуще настройке партии). Вероятно, наиболее простым обобщением SVM для онлайн-настройки являются пассивно-агрессивные алгоритмы. Код здесь http://webee.technion.ac.il/people/koby/code-index.html, а соответствующий документ здесь http://eprints.pascal-network.org/archive/00002147/01/CrammerDeKeShSi06. PDF

Основная идея состоит в том, что можно получить данные в виде пар с точками запроса где это количество меток. Алгоритм поддерживает весовую матрицу на итерации алгоритмы получают точку данных и затем дают прогнозируемые оценки для каждой из меток, и она предсказывает метку с самым высоким баллом как истинную метку. Если прогноз неверен, то алгоритм вносит наименьшее изменение в(Икс,год)рd×[К]ИксрКWTрК×dTИксTгод^Tзнак равноWИксTWTтак что это позволит избежать этой ошибки в будущем. Наименьшее изменение здесь определяется в терминах нормы Фробениуса.

Метки
источник
1
(+1) Добро пожаловать на сайт, Марк.
кардинал
11

Я всегда считал, что неявная структура обновлений (которая включает в себя пассивно-агрессивные алгоритмы, упомянутые в другом ответе здесь) неоправданно сложнее, чем явная структура обновлений (не говоря уже о том, что неявные обновления могут быть намного медленнее, чем явные, если только доступно закрытое решение для неявного обновления).

Важные онлайн-обновления , основанные на значении веса, являются примером современного алгоритма явного обновления, который проще, быстрее и более гибок (поддерживает функции множественных потерь, множественные штрафы, обучение с учетом затрат и т. Д.), Чем его неявные аналоги. В статье рассматриваются только линейные модели (линейная svm соответствует случаю функции потери шарнира с квадратичным штрафом)

Так как вам нужна многоклассовая классификация, один из подходов заключается в использовании функциональности «сокращения» vowpal wabbit (построенной на основе подхода из статьи), который, к сожалению, не документирован.

Евгений
источник
8

LASVM является одним из самых популярных онлайн-вариантов обучения SVM.

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

Фред Фу
источник
Просто чтобы прояснить ситуацию, нельзя использовать линейную модель с использованием SGD, нужно принять хотя бы конкретную форму цели (аддитивная функция потерь)
lejlot
6

Пожалуйста, обратитесь к статье SVM «Инкрементальное обучение, адаптация и оптимизация» , в которой предлагается онлайн SVM для бинарной классификации.

Код вышеприведенного документа можно найти здесь . В коде представлены два способа онлайн-обучения:

  1. обучать SVM постепенно на одном примере за один раз, вызывая svmtrain(), и
  2. выполнить пакетное обучение, увеличивая все обучающие примеры в решении одновременно, вызывая svmtrain2().

Возвращаясь к вашему вопросу, ответ, очевидно, ДА для потокового обучения по одному примеру за раз. Кроме того, код может обрабатывать пример отмены (отбрасывания), то есть точную и приблизительную оценку ошибки "оставь один раз" (LOO) - точная оценка ошибки LOO может быть эффективно вычислена путем точного отсоединения одного примера за раз и проверки классификатора на пример.

herohuyongtao
источник
(+1) Добро пожаловать на наш сайт!
uuber
0

Онлайн-обучение с ядрами обсуждает онлайн-обучение в общих настройках ядра.

Выдержка из резюме -

« Алгоритмы на основе ядра, такие как машины опорных векторов, достигли значительных успехов в различных задачах в пакетной настройке, где все обучающие данные доступны заранее. Машины опорных векторов сочетают так называемый трюк ядра с идеей с большим запасом. мало использовать эти методы в онлайн-настройке, подходящей для приложений реального времени. В этой статье мы рассматриваем онлайн-обучение в репродуцирующемся пространстве Гильберта ядра. Рассматривая классический стохастический градиентный спуск в пространстве признаков и использование некоторых простых приемов Мы разрабатываем простые и эффективные в вычислительном отношении алгоритмы для широкого спектра задач, таких как классификация, регрессия и обнаружение новизны ».

TenaliRaman
источник