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)?
r
machine-learning
classification
cart
Tal Galili
fonte
fonte
Respostas:
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 ,
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
fonte
É 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:
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!
fonte
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/
fonte
kernlab
ae1071
.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!).
fonte
Vale a pena dar uma olhada nos classificadores Naive Bayes . Em R, você pode executar a classificação Naive Bayes nos pacotes e1071 e klaR .
fonte