Estes são os meus dados de treinamento: 200.000 exemplos x 10.000 recursos. Portanto, minha matriz de dados de treinamento é - 200.000 x 10.000.
Consegui salvar isso em um arquivo simples sem problemas de memória, salvando todos os conjuntos de dados um por um (um exemplo após o outro) enquanto gerava os recursos para cada exemplo.
Porém, agora, quando uso Milk , SVM light ou qualquer outro algoritmo de aprendizado de máquina, tudo tenta carregar todos os dados de treinamento na memória, em vez de treiná-los um a um. No entanto, tenho apenas 8 GB de RAM, portanto não posso continuar dessa maneira.
Você sabia de qualquer maneira que eu poderia treinar o algoritmo um conjunto de dados por um conjunto de dados? Ou seja, para que a qualquer momento eu tenha apenas um conjunto de dados carregado na memória durante o treinamento.
fonte
Respostas:
Acredito que o termo para esse tipo de aprendizado seja fora do núcleo . Uma sugestão é vowpal wabbit , que possui uma biblioteca R conveniente , além de bibliotecas para muitos outros idiomas.
fonte
Eu sinceramente segundo a sugestão de Zach. O vowpal wabbit é uma excelente opção, e você ficaria surpreso com sua velocidade. Um conjunto de dados de 200k por 10k não é considerado grande pelas normas do vowpal wabbit.
vowpal_wabbit (disponível no formulário de origem via https://github.com/JohnLangford/vowpal_wabbit , uma versão mais antiga está disponível como um pacote padrão no universo Ubuntu) é um aprendiz linear + bilinear online rápido, com entrada muito flexível. Você pode misturar recursos binários e com valores numéricos. Não é necessário numerar os recursos, pois os nomes das variáveis funcionarão "como estão". Possui inúmeras opções, algoritmos, reduções, funções de perda e grande flexibilidade total. Você pode entrar na lista de e-mails (localizá-la no github) e fazer qualquer pergunta. A comunidade é muito qualificada e apoia.
fonte
Eu respondi a pergunta semelhante aqui . O ponto é que a maioria dos algoritmos de aprendizado de máquina / mineração de dados são aprendizes em lote, ou seja, eles carregam todos os dados na memória. Portanto, você precisa de ferramentas diferentes para conjuntos de dados muito grandes. Veja também as ferramentas das perguntas.
O aprendizado on-line é uma maneira de reduzir a pegada de memória dos algoritmos.
fonte