我是新手学习mahout。
我了解到 mahout 有五个推荐人。基于用户,基于项目,...
我使用的数据集是movielens 100K
我正在考虑实现与基于用户的电影推荐器略有不同的电影推荐器。即,我不想将用户 ID 作为仅向一个用户推荐电影的输入,而是要获取用户人口统计信息,例如年龄范围、性别、职业和邮政编码。
但问题是如何创建自己的用户相似度方法(原来的方法是以两个长类型用户 id 作为参数)以及如何将 u.user 文件和 u.data 文件结合在一起?
我是新手学习mahout。
我了解到 mahout 有五个推荐人。基于用户,基于项目,...
我使用的数据集是movielens 100K
我正在考虑实现与基于用户的电影推荐器略有不同的电影推荐器。即,我不想将用户 ID 作为仅向一个用户推荐电影的输入,而是要获取用户人口统计信息,例如年龄范围、性别、职业和邮政编码。
但问题是如何创建自己的用户相似度方法(原来的方法是以两个长类型用户 id 作为参数)以及如何将 u.user 文件和 u.data 文件结合在一起?
我现在明白你的问题了。我认为最简单的方法是使用您要查询的人口统计属性临时创建一个虚拟用户,然后为该虚拟用户推荐。
是的,您必须编写一个UserSimilarity
在人口统计数据之上实现您想要的任何相似性规则的代码。
也许还有另一种解决方案。
我实现了自己的 Rescorer 来处理 u.user 文件和输入(性别、年龄范围……)。如果每条信息都相等,那么我将相应的用户 id 放入 FastIDSet。
然后,在 rescore 方法中,我将检查当前用户 id 是否在 FastIDSet 中,如果是,则增加分数。
在我自己的 Recommender 中,我将使用 PlusAnoymousUserDataModel 来获取临时 id,并调用方法 recommen(id, howMany, rescorer)
但是,在我尝试了不同的数据集文件后,我得到了 0 个推荐项目。
我在想这是否是使用 PlusAnoymousUserDataModel 的正确方法。