Может ли опорная векторная машина использоваться в больших данных?

13

Имея ограниченные знания о SVM, он подходит для короткой и полной матрицы данных (много функций и не слишком много экземпляров), но не для больших данных.X

Я понимаю, что одной из причин является то, что матрица ядра - это матрица n × n, где n - количество экземпляров в данных. Если мы скажем, 100K данных, матрица ядра K будет иметь 10 10 элементов и может занимать ~ 80G памяти.Kn×nnК1010

Есть ли какая-либо модификация SVM, которую можно использовать в больших данных? (Скажите по шкале от 100К до 1М точек данных?)

Хайтау Ду
источник
Это помогло бы потенциальным респондентам, если бы вы обсудили цель SVM, а не просто «большие данные». Тем не менее, и ничего не зная о вашем запросе, есть ли причина, по которой SVM нельзя использовать в алгоритме «разделяй и властвуй»?
Майк Хантер
Для чего вы используете SVM? Не могли бы вы использовать альтернативный метод?
Том

Ответы:

12

Как вы упоминаете, для хранения матрицы ядра требуется память, которая квадратично масштабируется с количеством точек данных. Время обучения для традиционных алгоритмов SVM также масштабируется суперлинейно с количеством точек данных. Таким образом, эти алгоритмы не подходят для больших наборов данных.

КяJИксяИксJКяJзнак равноΦ(Икся)Φ(ИксJ)Φопределяется неявно функцией ядра, а SVM с ядром не вычисляет явно пространства пространственных объектов. Это вычислительно эффективно для наборов данных малого и среднего размера, поскольку пространство признаков может быть очень многомерным или даже бесконечномерным. Но, как указано выше, это становится невозможным для больших наборов данных. Вместо этого мы можем явным образом отобразить данные нелинейно в пространство признаков, а затем эффективно обучить линейный SVM представлениям пространств признаков. Отображение пространств объектов может быть построено так, чтобы аппроксимировать данную функцию ядра, но использовать меньше измерений, чем «полное» отображение пространств объектов. Для больших наборов данных это все же может дать нам богатое представление пространств объектов, но с гораздо меньшим количеством измерений, чем у точек данных.

Один из подходов к аппроксимации ядра использует приближение Нистрома (Williams and Seeger 2001). Это способ приблизить собственные значения / собственные векторы большой матрицы, используя меньшую подматрицу. Другой подход использует рандомизированные функции и иногда называется «случайными кухонными мойками» (Rahimi and Recht 2007).

Еще один прием для обучения SVM на больших наборах данных - приблизить задачу оптимизации с помощью набора меньших подзадач. Например, использование стохастического градиентного спуска в основной задаче является одним из подходов (среди многих других). Большая работа была проделана в области оптимизации. Менон (2009) дает хороший обзор.

Рекомендации

Уильямс и Сигер (2001). Использование метода Nystroem для ускорения машин с ядром.

Рахими и Рехт (2007). Случайные функции для больших машин с ядром.

Менон (2009) . Масштабные опорные векторные машины: алгоритмы и теория.

user20160
источник