Czy SVM może strumieniowo uczyć się jednego przykładu na raz?

33

Mam zestaw danych do przesyłania strumieniowego, przykłady są dostępne pojedynczo. Musiałbym na nich dokonać klasyfikacji wielu klas. Jak tylko podałem przykład szkolenia do procesu uczenia się, muszę go odrzucić. Jednocześnie używam również najnowszego modelu do prognozowania danych nieznakowanych.

O ile mi wiadomo, sieć neuronowa jest w stanie przeprowadzić uczenie strumieniowe, dostarczając przykłady pojedynczo i wykonując propagację do przodu i wsteczną na przykładzie.

Czy maszyna SVM może wykonać strumień ucząc się jednego przykładu naraz i odrzucić ten przykład od razu?

siamii
źródło
2
Przyjęta odpowiedź powinna zostać zaktualizowana. Wygląda na to, że obecnie istnieje kilka bibliotek obsługujących algorytmy uczenia online SVM. Vowpal wabbit ma obniżkę SVM , inne alternatywy to: scikit-learn, sofia-ml, a pakiet kernlab dla R ma kilka opcji do nauki online.
marbel

Odpowiedzi:

22

Ustawienie transmisji strumieniowej w uczeniu maszynowym nazywa się „uczeniem się online”. W ustawieniu online nie ma dokładnej maszyny wektorów wspierających (ponieważ definicja funkcji celu jest nieodłącznie związana z ustawieniem wsadowym). Prawdopodobnie najprostszym uogólnieniem SVM do ustawień online są algorytmy pasywno-agresywne. Kod jest tutaj http://webee.technion.ac.il/people/koby/code-index.html, a powiązany dokument znajduje się tutaj http://eprints.pascal-network.org/archive/00002147/01/CrammerDeKeShSi06. pdf

Podstawową ideą jest to, że dane są odbierane jako par z punktami zapytania gdzie to liczba etykiet. Algorytm utrzymuje macierz wag podczas iteracji algorytmy otrzymują punkt danych a następnie dają przewidywane wyniki dla każdej z etykiet i przewiduje etykietę o najwyższym wyniku jako etykietę prawdziwą. Jeśli przewidywanie jest błędne, algorytm wprowadza najmniejszą zmianę naxR k W tR k x d t x t y t = W x T W T(x,y)Rd×[k]xRkWtRk×dtxty^t=WxtWttak, że pozwoli uniknąć tego błędu w przyszłości. Najmniejsza zmiana jest tu zdefiniowana w kategoriach normy Frobenius.

Znaki
źródło
1
(+1) Witamy na stronie, Mark.
kardynał
11

Zawsze uważałem, że domyślna struktura aktualizacji (która obejmuje algorytmy pasywno-agresywne wspomniane w innej odpowiedzi tutaj) jest niepotrzebnie bardziej złożona niż struktura jawnych aktualizacji (nie wspominając, że aktualizacje niejawne mogą być znacznie wolniejsze niż jawne, chyba że dostępne jest rozwiązanie w formie zamkniętej dla niejawnej aktualizacji).

Znaczenie online Ważna aktualizacja Świadomość jest przykładem najnowocześniejszego jawnego algorytmu aktualizacji, który jest prostszy, szybszy i bardziej elastyczny (obsługujący wiele funkcji utraty, wiele kar, wrażliwe na koszty uczenia się itp.) Niż jego niejawne odpowiedniki. Artykuł dotyczy tylko modeli liniowych (liniowy svm odpowiada przypadkowi funkcji utraty zawiasu z karą kwadratową)

Ponieważ potrzebujesz klasyfikacji wieloklasowej, jednym z podejść jest użycie funkcji „redukcji” w samogłosce wabbit (zbudowanej na górze podejścia z papieru), która niestety nie jest dobrze udokumentowana.

Jewgienij
źródło
8

LASVM jest jednym z najpopularniejszych wariantów nauki SVM w trybie online.

Liniowe maszyny SVM można również trenować przy użyciu stochastycznego spadku gradientu, podobnie jak każdy model liniowy.

Fred Foo
źródło
Żeby było jasne, nie można wytrenować żadnego modelu liniowego za pomocą SGD, należy założyć przynajmniej określoną formę celu (funkcja straty addytywnej)
lejlot,
6

Proszę odnieść się do dokumentu SVM Incremental Learning, Adaptation and Optimization , który zaproponował SVM online do klasyfikacji binarnej.

Kod powyższej pracy można znaleźć tutaj . W kodzie wprowadzono dwa sposoby szkolenia online:

  1. trenuj SVM stopniowo na jednym przykładzie svmtrain(), dzwoniąc , i
  2. przeprowadź szkolenie wsadowe, zwiększając jednocześnie wszystkie przykłady szkoleń do rozwiązania, dzwoniąc svmtrain2().

Wracając do twojego pytania, odpowiedź brzmi oczywiście TAK, aby uczyć się strumieniowo jeden przykład na raz. Kod może również obsługiwać oduczenie (odrzucenie) przykładu, tj. Dokładne i przybliżone oszacowanie błędu LOO - dokładny szacunek błędu LOO można skutecznie obliczyć poprzez dokładne oduczenie jednego przykładu na raz i przetestowanie klasyfikatora na przykład.

herohuyongtao
źródło
(+1) Witamy na naszej stronie!
whuber
0

Nauka online z jądrem omawia naukę online w ogólnych ustawieniach jądra.

Fragment streszczenia -

Algorytmy oparte na jądrze, takie jak maszyny wektorów wsparcia, osiągnęły znaczny sukces w różnych problemach w ustawieniach wsadowych, w których wszystkie dane szkoleniowe są dostępne z wyprzedzeniem. Maszyny wektorów wsparcia łączą tak zwaną sztuczkę jądra z pomysłem dużej marży. niewielkie zastosowanie tych metod w środowisku internetowym odpowiednim do aplikacji w czasie rzeczywistym. W tym artykule rozważamy naukę online w reprodukcji przestrzeni jądra Hilberta. Rozważając klasyczne stochastyczne zejście gradientu w przestrzeni funkcji oraz zastosowanie kilku prostych sztuczek , opracowujemy proste i wydajne obliczeniowo algorytmy dla szerokiego zakresu problemów, takich jak klasyfikacja, regresja i wykrywanie nowości ”.

TenaliRaman
źródło