我正在研究一个特定的问题,需要构建一个推荐系统。一般的问题描述如下:每个用户注册了(假设)x门课程(c1, c2, c3, .. cx)。根据每门课程,我需要向用户提供(假设)前5个提示/推荐(例如,可能有用的学习材料等)。我需要应用协同元素来学习哪些推荐对用户有帮助。
我查看了像Apache Mahout Taste这样的推荐引擎,但我无法以一种与展示的例子相似的方式来建模我的问题。(用户与一门或多门课程相关联,以及每个推荐/提示可能与一门或多门课程相关联的额外过滤条件让我感到困惑。)
请告诉我是否有好的方法来建模这样的问题?任何指向文档/例子的指引将非常受欢迎。我刚刚开始在这个领域的研究,所以如果我误解了任何概念,请多包涵。
谢谢,
@Vivek
回答:
这可能太简单了,不需要推荐系统。如果每门课程都有一套相关的材料,那么显然,选择课程c1就意味着他们应该拥有该课程的相关材料。也许可以根据所有材料的受欢迎程度进行排名。这可能非常简单,并且能满足你的大部分需求。
如果你想将这建模为协同过滤,你可以;我不知道你有多少数据。如果你只有少数用户和课程,数据将过于稀疏,无法提供有用的答案。
你的用户与两件事有关:课程和材料。你不想推荐课程,而是材料。我会构建两个数据模型:一个包含用户-课程信息,另一个包含用户-材料购买信息。使用用户-课程数据作为用户相似性实现的基础,定义用户-用户相似性。然后将它与NearestNUserNeighborhood、GenericUserBasedRecommender结合,但使用另一个用户-材料数据模型。
你将使用基于课程的用户-用户相似性来从材料中进行推荐。