Suponha que você esteja analisando um enorme conjunto de dados na ordem de bilhões de observações por dia, em que cada observação possui algumas milhares de variáveis numéricas e categoriais esparsas e possivelmente redundantes. Digamos que exista um problema de regressão, um problema de classificação binária desequilibrada e uma tarefa de "descobrir quais preditores são mais importantes". Meu pensamento sobre como abordar o problema é:
Ajuste algum modelo preditivo em subamostras progressivamente maiores e maiores (aleatórias) dos dados até:
Ajustar e validar cruzadamente o modelo se torna computacionalmente difícil (por exemplo, excessivamente lento no meu laptop, R fica sem memória etc.), OU
Os valores RMSE de treinamento e teste ou precisão / recall estabilizam.
Se os erros de treinamento e teste não se estabilizarem (1.), use um modelo mais simples e / ou implemente versões multicore ou multinode do modelo e reinicie desde o início.
Se os erros de treinamento e teste estabilizarem (2.):
Se (ou seja, ainda posso executar algoritmos no X_ {subconjunto}, pois ele ainda não é muito grande), tente melhorar o desempenho expandindo o espaço de recursos ou usando um modelo mais complexo e reiniciando desde o início.X s u b
Se for 'grande' e executar análises adicionais forem caras, analise a importância e o final da variável.
Eu pretendo usar pacotes como biglm
, speedglm
, multicore
, e ff
em R inicialmente, e depois usar algoritmos mais complicados e / ou vários nós (no EC2) como necessário.
Isso soa como uma abordagem razoável e, em caso afirmativo, você tem algum conselho ou sugestão específica? Caso contrário, o que você tentaria para um conjunto de dados desse tamanho?