2011-05-28 74 views
1

我是一个新手学习mahout。Mahout - 推荐给某种人

我了解到mahout中有5个推荐人。基于用户的,基于项目,...

我所使用的数据集是movielens 100K

我想实现基于用户一个稍微不同的电影推荐。即,而不是将用户ID作为输入来向仅一个用户推荐电影,我想要获取用户人口统计信息,例如年龄范围,性别,职业和邮政编码。

但问题是如何创建我自己的用户相似性方法(原始的是以两个长型用户ID作为参数)以及如何将u.user文件和u.data文件结合在一起?

回答

1

我现在明白你的问题了。我认为最简单的方法是临时创建一个具有所查询的人口统计特性的虚拟用户,然后为该虚拟用户推荐。

是的,您必须编写一个UserSimilarity,它可以在人口统计数据之上实现您想要的任何相似性规则。

+0

谢谢,肖恩!我也收到了你的电子邮件。我还不太清楚。你的意思是我需要为这个用户创建一个临时ID吗?我如何将这两个数据集文件(u.user和u.data)结合在一起来提出建议?谢谢。 – vycon 2011-05-28 16:58:52

+0

让我们跟进user @ list,因为有更多的讨论。 – 2011-05-28 18:38:44

+0

看来我的订阅还没有被批准。 – vycon 2011-05-29 02:17:50

1

也许有另一种解决方案。

我实现我自己的Rescorer来处理u.user文件和输入(性别,年龄范围,...)。如果每条信息都相同,则将相应的用户标识放入FastIDSet中。

然后,在rescore方法中,我将检查当前用户标识是否在FastIDSet中,如果是,则增加分数。

在我自己的推荐人,我会用PlusAnoymousUserDataModel得到一个临时ID,并调用该方法recommen(ID,的howmany,rescorer)

不过,我尝试了不同的数据集文件后,我得到0推荐的项目。

我在想这是否是正确的方式来使用PlusAnoymousUserDataModel。