Eu quero evitar o excesso de ajustes na floresta aleatória. A esse respeito, pretendo usar mtry, nodesize e maxnodes etc. Você poderia me ajudar a escolher valores para esses parâmetros? Eu estou usando R.
Além disso, se possível, diga-me como posso usar a validação cruzada k-fold para floresta aleatória (em R).
Em relação a outros modelos, as florestas aleatórias são menos propensas a superestimar, mas ainda é algo que você deseja fazer um esforço explícito para evitar. Ajustar os parâmetros do modelo é definitivamente um elemento para evitar o ajuste excessivo, mas não é o único. Na verdade, eu diria que é mais provável que seus recursos de treinamento levem ao ajuste excessivo do que aos parâmetros do modelo, especialmente com florestas aleatórias. Então, acho que a chave é realmente ter um método confiável para avaliar seu modelo e verificar se há sobreajuste mais do que qualquer outra coisa, o que nos leva à sua segunda pergunta.
Como mencionado acima, a execução da validação cruzada permitirá evitar ajustes excessivos. A escolha do seu melhor modelo com base nos resultados do CV levará a um modelo que não se ajustou demais, o que não é necessariamente o caso de algo como um erro fora da bolsa. A maneira mais fácil de executar o CV no R é com o caretpacote. Um exemplo simples está abaixo:
> library(caret)>> data(iris)>> tr <- trainControl(method ="cv", number =5)>> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest
150 samples
4 predictor
3 classes:'setosa','versicolor','virginica'
No pre-processing
Resampling: Cross-Validated (5 fold)
Summary of sample sizes:120,120,120,120,120
Resampling results across tuning parameters:
mtry Accuracy Kappa Accuracy SD Kappa SD
20.960.940.043461350.0651920230.960.940.043461350.0651920240.960.940.043461350.06519202
Accuracy was used to select the optimal model using the largest value.
The final value used for the model was mtry =2.
Muito obrigado pela resposta e conselhos. Só quero saber o quão diferente é o uso de um pacote de interpolação para seleção de recursos quando comparado a selecionar variáveis importantes usando o algoritmo randomForest?
Arun
Isso soa como uma pergunta diferente a ser postada - as diferenças são grandes, pois você executa coisas como seleção de recurso recursivo usando qualquer algoritmo de sua escolha no cursor.
David
@ David O que você quer dizer com "o que não é necessariamente o caso de algo como erro fora da bolsa"? Você quer dizer que a estimativa imediata não é uma boa maneira de evitar ajustes excessivos?
Pierre
5
@ xof6 está correto no sentido de que quanto mais profundidade o modelo tem, mais ele tende a se ajustar demais, mas eu queria adicionar mais alguns parâmetros que podem ser úteis para você. Não sei qual pacote você está usando com R e não estou familiarizado com R, mas acho que deve haver contrapartes desses parâmetros implementados lá.
Número de árvores - Quanto maior esse número, menor a probabilidade de a floresta se superestimar. Isso significa que, como cada árvore de decisão está aprendendo algum aspecto dos dados de treinamento, você tem mais opções, por assim dizer. Número de recursos - esse número constitui quantos recursos cada árvore individual aprende. À medida que esse número aumenta, as árvores se tornam cada vez mais complicadas, portanto, eles são padrões de aprendizado que podem não estar presentes nos dados de teste. Levará algumas experiências para encontrar o valor certo, mas esse é o aprendizado de máquina. Experimente também a profundidade geral, como mencionamos!
Aqui está um link legal sobre isso em stackexchange /stats/111968/random-forest-how-to-handle-overfitting , no entanto, minha experiência geral é quanto mais profundidade o modelo tem, mais ele tende se superestimar.
Isso faz sentido com um único classificador em árvore. No entanto, eu li nesses fóruns que florestas aleatórias são protegidas de excesso de ajuste e que as árvores devem ser cultivadas completamente (ou seja, nodesize = 1 para classificação).
23617 Seanosapien
0
Eu sempre diminuo mtryaté que o erro no conjunto de dados do trem aumente e diminuo o tamanho do nó e a profundidade até que a diferença entre o erro no trem e o conjunto de dados pare para diminuir
@ xof6 está correto no sentido de que quanto mais profundidade o modelo tem, mais ele tende a se ajustar demais, mas eu queria adicionar mais alguns parâmetros que podem ser úteis para você. Não sei qual pacote você está usando com R e não estou familiarizado com R, mas acho que deve haver contrapartes desses parâmetros implementados lá.
Número de árvores - Quanto maior esse número, menor a probabilidade de a floresta se superestimar. Isso significa que, como cada árvore de decisão está aprendendo algum aspecto dos dados de treinamento, você tem mais opções, por assim dizer. Número de recursos - esse número constitui quantos recursos cada árvore individual aprende. À medida que esse número aumenta, as árvores se tornam cada vez mais complicadas, portanto, eles são padrões de aprendizado que podem não estar presentes nos dados de teste. Levará algumas experiências para encontrar o valor certo, mas esse é o aprendizado de máquina. Experimente também a profundidade geral, como mencionamos!
fonte
Aqui está um link legal sobre isso em stackexchange /stats/111968/random-forest-how-to-handle-overfitting , no entanto, minha experiência geral é quanto mais profundidade o modelo tem, mais ele tende se superestimar.
fonte
Eu sempre diminuo
mtry
até que o erro no conjunto de dados do trem aumente e diminuo o tamanho do nó e a profundidade até que a diferença entre o erro no trem e o conjunto de dados pare para diminuirfonte