Floresta aleatória em uma configuração de Big Data

8

Eu tenho um conjunto de dados com 5.818.446 linhas e 51 colunas, onde 50 delas são preditores. Minha resposta é quantitativa, por isso estou interessado em um modelo de regressão. Estou tentando ajustar uma floresta aleatória aos meus dados usando o pacote de intercalação. No entanto, não tenho RAM suficiente para fazê-lo.

Eu tenho procurado soluções para o meu problema. Além de ter um computador mais poderoso, parece que posso usar o ensacamento para resolver o meu problema. Portanto, minha ideia é a seguinte:

  1. Criar partições de trem e teste do meu conjunto de dados original

  2. Amostra com substituição de uma pequena parte do meu conjunto de dados de trem em R (digamos 1%, ou seja, 58.185 linhas)

  3. Ajustar uma floresta aleatória a essa pequena parte dos dados

  4. Salve o resultado do modelo

  5. Repita as etapas 2 a 4 mil vezes

  6. Combine esses 1.000 modelos obtidos nas etapas 2-5

No entanto, a própria floresta aleatória usa empacotamento para ajustar o modelo aos dados e, portanto, não tenho certeza se minha abordagem está correta. Portanto, tenho algumas perguntas para você:

i) Minha abordagem está correta? Quero dizer, como não tenho RAM suficiente no meu sistema, é correto ajustar vários modelos de floresta aleatória diferentes a diferentes pedaços de dados e combiná-los depois?

ii) Supondo que minha abordagem esteja correta, 1% dos dados é uma boa regra geral para o tamanho da minha amostra? Mesmo com 1% dos dados, ainda tenho .np

iii) Supondo que minha abordagem esteja correta, há várias repetições para os modelos que devo usar? Pensei em mil por motivos.

Marcus Nunes
fonte
Como ensacamento é um método de gerar cada árvore de decisão em uma floresta aleatória, que tal fazer apenas um DT por 1% e depois combinar as árvores ? Voila, uma floresta aleatória caseira. Em seguida, você pode construir 1000 ou mais árvores e fazer combinações aleatórias de árvores para ver o que funciona melhor nos seus dados de teste; embora você esteja se ajustando aos dados de teste, talvez apenas pegue todos e execute com eles.
Engineero
Ooo! Ou combine-os todos com uma camada de saída totalmente conectada e, em seguida, treine-a com l1regularização, que normalmente reduz o peso dos componentes insignificantes a quase zero, para que você possa ver por inspeção quais árvores devem manter.
Engineero
@Engineero O método que você descreve é ​​geralmente conhecido como "pias de cozinha aleatórias": encaixe um grande número de alunos fracos para formar uma representação básica dos recursos originais (até mesmo decisões difíceis) e depois pesar os nós terminais, talvez com alguma regularização dos pesos dos nós . people.eecs.berkeley.edu/~brecht/kitchensinks.html
Sycorax diz Reinstate Monica
T
2 / Para obter mais informações sobre o número de árvores, consulte minha resposta aqui: stats.stackexchange.com/questions/348245/…
Sycorax diz Reinstate Monica

Respostas:

3

Isso não aborda suas perguntas específicas, mas a motivação por trás delas. O bigRFpacote pode resolver seu problema:

Esta é uma implementação R dos algoritmos Random Forest de Leo Breiman e Adele Cutler para classificação e regressão, com otimizações de desempenho e manipulação de conjuntos de dados que são grandes demais para serem processados ​​na memória.

Além disso:

Para conjuntos de dados grandes, os dados de treinamento, cálculos intermediários e algumas saídas (por exemplo, matrizes de proximidade) podem ser armazenados em cache no disco usando objetos "big.matrix". Isso permite que florestas aleatórias sejam construídas em conjuntos de dados razoavelmente grandes sem atingir os limites de RAM, o que causará troca excessiva de memória virtual pelo sistema operacional.

mkt - Restabelecer Monica
fonte