Библиотека SVM подходит для онлайн-встраивания

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

В процессе мы пытались взаимодействовать с Pegasos а также dlib а также проектирование (и попытка написать) нашей собственной реализации SVM.

dlib выглядит многообещающе, поскольку позволяет взаимодействовать с написанными пользователем ядрами.
Тем не менее, ядра не дают нам желаемого поведения «онлайн» (если это предположение неверно).

Поэтому, если вы знаете о библиотеке SVM, которая поддерживает онлайн-встраивание и пользовательские встроенные кодировщики, это было бы очень полезно.


Просто чтобы прояснить про «онлайн».

Крайне важно, чтобы процесс встраивания происходил в сети, чтобы избежать интенсивного использования памяти.

Мы в основном хотим сделать следующее в Stochastic subGradient Decent (в очень общем псевдокоде):

w = 0 vector
for t=1:T
i = random integer from [1,n]

embed(sample_xi)

// sample_xi is sent to sub gradient loss i as a parameter
w = w - (alpha/t)*(sub_gradient(loss_i))
end

1

Решение

Я думаю, что в вашем случае вы могли бы рассмотреть бюджетный стохастический градиентный спуск для крупномасштабного обучения SVM (BSGD) [1] от Ван, Краммер, Вучетич

Это связано с тем, что, как указано в статье о «Проклятии кернелизации», вы можете использовать эту опцию вместо того, что вы указали в псевдокоде в своем вопросе.

Библиотека машинного обучения акул реализует BSGD. Проверьте быстрый учебник Вот

2

Другие решения

Может быть, вы хотите использовать что-то вроде Dlib’s эмпирическая карта ядра. Вы можете прочитать его документацию и, в частности, пример программы, чтобы узнать подробности того, что она делает, но в основном она позволяет вам проецировать образец в диапазон некоторого базиса в пространстве функций ядра. В dlib есть даже алгоритмы, которые итеративно строить базовый набор, Возможно, это то, о чем вы спрашиваете.

0

По вопросам рекламы [email protected]