public final class ItemAverageRecommender extends AbstractRecommender
A simple recommender that always estimates preference for an item to be the average of all known preference values for that item. No information about users is taken into account. This implementation is provided for experimentation; while simple and fast, it may not produce very good recommendations.
Constructor and Description |
---|
ItemAverageRecommender(DataModel dataModel) |
Modifier and Type | Method and Description |
---|---|
float |
estimatePreference(long userID,
long itemID) |
List<RecommendedItem> |
recommend(long userID,
int howMany,
IDRescorer rescorer,
boolean includeKnownItems) |
void |
refresh(Collection<Refreshable> alreadyRefreshed)
Triggers "refresh" -- whatever that means -- of the implementation.
|
void |
removePreference(long userID,
long itemID)
Default implementation which just calls
DataModel.removePreference(long, long) (Object, Object)}. |
void |
setPreference(long userID,
long itemID,
float value)
Default implementation which just calls
DataModel.setPreference(long, long, float) . |
String |
toString() |
getAllOtherItems, getDataModel, getDefaultCandidateItemsStrategy, recommend, recommend, recommend
public ItemAverageRecommender(DataModel dataModel) throws TasteException
TasteException
public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer, boolean includeKnownItems) throws TasteException
userID
- user for which recommendations are to be computedhowMany
- desired number of recommendationsrescorer
- rescoring function to apply before final list of recommendations is determinedincludeKnownItems
- whether to include items already known by the user in recommendationsList
of recommended RecommendedItem
s, ordered from most strongly recommend to
leastTasteException
- if an error occurs while accessing the DataModel
public float estimatePreference(long userID, long itemID) throws TasteException
userID
- user ID whose preference is to be estimateditemID
- item ID to estimate preference forDouble.NaN
TasteException
- if an error occurs while accessing the DataModel
public void setPreference(long userID, long itemID, float value) throws TasteException
AbstractRecommender
Default implementation which just calls DataModel.setPreference(long, long, float)
.
setPreference
in interface Recommender
setPreference
in class AbstractRecommender
userID
- user to set preference foritemID
- item to set preference forvalue
- preference valueTasteException
- if an error occurs while accessing the DataModel
public void removePreference(long userID, long itemID) throws TasteException
AbstractRecommender
Default implementation which just calls DataModel.removePreference(long, long)
(Object, Object)}.
removePreference
in interface Recommender
removePreference
in class AbstractRecommender
userID
- user from which to remove preferenceitemID
- item for which to remove preferenceTasteException
- if an error occurs while accessing the DataModel
public void refresh(Collection<Refreshable> alreadyRefreshed)
Refreshable
Triggers "refresh" -- whatever that means -- of the implementation. The general contract is that any
Refreshable
should always leave itself in a consistent, operational state, and that the refresh
atomically updates internal state from old to new.
alreadyRefreshed
- Refreshable
s that are known to have already been
refreshed as a result of an initial call to a {#refresh(Collection)} method on some
object. This ensure that objects in a refresh dependency graph aren't refreshed twice
needlessly.Copyright © 2008–2017 The Apache Software Foundation. All rights reserved.