Eu diria que a escolha depende muito dos dados que você possui e qual é o seu objetivo. Algumas "regras de ouro".
A floresta aleatória é intrinsecamente adequada para problemas de várias classes, enquanto o SVM é intrinsecamente de duas classes. Para problemas com várias classes, será necessário reduzi-lo a vários problemas de classificação binária.
A Random Forest funciona bem com uma mistura de recursos numéricos e categóricos. Quando os recursos estão nas várias escalas, também é bom. Grosso modo, com a Random Forest, você pode usar os dados como eles são. O SVM maximiza a "margem" e, portanto, baseia-se no conceito de "distância" entre pontos diferentes. Cabe a você decidir se a "distância" é significativa. Como conseqüência, a codificação one-hot para recursos categóricos é obrigatória. Além disso, a escala min-max ou outra é altamente recomendada na etapa de pré-processamento.
Se você possui dados com pontos em , uma etapa intermediária do SVM é a construção de uma matriz (pense nos requisitos de memória para armazenamento) calculando pontos (complexidade computacional). Portanto, como regra geral, o SVM dificilmente pode ser escalado além de 10 ^ 5 pontos. Um grande número de recursos (recursos homogêneos com distância significativa, o pixel da imagem seria um exemplo perfeito) geralmente não é um problema.m n × n n 2nmn × nn2
Para um problema de classificação, a Random Forest fornece a probabilidade de pertencer à classe. O SVM dá a distância do limite; você ainda precisa convertê-lo em probabilidade, de alguma forma, se precisar.
Para esses problemas, onde o SVM se aplica, geralmente ele tem um desempenho melhor que o Random Forest.
O SVM fornece "vetores de suporte", ou seja, pontos em cada classe mais próxima do limite entre as classes. Eles podem ser do seu interesse para interpretação.