Alternativas às árvores de classificação, com melhor desempenho preditivo (por exemplo: CV)?

23

Estou procurando uma alternativa para as árvores de classificação que possam gerar melhor poder preditivo.

Os dados com os quais estou lidando têm fatores para as variáveis ​​explicativas e explicadas.

Lembro-me de cruzar florestas aleatórias e redes neurais nesse contexto, embora nunca as tenha experimentado antes. Existe outro bom candidato para essa tarefa de modelagem (em R, obviamente)?

Tal Galili
fonte
5
Não se preocupe com redes neurais, esta é uma tecnologia obsoleta.
1
@mbq você ainda mantém esta afirmação?
Rhombidodecahedron
@rhombidodecahedron Claro, brinque com NNs a partir de 2010 e você concorda. Além disso, duvido que qualquer modelo de DL traga algo para uma tabela com dados de (presumivelmente) tamanho tão pequeno.

Respostas:

25

Eu acho que valeria a pena tentar a Random Forests ( randomForest ); algumas referências foram fornecidas em resposta a perguntas relacionadas: Seleção de recursos para o modelo "final" ao executar a validação cruzada no aprendizado de máquina ; Os modelos CART podem ser robustos? . O reforço / ensacamento os torna mais estáveis ​​do que um único CART que é conhecido por ser muito sensível a pequenas perturbações. Alguns autores argumentaram que o desempenho foi tão bom quanto o SVM ou o Gradient Boosting Machines (veja, por exemplo, Cutler et al., 2009). Eu acho que eles certamente superam os NNs.

Boulesteix e Strobl fornecem uma boa visão geral de vários classificadores na seleção ideal de classificadores e viés negativo na estimativa da taxa de erro: um estudo empírico sobre previsão de alta dimensão (BMC MRM 2009 9: 85). Ouvi falar de outro bom estudo na IV reunião do EAM , que deve estar sendo analisada em Statistics in Medicine ,

João Maroco , Dina Silva, Manuela Guerreiro, Alexandre de Mendonça. As florestas aleatórias superam as redes neurais, suportam máquinas de vetores e classificadores de análise discriminante? Estudo de caso na evolução para demência em idosos com queixa cognitiva

Também gosto do pacote de sinal de intercalação : está bem documentado e permite comparar a precisão preditiva de diferentes classificadores no mesmo conjunto de dados. Ele cuida do gerenciamento de amostras de treinamento / teste, precisão de computação etc. em poucas funções fáceis de usar.

O pacote glmnet , de Friedman e col., Implementa o GLM penalizado (consulte a revisão no Journal of Statistical Software ), para que você permaneça em uma estrutura de modelagem conhecida.

Caso contrário, você também pode procurar por classificadores baseados em regras de associação (consulte a Exibição de tarefas do CRAN no Machine Learning ou os 10 principais algoritmos na mineração de dados para obter uma introdução suave a alguns deles).

Gostaria de mencionar outra abordagem interessante que pretendo reimplementar no R (na verdade, é o código Matlab), que é a Análise de Correspondência Discriminante de Hervé Abdi. Embora inicialmente desenvolvido para lidar com estudos de pequenas amostras com muitas variáveis ​​explicativas (eventualmente agrupadas em blocos coerentes), parece combinar eficientemente a DA clássica com técnicas de redução de dados.

Referências

  1. Cutler, A., Cutler, DR, e Stevens, JR (2009). Tree-Based Methods , in High-Dimensional Data Analysis in Cancer Research , Li, X. e Xu, R. (eds.), Pp. 83-101, Springer.
  2. Saeys, Y., Inza, I. e Larrañaga, P. (2007). Uma revisão das técnicas de seleção de recursos em bioinformática . Bioinformatics, 23 (19): 2507-2517.
chl
fonte
2
+1 ótima resposta. Também concordo com a recomendação de sinal de intercalação.
Shane
12

É importante ter em mente que não existe um algoritmo que seja sempre melhor que outros. Conforme declarado por Wolpert e Macready, "quaisquer dois algoritmos são equivalentes quando a média é de seu desempenho em todos os problemas possíveis". (Veja Wikipedia para detalhes.)

Para um determinado aplicativo, o "melhor" geralmente é o mais estreitamente alinhado ao seu aplicativo em termos de suposições, tipos de dados que ele pode manipular, hipóteses que ele representa e assim por diante.

Portanto, é uma boa ideia caracterizar seus dados de acordo com critérios como:

  • Eu tenho um conjunto de dados muito grande ou um modesto?
  • A dimensionalidade é alta?
  • As variáveis ​​são numéricas (contínuas / discretas) ou simbólicas, ou uma mistura e / ou podem ser transformadas, se necessário?
  • As variáveis ​​são provavelmente independentes ou bastante dependentes?
  • É provável que haja variáveis ​​redundantes, barulhentas ou irrelevantes?
  • Quero poder inspecionar o modelo gerado e tentar entendê-lo?

Ao responder a essas perguntas, você pode eliminar alguns algoritmos e identificar outros como potencialmente relevantes e, em seguida, talvez acabar com um pequeno conjunto de métodos candidatos que você escolheu de maneira inteligente e que provavelmente será útil.

Desculpe por não lhe dar uma resposta simples, mas espero que isso ajude!

Tampão irlandês
fonte
2
+1 Ame a cotação. ("quaisquer dois algoritmos são equivalentes quando a média é de desempenho em todos os problemas possíveis.")
Assad Ebrahim
8

Para a classificação de várias classes, as máquinas de vetores de suporte também são uma boa opção. Normalmente, uso o pacote R kernlab para isso.

Consulte o documento JSS a seguir para uma boa discussão: http://www.jstatsoft.org/v15/i09/

Shane
fonte
@ Tal Aqui está uma revisão justa (ou acho que sim) do SVM vs. RF: Uma comparação abrangente de florestas aleatórias e máquinas de vetores de suporte para classificação de câncer baseada em microarrays, j.mp/ab7U8V . Eu também prefiro kernlaba e1071.
chl
2
@chl Não gosto deste artigo enquanto ele foi feito da perspectiva de aprendizado do SVM - fazer uma repetição de um algoritmo estocástico (RF) é apenas um lixo; o apêndice 2 também mostra o quão ruim pode ser aplicar o fluxo de trabalho SVM ao RF. No entanto, eu concordo que quase sempre o SVM pode ser ajustado para superar a RF por causa do truque do kernel (que a RF comum não possui, embora não signifique que não possa em geral), mas com um esforço de otimização crescente exponencialmente.
@mbq Na verdade, este é um bom ponto.
chl
3

Como já mencionado, as florestas aleatórias são uma "atualização" natural e, atualmente, o SVM é geralmente a técnica recomendada.

Quero acrescentar que, mais frequentemente do que não mudar para o SVM, produz resultados muito decepcionantes. O problema é que, embora técnicas como árvores aleatórias sejam quase triviais de usar, o SVM é um pouco mais complicado.

Achei este artigo inestimável quando usei o SVM pela primeira vez (Um Guia Prático de Suporte à Clássico de Vetores) http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

No R, você pode usar o pacote e1071 para SVM, que é vinculado à biblioteca libSVM padrão de fato (pelo menos em software livre!).

Dr G
fonte
2
O kernlab também usa libsvm para a otimização, portanto não há uma grande diferença nesse sentido (embora seja muito mais flexível).
Shane