Estou aplicando um algoritmo de floresta aleatória como um classificador em um conjunto de dados de microarrays que são divididos em dois grupos conhecidos com milhares de recursos. Após a execução inicial, analiso a importância dos recursos e executo o algoritmo em árvore novamente com os 5, 10 e 20 recursos mais importantes. Acho que para todos os recursos, top 10 e 20, a estimativa da taxa de erro OOB é 1,19%, enquanto que para os 5 principais recursos é 0%. Isso parece contra-intuitivo para mim, então eu queria saber se você poderia explicar se estou faltando alguma coisa ou se estou usando a métrica errada.
Estou usando o pacote randomForest em R com ntree = 1000, nodesize = 1 e mtry = sqrt (n)
r
machine-learning
classification
random-forest
danielsbrewer
fonte
fonte
Respostas:
Isso é excesso de seleção de recursos e isso é bem conhecido - veja Ambroise & McLachlan 2002 . O problema é baseado no fato de que a RF é muito inteligente e o número de objetos é muito pequeno. Neste último caso, geralmente é bastante fácil criar atributos aleatoriamente que possam ter boa correlação com a decisão. E quando o número de atributos é grande, você pode estar certo de que alguns totalmente irrelevantes serão preditores muito bons, até o suficiente para formar um cluster que poderá recriar a decisão em 100%, especialmente quando a enorme flexibilidade de RF é considerado. E, assim, torna-se óbvio que, quando instruído a encontrar o melhor subconjunto de atributos possível, o procedimento FS localiza esse cluster.
Uma solução (CV) é fornecida em A & McL, você também pode testar nossa abordagem ao tópico, oO algoritmo Boruta , que basicamente estende o conjunto com "atributos de sombra" feitos aleatoriamente por design e compara sua importância de RF à obtida com atributos reais para julgar quais deles são realmente aleatórios e podem ser removidos; isso é replicado muitas vezes para ser significativo. Boruta é bastante destinado a uma tarefa um pouco diferente, mas, tanto quanto meus testes mostraram, o conjunto resultante está livre do problema de excesso de ajuste do FS.
fonte
Eu pensei em adicionar uma explicação intuitiva para esse padrão.
Em cada árvore de decisão que compreende a floresta aleatória, os dados são iterativamente divididos em dimensões únicas. Fundamentalmente, esse procedimento envolve
1) considerando apenas um pequeno subconjunto selecionado aleatoriamente de todas as variáveis explicativas, e
2) selecionar a variável explicativa mais fortemente associada nesse subconjunto de variáveis selecionadas aleatoriamente para dividir os dados.
Portanto, a probabilidade das n variáveis mais importantes serem selecionadas em qualquer nó específico diminui à medida que o número de variáveis explicativas aumenta. Portanto, se adicionarmos um grande número de variáveis que contribuem com pouco ou nenhum poder explicativo, isso automaticamente leva a um aumento na taxa de erro da floresta. Por outro lado, escolher apenas as variáveis mais importantes para inclusão provavelmente levará a uma diminuição na taxa de erro.
As florestas aleatórias são bastante robustas para isso e normalmente requerem uma adição muito grande desses parâmetros de 'ruído' para reduzir significativamente o desempenho.
fonte