Eu acho que você está tentando começar de um final ruim. O que se deve saber sobre o SVM para usar é que esse algoritmo está encontrando um hiperplano no hiperespaço de atributos que separa melhor duas classes, onde melhor significa com maior margem entre as classes (o conhecimento de como é feito é seu inimigo aqui, porque desfoca a imagem geral), conforme ilustrado por uma imagem famosa como esta:
Agora, existem alguns problemas restantes.
Primeiro de tudo, o que fazer com aqueles desagradáveis outliers deitados descaradamente em um centro de nuvens de pontos de uma classe diferente?
Para esse fim, permitimos que o otimizador deixe certas amostras com um rótulo incorreto, mas punir cada um desses exemplos. Para evitar a opimização multiobjetiva, as sanções para casos com rótulos incorretos são mescladas com o tamanho da margem com o uso do parâmetro adicional C, que controla o equilíbrio entre esses objetivos.
Em seguida, às vezes o problema não é linear e não é possível encontrar um hiperplano bom. Aqui, apresentamos o truque do kernel - apenas projetamos o espaço não-linear original para um espaço dimensional mais alto com alguma transformação não-linear, é claro definida por vários parâmetros adicionais, esperando que no espaço resultante o problema seja adequado para uma planificação simples. SVM:
Mais uma vez, com um pouco de matemática e podemos ver que todo esse processo de transformação pode ser ocultado com elegância, modificando a função objetivo, substituindo o produto escalar de objetos pela chamada função do kernel.
Finalmente, tudo isso funciona para 2 classes e você tem 3; O que fazer com isso? Aqui, criamos 3 classificadores de 2 classes (sentado - sem sentar, em pé - sem pé, andando - sem andar) e na classificação combinamos aqueles com votação.
Ok, então os problemas parecem resolvidos, mas temos que selecionar o kernel (aqui consultamos nossa intuição e escolher RBF) e ajustar pelo menos alguns parâmetros (kernel C +). E devemos ter uma função objetivo com segurança excessiva, por exemplo, aproximação de erros a partir da validação cruzada. Então deixamos o computador trabalhando nisso, vamos tomar um café, voltamos e vemos que existem alguns parâmetros ótimos. Ótimo! Agora, apenas começamos a validação cruzada aninhada para ter uma aproximação de erro e pronto.
É claro que esse breve fluxo de trabalho é simplificado demais para ser totalmente correto, mas mostra os motivos pelos quais eu acho que você deve tentar primeiro com a floresta aleatória , que é quase independente dos parâmetros, multiclasse nativa, fornece estimativa de erro imparcial e executa SVMs quase tão bons quanto adequados .