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 1
se 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?
fonte
flexmix
- no entanto, tenho "Learn R" no meu calendário há alguns anos!Respostas:
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 ).
fonte