Eu tenho um conjunto de dados de streaming, exemplos estão disponíveis um de cada vez. Eu precisaria fazer uma classificação multi-classe neles. Assim que forneço um exemplo de treinamento para o processo de aprendizado, tenho que descartar o exemplo. Simultaneamente, também estou usando o modelo mais recente para realizar previsões em dados não rotulados.
Até onde eu sei, uma rede neural é capaz de aprender o fluxo alimentando exemplos um de cada vez e realizando propagação para frente e propagação para trás no exemplo.
Um SVM pode executar o aprendizado de fluxo um exemplo de cada vez e descartá-lo imediatamente?
machine-learning
svm
neural-networks
siamii
fonte
fonte
Respostas:
A configuração de streaming no aprendizado de máquina é chamada de "aprendizado online". Não existe uma máquina exata de vetores de suporte na configuração online (já que a definição da função objetivo é inerente à configuração do lote). Provavelmente, a generalização mais direta do SVM para a configuração online são algoritmos passivo-agressivos. O código está aqui http://webee.technion.ac.il/people/koby/code-index.html e um documento associado está aqui http://eprints.pascal-network.org/archive/00002147/01/CrammerDeKeShSi06. pdf
A idéia básica é que se receba dados como emparelha com pontos de consulta que é o número de etiquetas. O algoritmo mantém uma matriz de pesos na iteração os algoritmos recebem um ponto de dados e, em seguida, fornecem as pontuações previstas para cada um dos rótulos e prevê o rótulo com a pontuação mais alta como o rótulo verdadeiro. Se a previsão estiver incorreta, o algoritmo a menor alteração emx ∈ R k W t ∈ R k x d t x t y t = W x t W t( x , y) ∈ Rd× [ k ] x ∈ R k Wt∈ Rk × d t xt y^t= Wxt Wt de modo a evitar esse erro no futuro. A menor mudança é aqui definida em termos da norma de Frobenius.
fonte
Eu sempre achei a estrutura de atualizações implícitas (que inclui os algoritmos passivo-agressivos mencionados em outra resposta aqui) ser desnecessariamente mais complexa do que a estrutura de atualizações explícitas (sem mencionar que as atualizações implícitas podem ser muito mais lentas que as explícitas, a menos que solução de formulário fechado para atualização implícita está disponível).
As Atualizações com reconhecimento de peso de importância on-line são um exemplo de um algoritmo de atualização explícita de última geração que é mais simples, rápido e flexível (suportando múltiplas funções de perda, multas, aprendizado sensível a custos etc.) do que seus equivalentes implícitos. O artigo trata apenas de modelos lineares (svm linear corresponde ao caso da função de perda de dobradiça com penalidade quadrática)
Como você precisa de classificação de várias classes, uma abordagem é usar a funcionalidade "reduções" do vowpal wabbit (construída na parte superior da abordagem do artigo), que infelizmente não está bem documentada.
fonte
O LASVM é uma das variantes de aprendizado on-line mais populares do SVM.
Os SVMs lineares também podem ser treinados usando a descida de gradiente estocástico, como qualquer modelo linear.
fonte
Consulte o artigo Aprimoramento, adaptação e otimização incrementais do SVM , que propôs um SVM on-line para classificação binária.
O código do artigo acima pode ser encontrado aqui . No código, duas maneiras de treinamento on-line são introduzidas:
svmtrain()
esvmtrain2()
.De volta à sua pergunta, a resposta é obviamente SIM para o aprendizado de fluxo, um exemplo de cada vez. E o código também pode lidar com desaprender (descartar) um exemplo, ou seja, estimativa exata e aproximada de erro de deixar para fora (LOO) - a estimativa exata de erro de LOO pode ser calculada com eficiência, desaprendendo exatamente um exemplo de cada vez e testando o classificador em o exemplo.
fonte
Aprendizado on-line com Kernels discute o aprendizado on-line nas configurações gerais do kernel.
Trecho do resumo -
" Algoritmos baseados em kernel, como máquinas de vetores de suporte, alcançaram um sucesso considerável em vários problemas na configuração de lotes, onde todos os dados de treinamento estão disponíveis com antecedência. As máquinas de vetores de suporte combinam o chamado truque do kernel com a idéia de grande margem. pouco uso desses métodos em um ambiente on-line adequado para aplicativos em tempo real.Neste artigo, consideramos o aprendizado on-line em um espaço de reprodução do núcleo de Hilbert.Além disso, consideramos a descida clássica do gradiente estocástico dentro de um espaço de recurso e o uso de alguns truques diretos , desenvolvemos algoritmos simples e computacionalmente eficientes para uma ampla variedade de problemas, como classificação, regressão e detecção de novidades " .
fonte