Pregunta

Estoy probando a Mahout y me pregunto acerca de la entrada DataModel

para la versión no distribuida

El archivo DataModel tiene que seguir: UserID, ItemID, UserPreference El problema es que no tengo estos valores de preferencia de usuario, tenga que precompuirlo ¿Mahout tiene algún método para hacerlo?

Encontré un artículo http:// www.codeproject.com/articles/620717/building-a-recommendation-engine-machine-learning El autor parece que realmente no tenía valores de perferencia del usuario, pero usó org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURRENCE computar de {userid, cuestionix} De lo que puedo decir, MAHOUT parece calcular los valores de la perferencia de los datos y luego cómplee la recomendación, ¿estoy correcto en este caso?

¿Fue útil?

Solución

Si no tiene valores de preferencia de usuario, tal vez no los necesite.Mahout ofrece una implementación para recomendar artículos para usuarios sin tener valores de preferencias.Esto se llama Preferencias booleanas. Básicamente, solo sabes que a algunos usuarios le gusta algún artículo, pero no sabes cuánto.A veces esto está bien.

Bellow es un código de muestra cómo se puede hacer esto.Básicamente, solo la primera línea difiere, donde le dices que su modelo de datos es de tipo BooleanPrefDataModel.Luego, con datos booleanos, puede usar dos tipos de medidas de similitud: loglikeliudsimilitud, TanimotoCoefficientSimilarity.Ambos se pueden utilizar para computar las recomendaciones basadas en el usuario y basadas en artículos.

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);
}

La otra alternativa es calcular los valores de preferencias fuera de MAHOUT y alimentar el modelo de datos en algún otro usuario o algoritmos basados en el artículo.Pero por lo que sé, Mahout no ofrece implementación para los valores de preferencia de computación.

Otros consejos

Puede definir el valor de preferencia para su modelo de datos (pero, depende de su modelo de datos).Por ejemplo, sus elementos de modelo de datos son pistas que son escuchadas por los usuarios.El valor de las preferencias se puede definir que User1 escucha a Tracka X veces.Por lo tanto, se debe definir el valor de las preferencias para el modelo de datos para cada par de ID ÚsterIt IDEMID única.

El ejemplo del modelo de datos:

UserID, ItemID, Preferencias

1,1,3 - 1,2,5 - .... 5,1,2 ... así sucesivamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top