Tanto quanto eu vi, as opiniões tendem a diferir sobre isso. As melhores práticas certamente ditariam a validação cruzada (especialmente se comparar RFs com outros algoritmos no mesmo conjunto de dados). Por outro lado, a fonte original afirma que o fato de o erro OOB ser calculado durante o treinamento do modelo é um indicador suficiente do desempenho do conjunto de testes. Até Trevor Hastie, em conversas relativamente recentes, afirma que "as florestas aleatórias fornecem validação cruzada gratuita". Intuitivamente, isso faz sentido para mim, se estiver treinando e tentando melhorar um modelo baseado em RF em um conjunto de dados.
Alguém pode apresentar os argumentos a favor e contra a necessidade de validação cruzada com florestas aleatórias?
fonte
Respostas:
Por padrão, a floresta aleatória seleciona 2/3 dos dados para treinamento e descanso para testes de regressão e quase 70% dos dados para treinamento e descanso para testes durante a classificação.Por princípio, uma vez que randomiza a seleção de variáveis durante cada divisão de árvore, não é propenso a super ajuste ao contrário No entanto, se você quiser usar o CV usando nfolds no sklearn, ainda poderá usar o conceito de conjunto de espera, como oob_score (out of bag) = True, que mostra o desempenho do modelo com ou sem o uso do CV. Portanto, em poucas palavras, usando oob_score = True com ou sem nfolds pode dizer se o CV é bom para seus dados.Geralmente, se o seu alvo está seguindo uma determinada distribuição e você não tem muitos dados de observação, o uso do CV não fornecerá muita melhoria.
fonte
Uma diferença importante é que a validação cruzada garante que todas as amostras apareçam nos conjuntos de treinamento e teste, para que 100% dos seus dados sejam usados em algum momento para treinamento e teste.
Dependendo do tamanho do conjunto de dados, a inicialização, a amostragem com substituição e a ocorrência na floresta aleatória não garantirão que as divisões que as árvores veem conterão todas as instâncias. Se você tiver árvores suficientes em sua floresta, a estimativa OOB deverá convergir assintoticamente para o melhor valor da estimativa OOB.
A precisão de ambos os métodos dependerá, até certo ponto, dos dados, portanto, pode ser prudente comparar os dois métodos nos dados específicos que você tem à sua frente e verificar se as estimativas de CV e RF OOB fornecem valores semelhantes.
Caso contrário, valeria a pena explorar novas estimativas da taxa de erro real, talvez por valores muito mais altos de K no CV.
fonte
Eu fiz alguns testes em um conjunto de dados de 50k linhas, usando
sklearn.RandomForestRegressor
.Recebo pontuações significativamente diferentes - estou usando um gini normalizado para a métrica - dependendo se eu uso
rf.oob_prediction_
(0,2927) ou um CV KFold (0,3258 para 7 dobras e 0,3236 para 3 dobras).Com isso, parece que seu argumento sobre "especialmente se comparar RFs com outros algoritmos no mesmo conjunto de dados" é uma forte consideração para usar o CV manual, em vez de confiar na previsão do OOB.
fonte