## org.apache.mahout.cf.taste.impl.recommender
Class ItemAverageRecommender

    java.lang.Object
      org.apache.mahout.cf.taste.impl.recommender.AbstractRecommender
          org.apache.mahout.cf.taste.impl.recommender.ItemAverageRecommender

All Implemented Interfaces:
  Refreshable, Recommender

    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 Summary
`ItemAverageRecommender(DataModel dataModel)`

Method Summary
`float` `estimatePreference(long userID, long itemID)`
`List<RecommendedItem>` `recommend(long userID, int howMany, IDRescorer rescorer)`
`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()`

Methods inherited from class org.apache.mahout.cf.taste.impl.recommender.AbstractRecommender
`getAllOtherItems, getDataModel, getDefaultCandidateItemsStrategy, recommend`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### ItemAverageRecommender

    public ItemAverageRecommender(DataModel dataModel)
                           throws TasteException

Throws:
  `TasteException`

Method Detail

### recommend

    public List<RecommendedItem> recommend(long userID,
                                           int howMany,
                                           IDRescorer 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 `RecommendedItem`s, ordered from most strongly recommend to least
  Throws:
    `TasteException` - if an error occurs while accessing the `DataModel`

### estimatePreference

    public float estimatePreference(long userID,
                                    long 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(long userID,
                              long itemID,
                              float value)
                       throws TasteException

  Description copied from class: `AbstractRecommender`

  Default implementation which just calls `DataModel.setPreference(long, long, float)`.

  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(long userID,
                                 long itemID)
                          throws TasteException

  Description copied from class: `AbstractRecommender`

  Default implementation which just calls `DataModel.removePreference(long, long)` (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(Collection<Refreshable> alreadyRefreshed)

  Description copied from interface: `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.

  Parameters:
    `alreadyRefreshed` - `Refreshable`s that are known to have already been refreshed as a result of an initial call to a `Refreshable.refresh(Collection)` method on some object. This ensure that objects in a refresh dependency graph aren't refreshed twice needlessly.

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

Copyright © 2008–2014 The Apache Software Foundation. All rights reserved.