Quando usar a Floresta aleatória sobre SVM e vice-versa?

28

Quando alguém usaria Random Forestmais SVMe vice-versa?

Entendo que a cross-validationcomparação de modelos é um aspecto importante da escolha de um modelo, mas aqui eu gostaria de aprender mais sobre regras práticas e heurísticas dos dois métodos.

Alguém pode, por favor, explicar as sutilezas, pontos fortes e fracos dos classificadores, bem como os problemas mais adequados a cada um deles?

Rohit
fonte
11
A pontuação de precisão é a única medida verdadeira de seu desempenho relativo, embora possa haver arte anterior que indique qual tipo de classificador dentre os muitos disponíveis pode ser melhor em seu tipo de dados, se você tiver sorte. Você pode ficar mais constrangido com o tempo que leva para ajustar seus parâmetros. Nesse caso, a Floresta Aleatória provavelmente será uma proposta mais fácil para os dois.
Image_doctor 20/08/2015

Respostas:

29

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.

lanenok
fonte
Apenas para acrescentar: não é fácil para as florestas aleatórias fornecer probabilidades. Você precisa de uma implementação probabilística de uma árvore de decisão ou calibra seu modelo de Floresta Aleatória ajustado posteriormente, se desejar probabilidades 'verdadeiras'.
Archie
5

Os modelos SVM têm melhor desempenho em dados esparsos do que as árvores em geral. Por exemplo, na classificação de documentos, você pode ter milhares, até dezenas de milhares de recursos e, em qualquer vetor de documento, apenas uma pequena fração desses recursos pode ter um valor maior que zero. Provavelmente existem outras diferenças entre eles, mas foi o que encontrei para meus problemas.

Bob Dillon
fonte
3

Realmente depende do que você deseja obter, da aparência de seus dados e etc. O SVM geralmente terá um desempenho melhor em dependências lineares; caso contrário, você precisa de um kernel não linear e a escolha do kernel pode alterar os resultados. Além disso, o SVM é menos interpretável - por exemplo, se você deseja explicar por que a classificação era como era - será não trivial. As árvores de decisão têm melhor interpretabilidade, funcionam mais rapidamente e, se você tiver variáveis ​​categóricas / numéricas, tudo bem: além disso, dependências não lineares são bem tratadas (dado N grande o suficiente). Eles também treinam mais rápido que o SVM em geral, mas tendem a se superestimar ...

Eu também tentaria Regressão Logística - ótimo classificador interpretável)

Para resumir - a regra geral é tentar qualquer coisa e comparar o que oferece melhores resultados / interpretação.

Vitaly Portnoy
fonte
1

Para complementar os bons pontos já mencionados:

De que precisamos de centenas de classificadores para resolver problemas de classificação no mundo real? florestas aleatórias têm maior probabilidade de obter um desempenho melhor do que florestas aleatórias.

Além disso, a maneira como os algoritmos são implementados (e por razões teóricas) as florestas aleatórias são geralmente muito mais rápidas que os SVMs (não lineares). De fato, como @Ianenok, os SVMs tendem a ser inutilizáveis ​​além de 10.000 pontos de dados.

No entanto, sabe-se que os SVMs têm melhor desempenho em alguns conjuntos de dados específicos (imagens, dados de microarray ...).

Portanto, mais uma vez, a validação cruzada é realmente a melhor maneira de saber qual método apresenta melhor desempenho.

Fonte: Floresta aleatória vs SVM

RUser4512
fonte
hum? "florestas aleatórias têm maior probabilidade de obter um desempenho melhor do que florestas aleatórias".
Sanjay Manohar