Ola, pessoal. Tudo bem?
Estou tentando aplicar o conteudo do curso de Machine Learning: Introdução ao sistemas de recomendações em um dataset de filmes do Kaggle.
Esse dataset possui dois arquivos de avaliacoes, dentro do padrao aceito pelo FileDataModel
, ou seja, userID,itemID[,preference[,timestamp]]
(se removida a primeira linha).
Um dos arquios se chama ratings_small.csv
, o qual conta com aproximadamente 10 mil linhas e para o qual o modelo de recomendacao roda perfeitamente. O outro arquivo, ratings.csv
, conta com mais de 26 milhoes de linhas, e o modelo de recomendacoes explode, exibindo as seguintes mensagens no log:
19/07/23 02:20:06 INFO FileDataModel: Reading file info...
19/07/23 02:20:09 INFO FileDataModel: Processed 1000000 lines
19/07/23 02:20:10 INFO FileDataModel: Processed 2000000 lines
19/07/23 02:20:11 INFO FileDataModel: Processed 3000000 lines
19/07/23 02:20:12 INFO FileDataModel: Processed 4000000 lines
19/07/23 02:20:14 INFO FileDataModel: Processed 5000000 lines
19/07/23 02:20:16 INFO FileDataModel: Processed 6000000 lines
19/07/23 02:20:17 INFO FileDataModel: Processed 7000000 lines
19/07/23 02:20:20 INFO FileDataModel: Processed 8000000 lines
19/07/23 02:20:24 INFO FileDataModel: Processed 9000000 lines
19/07/23 02:20:33 INFO FileDataModel: Processed 10000000 lines
[error] (run-main-0) java.lang.OutOfMemoryError: GC overhead limit exceeded
[error] java.lang.OutOfMemoryError: GC overhead limit exceeded
.
.
.
Estou ciente de que essa eh uma situacao extrema e que, para fins didaticos, o dataset menor ja eh o suficiente. Mas no mundo real, onde industrias contam com gigas e gigas de dados armazenados e mais sendo gerados a todo instante, como esse problema eh abordado?
Imagino que uma das linhas possiveis seja utilizando tecnologias de Big Data para processamento paralelo, como o Spark ou Hadoop. Porem, alguem tem uma resposta mais palpavel, para que eu consiga aplicar alguma tecnica ou tecnologia e conseguir treinar esse modelo em datasets gigantescos?
Codigo fonte (Scala + Mahout): https://github.com/crissilvaeng/movies-recommender
Dataset no Kaggle: https://www.kaggle.com/rounakbanik/the-movies-dataset)
Obrigada!