Casos de uso RBF SVM (vs regressão logística e floresta aleatória)

10

O Support Vector Machines com kernel de função de base radial é um classificador supervisionado de uso geral.

Embora conheça os fundamentos teóricos desses SVMs e seus pontos fortes, não conheço os casos em que eles são o método preferido. Então, existe uma classe de problemas para os quais os SVMs de RBF são superiores a outras técnicas de ML? (Em termos de pontuação, ou outros - como robustez, facilidade para iniciar, interpretabilidade etc.)

Estou perguntando, como minha abordagem padrão é centrada em regressão logística (talvez com algumas interações), floresta aleatória e um pouco de redes neurais. Nenhum dos meus amigos que praticam ML (alguns são vencedores do Kaggle) é um usuário do SVM (mas pode ser um artefato da minha comunidade ou os problemas com os quais eles lidam).

Piotr Migdal
fonte

Respostas:

8

Tentarei responder a essa pergunta com uma combinação de evidências publicadas, experiência pessoal e especulação.

A) evidência publicada.

O único artigo que conheço que ajuda a responder à pergunta é Delgado et al 2014 - Precisamos de centenas de classificadores para resolver problemas de classificação no mundo real? - JMLR, que executa centenas de algoritmos e implementações diferentes em 121 conjuntos de dados da UCI. Eles descobriram que, embora o RBF SVM não seja o "melhor" algoritmo (são florestas aleatórias, se bem me lembro), ele está entre os 3 principais (ou 5).

Se você considerar que a seleção de conjuntos de dados é uma "boa amostra" de problemas do mundo real, o SVM é definitivamente um algoritmo que deve ser tentado em novos problemas, mas é preciso tentar a floresta aleatória primeiro!

Os limites para generalizar esse resultado são que os conjuntos de dados são quase todos altos e magros (n >> p), não muito escassos - o que eu especulo deve ser mais um problema para a RF e não muito grande (ambos n e p).

Finalmente, ainda com as evidências publicadas, recomendo dois sites que comparem implementações diferentes de florestas aleatórias:

B) Experiência pessoal.

Acredito que artigos como Delgado e todos são muito importantes para a comunidade de aprendizado de máquina, então tentei replicar seus resultados sob algumas condições diferentes. Eu executei cerca de 15 algoritmos diferentes em mais de 100 conjuntos de dados binários (do conjunto de conjuntos de dados de Delgado). Eu também acho que fui mais cuidadoso na seleção de hiperparâmetros do que eles.

Meus resultados são que o SVM foi o "melhor algoritmo" (classificação média 4,9). Minha opinião é que o SVM passou na RF porque o conjunto de dados original continha muitos problemas de várias classes - que discutirei na parte da especulação - deve ser um problema para o SVM.

EDIT (Jun / 16):

Mas a RF é muito mais rápida e foi o segundo melhor algoritmo (classificação média 5,6), seguido por gbm (5,8), nnets (7,2) e assim por diante). Não tentei regressão logística padrão nesses problemas, mas tentei uma rede elástica (L1 e L2 regularizada LR), mas ela não teve um bom desempenho (classificação média 8,3) ~

Ainda não terminei de analisar os resultados ou de redigir o artigo, por isso não posso sequer apontar para um relatório técnico com os resultados. Felizmente, em algumas semanas eu posso reeditar esta resposta e apontar para um relatório técnico com os resultados.

O artigo está disponível em http://arxiv.org/abs/1606.00930. Após a análise completa, RF e SVM são quase equivalentes em termos de taxa de erro esperada e o SVM é o mais rápido (para minha surpresa !!). Não sou mais tão enfático ao recomendar RF (por motivos de velocidade).

Portanto, minha experiência pessoal é que, embora o SVM possa fornecer um pouco mais de precisão, quase sempre é uma opção melhor usar um RF.

Também para problemas maiores, pode ser impossível usar um solucionador de SVM em lote (nunca usei um solucionador de SVM on-line, como o LASVM ou outros).

Finalmente, só usei regressão logística em uma situação. Eu estava fazendo uma engenharia de recursos "intensa" em um problema de classificação de imagens (como - combinar ou não duas descrições diferentes da imagem e a dimensionalidade das descrições). E usei a regressão logística para selecionar entre as muitas alternativas (porque não há pesquisa de hiperparâmetro na LR). Uma vez estabelecidos os melhores recursos (de acordo com a LR), usamos um RF (selecionando os melhores hiperparâmetros) para obter o classificador final.

C) Especulação

Nunca trabalhei seriamente em problemas multiclasses, mas sinto que o SVM não é tão bom com eles. O problema não é o problema entre soluções um contra um ou um contra todos, mas todas as implementações que eu conheço usarão os mesmos hiperparâmetros para todos os classificadores (OVO ou OVA). Selecionar os hiperparâmetros corretos para SVM é tão caro que nenhuma das implementações de prateleira que conheço fará uma pesquisa para cada classificador. Especulo que este é um problema para o SVM (mas não para o RF !!).

Então, novamente, para problemas com várias classes, eu iria direto para a RF.

Jacques Wainer
fonte
Uma ótima resposta! Por acaso você tem um post, caderno ou script em sua replicação do experimento Delgado et al? (Parâmetros de ajustes, variáveis de escala são geralmente tão importante quanto a escolha de um algoritmo, assim, sem que seja difícil fazer fortes reivindicações sobre algoritmo de superioridade.)
Piotr Migdal
@PiotrMigdal - sem postagem no blog / caderno - ainda está escrevendo o jornal. A pesquisa do hiperparâmetro foi: RBF C = gama = , RF mtry = ntrees = 500 a 3000 por 500. Todos os atributos foram normalizados (média = 0, dp = 1). 25,20,25,210,215215,210.5,26,21.5,230.5,1,2p
Jacques Wainer
0

Não tenho privilégios suficientes para poder escrever comentários, portanto, apenas fornecerei minhas entradas / observações aqui como resposta.

Na minha experiência, os Classificadores de vetores de suporte (SVC) tendem a ser iguais ou superiores aos outros métodos quando as classes binárias são equilibradas. Para classes desequilibradas, o SVC tende a apresentar um desempenho ruim.

Não costumo lidar com problemas multiclasses, mas também tenho visto bons resultados com o SVC para problemas multiclasses.

Outra coisa que notei é que a maldição da dimensão não parece afetar o SVC tanto quanto outras técnicas de modelagem. Em outras palavras, à medida que adiciono mais termos no modelo, as outras técnicas começam a apresentar um desempenho ruim no conjunto de teste (ou de reserva) em comparação com o conjunto de treinamento. Mas nem tanto quando eu uso o SVC. Por esse motivo, se a parcimônia do modelo não for sua prioridade, o SVC pode ser uma opção melhor, pois você pode lançar muitos termos sem o excesso de ajuste dos outros métodos.

Um dos problemas que tenho com o SVC é que ele não fornece implicitamente uma medida (como a probabilidade prevista) para poder classificar as observações. Você pode usar o Platt Scaling (implementado no pacote sklearn.svm em Python), mas vi algumas inconsistências. (Posso compartilhar os detalhes se alguém estiver interessado.)

Não tenho certeza se isso realmente responde à sua pergunta, mas estas são minhas observações. Espero que ajude.

Vishal
fonte
0

RF e (RBF) SVM têm diferentes teorias por trás deles, mas assumindo que você tenha dados suficientes, eles têm um desempenho semelhante. Ambos podem aprender funções complexas e lidar muito bem com variáveis ​​e outliers barulhentas e pouco informativas.

Se você está tentando obter melhores resultados para algo como um kaggle, agrupa vários modelos, incluindo RF e SVM de qualquer maneira.

Em configurações sem distorção, você pode considerar o quão difícil é implementar o modelo, colocá-lo em produção, fazer uma previsão, interpretar, explicar para um gerente etc.

O SVM (RBF linear ou altamente regularizado) seria definitivamente preferido se você tiver uma pequena quantidade de dados ou estiver lidando com um curso de dimensionalidade. Existem algumas razões para isso, uma é que é melhor procurar um hiperplano de margem máxima em vez de uma série de melhores divisões em seus recursos, também geralmente não há necessidade de um limite complexo, porque no espaço dimensional alto haverá um hiperplano que pode separar os dados de qualquer maneira. Outra questão é que a RF é mais difícil de ajustar (tem mais parâmetros para ajustar), então você precisa de mais dados.

Outro pensamento, a validação cruzada pode ser muito barata e rápida para SVM, especialmente LOOCV. Como apenas algumas amostras são vetores de suporte (nem sempre), não é necessário treinar novamente o classificador a cada dobra, mas apenas quando os dados que estão agora no conjunto de testes eram vetores de suporte antes. Isso também pode facilitar o aprendizado on-line.

Além disso, pode ser mais barato armazenar vetores de suporte do que árvores completas.

Muitas vezes, é melhor criar modelo probabilístico do que classificador. Portanto, faça o modelo primeiro e decida depois. Nesse caso, a regressão logística será preferida. E você ainda pode usar kernels e regularização para fazê-lo se comportar como você deseja. Além disso, você não usará a RF para responder perguntas como: corrigir idade, estilo de vida, sexo e educação, beber álcool aumenta a chance de tingir ataques cardíacos?

Achei interessante algum recurso adicional: https://www.quora.com/What-are-the-advantages-of-different-classification-algorithms http://videolectures.net/solomon_caruana_wslmw/

rep_ho
fonte