Basicamente, existem duas maneiras comuns de aprender com grandes conjuntos de dados (quando você se depara com restrições de tempo / espaço):
- Trapaça :) - use apenas um subconjunto "gerenciável" para treinamento. A perda de precisão pode ser insignificante por causa da lei dos retornos decrescentes - o desempenho preditivo do modelo geralmente diminui muito antes de todos os dados de treinamento serem incorporados a ele.
- Computação paralela - divida o problema em partes menores e resolva cada uma em uma máquina / processador separado. Porém, você precisa de uma versão paralela do algoritmo, mas a boa notícia é que muitos algoritmos comuns são naturalmente paralelos: vizinho mais próximo, árvores de decisão etc.
Existem outros métodos? Existe alguma regra prática quando usar cada uma? Quais são as desvantagens de cada abordagem?
fonte
Em vez de usar apenas um subconjunto, você pode usar vários subconjuntos como no aprendizado em mini-lotes (por exemplo, descida estocástica do gradiente). Dessa forma, você ainda utilizaria todos os seus dados.
fonte
Conjuntos como ensacamento ou mistura - nenhum dado é desperdiçado, o problema automaticamente se torna trivialmente paralelo e pode haver ganhos significativos de precisão / robustez.
fonte