Come ottenere la preferenza dell'utente in Mahout DataModel
-
21-12-2019 - |
Domanda
Sto provando Mahout e chiedendomi per il dataModel di input
per la versione non distribuita
File DataModel deve seguire: Userid, ItemId, UserpreFereference Il problema è che non ho questi valori di preferenza dell'utente, devono preptentarlo Mahout ha qualche metodo per farlo?
Ho trovato un articolo http:// www.codeproject.com/articles/620717/building-a-recommending-engine-machine-learning .
L'autore sembra non ha davvero valori di pericolo utente, ma ha usato org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURRENCE
per calcolare da {ID utente, questionario}
Da ciò che posso dire, Mahout sembra i valori di perferenza di calcolo dai dati, quindi la raccomandazione calcola, sono corretto in questo caso?
Soluzione
Se non si dispone di valori di preferenza dell'utente, forse non ne hai bisogno.Mahout offre un'implementazione per raccomandare articoli per gli utenti senza avere valori di preferenza.Questo è chiamato preferenze booleane. Fondamentalmente sai solo che qualche utente ama un oggetto, ma non sai quanto.A volte va bene.
Bellow è un codice di esempio come questo può essere fatto.Fondamentalmente solo la prima linea differisce, dove si dice che il tuo modello di dati è di tipo BooleanPrefDataModel
.Poi con i dati booleani è possibile utilizzare due tipi di misure di somiglianza: loglikeliodilarità, TanimotoCoefficientSimilarity
.Entrambi possono essere utilizzati per le raccomandazioni basate sull'utente e sulla voce.
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);
}
.
L'altra alternativa è quella di calcolare i valori delle preferenze al di fuori di Mahout e nutrire il modello di dati in altri algoritmi utente o elementi.Ma per quanto ne so, Mahout non offre implementazione per i valori di preferenza di calcolo.
Altri suggerimenti
È possibile definire il valore di preferenza per il tuo modello di dati (ma dipende dal modello di dati).Ad esempio, i tuoi elementi del modello di dati sono tracce ascoltate dagli utenti.Il valore delle preferenze può essere definito che l'utente1 ascolta Tracka X volte.Pertanto, deve essere definita il valore delle preferenze per il modello di dati per ogni coppia univoca di userID-Itemid.
L'esempio del modello di dati:
Userid, ItemId, Preferenze
1,1,3 - 1,2,5 - ... - 5,1,2 ... così via.