Um conjunto de treinamento escasso afeta adversamente um SVM?

12

Estou tentando classificar mensagens em diferentes categorias usando um SVM. Eu compilei uma lista de palavras / símbolos desejáveis ​​do conjunto de treinamento.

Para cada vetor, que representa uma mensagem, defino a linha correspondente como 1se a palavra estiver presente:

"corpus" é: [mary, pequena, cordeiro, estrela, brilho]

primeira mensagem: "mary teve um cordeirinho" -> [1 1 1 0 0]

segunda mensagem: "twinkle little star" -> [0 1 0 1 1]

Acho que essa é uma configuração bastante comum com o SVM, mas minha pergunta é, com milhares de palavras no conjunto, e se houver apenas 1-2 palavras por mensagem que realmente aparecerem? A dependência linear do meu conjunto de vetores de treinamento afetará adversamente a capacidade do algoritmo de convergir?

jonsca
fonte
1
Você tem muitos dados, mas poucos dados rotulados? Nesse caso, você pode querer estudar um aprendizado semi-supervisionado. O uso de alguns dos seus dados não rotulados deve aumentar sua precisão e diminuir o risco de sobreajuste.
Neurônio
@neuron eu tinha pensado em fazer isso. O que é um exemplo de arquitetura semi-supervisionada?
jonsca
1
Eu usei apenas métodos "hackeados" de semi-supervisionados (também conhecido como modelo de trem no conjunto de treinamento, use o modelo para prever dados), extraia todos os dados com uma probabilidade de previsão> 0,5 e mescle com o conjunto de treinamento e crie um moel no novo conjunto de treinamento). Mas já vi o flexmix mencionar alguns lugares (consulte cran.r-project.org/web/packages/flexmix )
neuron
@neuron Ok, bom, porque os artigos que eu vi (embora com uma pesquisa rápida do tipo wikipedia) não eram muito específicos sobre arquiteturas. Vou verificar flexmix- no entanto, tenho "Learn R" no meu calendário há alguns anos!
jonsca
Faça isso, R é INCRÍVEL, as bibliotecas que se tornam disponíveis para você são simplesmente incompreensíveis. Coisas como caret, sqldf / rmysql, foreach (paralelo para), ggplot2 e googlevis são ferramentas incrivelmente úteis. Eu não era fã do idioma no começo, mas ele cresceu em mim, e eu absolutamente amo usá-lo agora.
Neurônio

Respostas:

9

Escassez e dependência linear são duas coisas diferentes. A dependência linear implica que alguns dos vetores de característica são múltiplos simples de outros vetores de característica (ou o mesmo aplicado aos exemplos). Na configuração que você descreveu, acho improvável que a dependência linear (implica que dois termos tenham a mesma frequência (ou múltiplos dela) em todos os documentos). Simplesmente ter recursos esparsos não apresenta nenhum problema para o SVM. Uma maneira de ver isso é que você poderia fazer uma rotação aleatória dos eixos coordenados, o que deixaria o problema inalterado e forneceria a mesma solução, mas tornaria os dados completamente esparsos (isto é, em parte, como as projeções aleatórias funcionam )

Também parece que você está falando sobre o SVM no primal . Observe que se você usar o SVM do kernel, apenas porque você tem um conjunto de dados esparso, não significa que a matriz do kernel será esparsa. Pode, no entanto, ser de baixa patente. Nesse caso, você pode realmente tirar proveito desse fato para um treinamento mais eficiente (consulte, por exemplo, Treinamento eficiente do svm usando representações de kernel de baixo escalão ).

tdc
fonte
1
É verdade que fui um pouco rápido e livre com a minha terminologia. Faz sentido.
jonsca