数据模型: DataModel
FileDataModel | 这是 Mahout 中的一个常见实现类,用于从文件中读取用户-物品交互数据。你可以将交互数据存储在 CSV、文本或其他格式的文件中,然后使用 FileDataModel 来加载这些数据。 |
|
JDBCDataModel | JDBCDataModel:这个实现类用于从数据库中读取用户-物品交互数据。你可以配置它来连接到数据库,并从数据库表中提取推荐所需的数据。 | |
GenericDataModel | 这个实现类允许你以编程方式创建用户-物品交互数据模型。你可以使用它来动态构建数据模型,然后将其传递给推荐算法 | |
DataModelWrapper | 这个类可以包装其他 DataModel 实现,以添加额外的功能或过滤数据。例如,你可以创建一个包装器来过滤出评分大于某个阈值的数据。 |
这些实现类允许根据数据的存储方式和获取方式选择合适的方式来表示用户-物品交互数据。不同的实现类可能具有不同的优缺点,取决于数据源和推荐系统需求。
用户之间相似性度量UserSimilarity
UserSimilarity
接口定义了用户之间相似性度量的通用接口,用于协同过滤推荐系统中。不同的实现类提供了不同的相似性度量方法,以满足不同的推荐系统需求。以下是一些常见的 UserSimilarity
接口的实现类和它们的作用:
PearsonCorrelationSimilarity | 基于皮尔逊相关系数的用户相似性度量。它测量用户评分之间的线性相关性,适用于评分数据 | |
EuclideanDistanceSimilarity | 基于欧氏距离的用户相似性度量。它测量用户之间的距离,适用于评分数据或者其他数值型数据。 | |
TanimotoCoefficientSimilarity | 它用于二进制数据(例如,用户是否喜欢某个物品的布尔值表示)基于谷本系数的用户相似性度量 | |
LogLikelihoodSimilarity | 基于对数似然比的用户相似性度量。它适用于二进制数据,特别是点击数据等 | |
CachingUserSimilarity | 这是一个包装器类,用于缓存底层相似性度量的结果,以提高性能 | |
GenericUserSimilarity | 这个实现类允许你以编程方式定义自定义的用户相似性度量方法 |
推荐器
GenericUserBasedRecommender | 基于用户的协同过滤推荐器。它使用用户-物品交互数据和用户相似性来为目标用户生成推荐。 | |
GenericItemBasedRecommender | 基于物品的协同过滤推荐器。它使用用户-物品交互数据和物品相似性来为目标用户生成推荐。 | |
SVDRecommender | 使用奇异值分解(Singular Value Decomposition)来分解用户-物品交互矩阵,以生成推荐。 | |
ItemAverageRecommender | 根据物品的平均评分来生成推荐。适用于简单的推荐场景 | |
RandomRecommender | 随机推荐器,用于比较基准。 | |
ClusterSimilarityRecommender | 使用集群相似性来生成推荐,适用于一些聚类方法。 | |
NaiveBayesRecommender | 使用朴素贝叶斯算法进行推荐,适用于文本数据等。 | |
GenericBooleanPrefItemBasedRecommender | 适用于二进制偏好(用户是否对物品感兴趣)的基于物品的推荐器。 | |
TreeClusteringRecommender | 使用树状聚类算法来进行推荐。 |
邻居数量 UserNeighborhood
UserNeighborhood
接口是协同过滤推荐系统中用于确定与目标用户相似的一组用户的通用接口。不同的实现类提供了不同的相似性计算方法,以满足不同的推荐系统需求。以下是一些常见的 UserNeighborhood
接口的实现类和它们的功能:
- NearestNUserNeighborhood:这是最常用的用户邻域实现类之一。它根据与目标用户最相似的一组用户来生成推荐。它需要指定一个整数参数,表示要选择的最近邻用户的数量。
- ThresholdUserNeighborhood:这个实现类根据相似性阈值来确定与目标用户相似的用户。只有那些相似性高于指定阈值的用户才会被选择。
- CachingUserNeighborhood:这是一个包装器类,用于缓存底层相似性计算的结果,以提高性能。
- NearestNPerUserNeighborhood:类似于
NearestNUserNeighborhood
,但允许你为每个用户指定不同的最近邻数量。