|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.mahout.cf.taste.impl.recommender.AbstractRecommender
org.apache.mahout.cf.taste.impl.recommender.TreeClusteringRecommender
public final class TreeClusteringRecommender
A Recommender
that clusters users, then determines the
clusters' top recommendations. This implementation builds clusters by repeatedly merging clusters until
only a certain number remain, meaning that each cluster is sort of a tree of other clusters.
This Recommender
therefore has a few properties to note:
estimatePreference(long, long)
may well return Double.NaN
; it does so when asked to
estimate preference for an item for which no preference is expressed in the users in the cluster.
Constructor Summary | |
---|---|
TreeClusteringRecommender(DataModel dataModel,
ClusterSimilarity clusterSimilarity,
double clusteringThreshold)
|
|
TreeClusteringRecommender(DataModel dataModel,
ClusterSimilarity clusterSimilarity,
double clusteringThreshold,
double samplingRate)
|
|
TreeClusteringRecommender(DataModel dataModel,
ClusterSimilarity clusterSimilarity,
int numClusters)
|
|
TreeClusteringRecommender(DataModel dataModel,
ClusterSimilarity clusterSimilarity,
int numClusters,
double samplingRate)
|
Method Summary | |
---|---|
float |
estimatePreference(long userID,
long itemID)
|
FastIDSet |
getCluster(long userID)
Returns the cluster of users to which the given user, denoted by user ID, belongs. |
FastIDSet[] |
getClusters()
Returns all clusters of users. |
java.util.List<RecommendedItem> |
recommend(long userID,
int howMany,
IDRescorer rescorer)
|
void |
refresh(java.util.Collection<Refreshable> alreadyRefreshed)
Triggers "refresh" -- whatever that means -- of the implementation. |
java.lang.String |
toString()
|
Methods inherited from class org.apache.mahout.cf.taste.impl.recommender.AbstractRecommender |
---|
getAllOtherItems, getDataModel, getDefaultCandidateItemsStrategy, recommend, removePreference, setPreference |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.apache.mahout.cf.taste.recommender.Recommender |
---|
getDataModel, recommend, removePreference, setPreference |
Constructor Detail |
---|
public TreeClusteringRecommender(DataModel dataModel, ClusterSimilarity clusterSimilarity, int numClusters) throws TasteException
dataModel
- DataModel
which provdes usersclusterSimilarity
- ClusterSimilarity
used to compute cluster similaritynumClusters
- desired number of clusters to create
java.lang.IllegalArgumentException
- if arguments are null
, or numClusters
is less than 2
TasteException
public TreeClusteringRecommender(DataModel dataModel, ClusterSimilarity clusterSimilarity, int numClusters, double samplingRate) throws TasteException
dataModel
- DataModel
which provdes usersclusterSimilarity
- ClusterSimilarity
used to compute cluster similaritynumClusters
- desired number of clusters to createsamplingRate
- percentage of all cluster-cluster pairs to consider when finding next-most-similar clusters.
Decreasing this value from 1.0 can increase performance at the cost of accuracy
java.lang.IllegalArgumentException
- if arguments are null
, or numClusters
is less than 2, or samplingRate
is Double.NaN
or nonpositive or greater than 1.0
TasteException
public TreeClusteringRecommender(DataModel dataModel, ClusterSimilarity clusterSimilarity, double clusteringThreshold) throws TasteException
dataModel
- DataModel
which provdes usersclusterSimilarity
- ClusterSimilarity
used to compute cluster similarityclusteringThreshold
- clustering similarity threshold; clusters will be aggregated into larger clusters until the next
two nearest clusters' similarity drops below this threshold
java.lang.IllegalArgumentException
- if arguments are null
, or clusteringThreshold
is Double.NaN
TasteException
public TreeClusteringRecommender(DataModel dataModel, ClusterSimilarity clusterSimilarity, double clusteringThreshold, double samplingRate) throws TasteException
dataModel
- DataModel
which provides usersclusterSimilarity
- ClusterSimilarity
used to compute cluster similarityclusteringThreshold
- clustering similarity threshold; clusters will be aggregated into larger clusters until the next
two nearest clusters' similarity drops below this thresholdsamplingRate
- percentage of all cluster-cluster pairs to consider when finding next-most-similar clusters.
Decreasing this value from 1.0 can increase performance at the cost of accuracy
java.lang.IllegalArgumentException
- if arguments are null
, or clusteringThreshold
is Double.NaN
,
or samplingRate is Double.NaN
or nonpositive or greater than 1.0
TasteException
Method Detail |
---|
public java.util.List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException
recommend
in interface Recommender
userID
- user for which recommendations are to be computedhowMany
- desired number of recommendationsrescorer
- rescoring function to apply before final list of recommendations is determined
List
of recommended RecommendedItem
s, ordered from most strongly recommend to
least
TasteException
- if an error occurs while accessing the DataModel
public float estimatePreference(long userID, long itemID) throws TasteException
estimatePreference
in interface Recommender
userID
- user ID whose preference is to be estimateditemID
- item ID to estimate preference for
Double.NaN
TasteException
- if an error occurs while accessing the DataModel
public FastIDSet getCluster(long userID) throws TasteException
ClusteringRecommender
Returns the cluster of users to which the given user, denoted by user ID, belongs.
getCluster
in interface ClusteringRecommender
userID
- user ID for which to find a cluster
FastIDSet
of IDs of users in the requested user's cluster
TasteException
- if an error occurs while accessing the DataModel
public FastIDSet[] getClusters() throws TasteException
ClusteringRecommender
Returns all clusters of users.
getClusters
in interface ClusteringRecommender
FastIDSet
s of user IDs
TasteException
- if an error occurs while accessing the DataModel
public void refresh(java.util.Collection<Refreshable> alreadyRefreshed)
Refreshable
Triggers "refresh" -- whatever that means -- of the implementation. The general contract is that any should always leave itself in a consistent, operational state, and that the refresh atomically updates internal state from old to new.
refresh
in interface Refreshable
alreadyRefreshed
- s that are known to have already been
refreshed as a result of an initial call to a method on some
object. This ensure that objects in a refresh dependency graph aren't refreshed twice
needlessly.public java.lang.String toString()
toString
in class java.lang.Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |