SVM peut-il apprendre en continu un exemple à la fois?

33

J'ai un ensemble de données en streaming, des exemples sont disponibles un à la fois. J'aurais besoin de faire la classification multi-classe sur eux. Dès que j'ai intégré un exemple de formation au processus d'apprentissage, je dois le supprimer. Parallèlement, j'utilise également le dernier modèle pour effectuer des prévisions sur des données non étiquetées.

Pour autant que je sache, un réseau de neurones est capable d’apprentissage par flux en fournissant des exemples un à un et en effectuant une propagation en aval et une propagation en arrière sur l’exemple.

Un SVM peut-il apprendre en continu un exemple à la fois et l’écarter immédiatement?

siamii
la source
2
La réponse acceptée doit être mise à jour. Il semble qu'il existe actuellement plusieurs bibliothèques prenant en charge les algorithmes d'apprentissage en ligne SVM. Vowpal wabbit a une réduction pour svm , d'autres alternatives sont: scikit-learn, sofia-ml et le package kernlab de R propose quelques options pour l'apprentissage en ligne.
Marbel

Réponses:

22

Le paramètre de diffusion en continu dans l'apprentissage automatique est appelé "apprentissage en ligne". Il n'y a pas de machine à vecteurs de support exacte dans le paramètre en ligne (puisque la définition de la fonction objectif est par nature pour le paramètre de traitement par lots). Les algorithmes passifs-agressifs sont probablement la généralisation la plus directe du SVM au paramétrage en ligne. Le code est ici http://webee.technion.ac.il/people/koby/code-index.html et un article associé est ici http://eprints.pascal-network.org/archive/00002147/01/CrammerDeKeShSi06. pdf

L'idée de base est que l' on reçoit comme données paires avec des points d'interrogation xRk est le nombre d'étiquettes. L'algorithme maintient une matrice de poids W tR k × d à l' itération t algorithmes reçoit un point de données x t et donne alors prévus scores y t = W x t(x,y)Rd×[k]xRkWtRk×dtxty^t=Wxtpour chacune des étiquettes et il prédit l'étiquette la plus élevée comme étant l'étiquette vraie. Si la prédiction est erronée, l'algorithme effectue le plus petit changement en , de manière à éviter cette erreur à l'avenir. Le plus petit changement est défini ici en termes de norme de Frobenius.Wt

Des notes
la source
1
(+1) Bienvenue sur le site, Mark.
cardinal
11

J'ai toujours trouvé que le framework de mises à jour implicites (qui inclut les algorithmes passif-agressif mentionnés dans une autre réponse ici) était inutilement plus complexe que le framework de mises à jour explicites (sans compter que les mises à jour implicites peuvent être beaucoup plus lentes que les mises à jour explicites, sauf solution fermée pour la mise à jour implicite est disponible).

Importance en ligne Weight Aware Updates est un exemple d'algorithme de mise à jour explicite dernier cri, plus simple, plus rapide et plus flexible (prise en charge de plusieurs fonctions de perte, de multiples pénalités, d'apprentissage sensible au coût, etc.) par rapport à ses équivalents implicites. Le document ne traite toutefois que des modèles linéaires (svm linéaire correspond au cas de la fonction de perte de charnière avec une pénalité quadratique)

Puisque vous avez besoin d’une classification multi-classes, une approche consiste à utiliser la fonctionnalité "réductions" de vabpal wabbit (construite sur le dessus de la méthode du document) qui n’est malheureusement pas bien documentée.

Yevgeny
la source
8

LASVM est l’une des variantes d’apprentissage en ligne les plus populaires du SVM.

Les SVM linéaires peuvent également être formés à la descente de gradient stochastique, comme tout modèle linéaire.

Fred Foo
la source
Pour clarifier les choses, aucun modèle linéaire ne peut être formé à l'aide de SGD, il faut assumer au moins une forme particulière de l'objectif (fonction de perte additive)
lejlot
6

Veuillez vous reporter à l'article Apprentissage incrémental, Adaptation et Optimisation du SVM, qui proposait un SVM en ligne pour la classification binaire.

Le code de l'article ci-dessus peut être trouvé ici . Dans le code, deux méthodes de formation en ligne sont introduites:

  1. former la SVM progressivement sur un exemple à la fois en appelant svmtrain(), et
  2. effectuez une formation par lots en incrémentant tous les exemples de formation dans la solution simultanément par appel svmtrain2().

Pour en revenir à votre question, la réponse est évidemment OUI pour l’apprentissage en continu, un exemple à la fois. Et le code peut également gérer le désapprentissage (rejet) d’un exemple, c’est-à-dire l’estimation exacte et approximative de l’erreur LOO (LOO) - l’estimation exacte de l’erreur LOO peut être calculée efficacement en désapprouvant exactement un exemple à la fois et en testant le classifieur l'exemple.

Herohuyongtao
la source
(+1) Bienvenue sur notre site!
whuber
0

L'apprentissage en ligne avec les noyaux traite de l'apprentissage en ligne dans les paramètres généraux du noyau.

Extrait du résumé -

" Les algorithmes basés sur le noyau, tels que les machines à vecteurs de support, ont connu un succès considérable dans divers problèmes de configuration par lots, dans lesquels toutes les données de formation sont disponibles à l'avance. Ces méthodes sont peu utilisées dans un environnement en ligne adapté aux applications en temps réel. Dans cet article, nous étudions l'apprentissage en ligne dans un espace de reproduction du noyau de Hilbert, en considérant la descente de gradient stochastique classique dans un espace de fonctions et l'utilisation de trucs simples. , nous développons des algorithmes simples et efficaces en calcul pour un large éventail de problèmes tels que la classification, la régression et la détection de nouveauté. "

TenaliRaman
la source