Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Estrutura de Dados

Ao ler a seguinte frase: ".. Algo possível de se trabalhar em memória, mas, caso tivéssemos 300 usuários com 10.000 itens isso seria inviável! Por isso, teríamos que utilizar outra estrutura de dados, algo já resolvido pela biblioteca..." em " Implementando o algoritmo com apache mahout" do "Machine Learning: Introdução ao sistemas de recomendações". Qual estrutura de dados está sendo referida nesse texto, gostaria de saber? Poderia exemplificar?

Desde já grata pela atenção.

1 resposta
solução!

Oi Luciana,

eu não sei se foi um exemplo específico nesse caso, mas o método mais conhecido para essa otimização é o de Gradiente Descendente (Gradient Descent), e ele é usado em algoritmos como o de Regressão Linear e Gradiente Descendente Estocástico (Stochastic Gradient Descent, SGD).

Falando específicamente dos algoritmos do Mahout, eles apresentam uma lista no site. Se você quiser saber só sobre os de Recomendação, olhe aqueles abaixo de Collaborative Filtering.

Aqui tem um exemplo de recomendação com SGD, e aqui uma explicação do gradiente descendente, ambos em português.

Como o destaque que o Mahout tem é justamente por tratar do machine learning escalável (scalable machine learning, SML), eu aposto nos algoritmos citados acima, pois eles reduzirão o volume de dados a serem guardados na memória ou irão reduzir o tamanho da matriz preservando as informações (como o de ALS).

Mas, além disso, também temos as estruturas e algoritmos usados para fazer a distribuição e o processamento desses dados, que, no caso do Mahout, podemos escolher se usaremos MapReduce, Spark, H2O ou Flink, cada um deles tem um funcionamento interior específico, que geralmente envolve processamento paralelo, e dá para saber mais clicando no link da documentação dos algoritmos. Ele tem uma tabela que vai mostrando qual algoritmo roda em qual engine.

Espero ter ajudado a esclarecer, qualquer outra dúvida, só postar :).