com.planetj.taste.impl.recommender
Class ItemUserAverageRecommender

java.lang.Object
  extended by com.planetj.taste.impl.recommender.AbstractRecommender
      extended by com.planetj.taste.impl.recommender.ItemUserAverageRecommender
All Implemented Interfaces:
Refreshable, Recommender

public final class ItemUserAverageRecommender
extends AbstractRecommender

Like ItemAverageRecommender, except that estimated preferences are adjusted for the Users' average preference value. For example, say user X has not rated item Y. Item Y's average preference value is 3.5. User X's average preference value is 4.2, and the average over all preference values is 4.0. User X prefers items 0.2 higher on average, so, the estimated preference for user X, item Y is 3.5 + 0.2 = 3.7.

Since:
1.4
Author:
Sean Owen

Constructor Summary
ItemUserAverageRecommender(DataModel dataModel)
           
 
Method Summary
 double estimatePreference(java.lang.Object userID, java.lang.Object itemID)
          
 java.util.List<RecommendedItem> recommend(java.lang.Object userID, int howMany, Rescorer<Item> rescorer)
          
 void refresh()
          

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.

 void removePreference(java.lang.Object userID, java.lang.Object itemID)
          

Default implementation which just calls DataModel.removePreference(Object, Object) (Object, Object)}.

 void setPreference(java.lang.Object userID, java.lang.Object itemID, double value)
          

Default implementation which just calls DataModel.setPreference(Object, Object, double).

 java.lang.String toString()
           
 
Methods inherited from class com.planetj.taste.impl.recommender.AbstractRecommender
getAllOtherItems, getDataModel, recommend
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ItemUserAverageRecommender

public ItemUserAverageRecommender(DataModel dataModel)
Method Detail

recommend

@NotNull
public java.util.List<RecommendedItem> recommend(java.lang.Object userID,
                                                         int howMany,
                                                         Rescorer<Item> rescorer)
                                          throws TasteException

Parameters:
userID - user for which recommendations are to be computed
howMany - desired number of recommendations
rescorer - rescoring function to apply before final list of recommendations is determined
Returns:
List of recommended RecommendedItems, ordered from most strongly recommend to least
Throws:
TasteException - if an error occurs while accessing the DataModel

estimatePreference

public double estimatePreference(java.lang.Object userID,
                                 java.lang.Object itemID)
                          throws TasteException

Parameters:
userID - user ID whose preference is to be estimated
itemID - item ID to estimate preference for
Returns:
an estimated preference if the user has not expressed a preference for the item, or else the user's actual preference for the item. If a preference cannot be estimated, returns Double.NaN
Throws:
TasteException - if an error occurs while accessing the DataModel

setPreference

public void setPreference(java.lang.Object userID,
                          java.lang.Object itemID,
                          double value)
                   throws TasteException

Default implementation which just calls DataModel.setPreference(Object, Object, double).

Specified by:
setPreference in interface Recommender
Overrides:
setPreference in class AbstractRecommender
Parameters:
userID - user to set preference for
itemID - item to set preference for
value - preference value
Throws:
TasteException - if an error occurs while accessing the DataModel

removePreference

public void removePreference(java.lang.Object userID,
                             java.lang.Object itemID)
                      throws TasteException

Default implementation which just calls DataModel.removePreference(Object, Object) (Object, Object)}.

Specified by:
removePreference in interface Recommender
Overrides:
removePreference in class AbstractRecommender
Parameters:
userID - user from which to remove preference
itemID - item for which to remove preference
Throws:
TasteException - if an error occurs while accessing the DataModel

refresh

public void refresh()

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.

Specified by:
refresh in interface Refreshable
Overrides:
refresh in class AbstractRecommender

toString

@NotNull
public java.lang.String toString()
Overrides:
toString in class java.lang.Object