Pergunta

Eu estou tentando sair mahout e perguntando sobre a entrada datamodel

para não distribuídos versão

arquivo datamodel tem que seguir:userid itemid, userPreference o problema é que eu não tenho este usuário valores de preferência, peça para ele precompute não mahout ter qualquer método para fazê-lo?

Eu encontrei um artigo http://www.codeproject.com/Articles/620717/Building-A-Recommendation-Engine-Machine-Learning o autor parece realmente não ter preferência do usuário valores, mas ele usou org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURRENCE para calcular a partir de {userid, questionid} o que posso dizer, mahout parece calcular valores de preferência a partir de dados e em seguida, calcular recomendação, estou correto neste caso?

Foi útil?

Solução

Se você não tem a preferência do usuário valores, talvez você não precise deles.Mahout oferece uma implementação para recomendar itens para usuários sem a necessidade de valores de preferência.Isso é chamado de Boolean preferências. Basicamente, basta saber que algum usuário gosta de algum item, mas você não sabe o quanto.Às vezes isso é bom.

Abaixo está um exemplo de código de como isso pode ser feito.Basicamente, só a primeira linha é diferente, onde você dizer que seu modelo de dados é do tipo BooleanPrefDataModel.Em seguida, com dados booleanos você pode usar dois tipos de medidas de similaridade:LogLikelihoodSimilarity, TanimotoCoefficientSimilarity.Ambos podem ser utilizados para calcular com base no usuário e com base no item recomendações.

DataModel model = new GenericBooleanPrefDataModel( GenericBooleanPrefDataModel.toDataMap( new FileDataModel(new File("FILE_NAME"))));

UserSimilarity similarity = new LogLikelihoodSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, similarity, model);
Reecommender recommender =  new GenericUserBasedRecommender(model, neighborhood, similarity);

List<RecommendedItem> recommendations = recommender.recommend(1, 10);

for (RecommendedItem recommendation : recommendations) {
    System.out.println(recommendation);
}

A outra alternativa é calcular os valores de preferência fora do mahout e alimentar o modelo de dados em algum outro usuário ou de item baseados em algoritmos.Mas até onde eu sei, mahout não oferecer uma implementação para computação de valores de preferência.

Outras dicas

Você pode definir o valor de preferências para o seu modelo de dados (mas, depende do seu modelo de dados).Por exemplo, seus itens do modelo de dados são faixas que são ouvidas pelos usuários.O valor das preferências pode ser definido que o User1 ouve o tracka x vezes.Assim, os valores de preferências para o modelo de dados devem ser definidos para cada par exclusivo ItemerID-itemID.

O exemplo do modelo de dados:

UserID, itemID, preferências

1,1,3 - 1,2,5 - .... - 5,1,2 ... assim por diante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top