基础推荐引擎算法

6
我想用Objective-C编写一个基本的推荐系统,并寻找一种适合这项工作的基本算法。不幸的是,现成的系统都不适用于Objective-C。
我将拥有一个项目数据库,每个项目都有标签(类似于“恐怖”,“动作”等电影标签)。每个项目将有大约5个这样的标签。当用户第一次使用该应用程序时,他们的个人资料将根据他们对一系列问题的回答进行设置,并将一些标签与其个人资料相关联。
随着用户继续使用系统并对各种项目进行评分(以讨厌/喜欢/爱为基础),我希望根据反馈调整推荐标签的权重。当他们的档案增长时,我还希望考虑他们的评级中的其他属性,例如电影主题中的“80年代”或导演。
我选择避免常规(或至少流行的)推荐系统,其中它会查找相似的用户来生成推荐。这将有一个巨大的项目数据库和最少的初始用户。
有人可以推荐一个像这样的算法的好起点吗? 我不想重复造轮子,而且已经有了很多资源。

我没有这方面的经验,但我认为这可以在不使用任何引擎或框架的情况下完成,可能会给您更好的灵活性和控制。对于基础部分,我认为它不必更多地做一些标签计数,以及年份范围之类的事情(例如80年代),然后可以计算用户喜欢什么并找到匹配项,或者计算每个电影与用户的匹配得分,并选择前几个。 - altschuler
创建一个知识库然后使用反向链接算法怎么样?这可能有点过度,但我认为那会有效。 - TeaCupApp
1
你坚持使用Objective-C的原因是什么?如果你有一个现成的产品是用不同的语言编写的,我会使用它,可以将该语言编写为代码,或者只需构建接口以在两个模块之间进行通信。 - amit
@altschuler 我希望在没有框架的情况下完成这个,而且我假设可能已经有一个算法适合我的需求。有大量的推荐算法适用于许多不同的情况,所以希望有过去经验的人能够给出好的建议。 - Parrots
2
@Parrots:如果你在C或C++中找到了一个推荐引擎,你可以直接将其链接到你的Objective C客户端中,就像使用Objective C一样容易。如果它是用Python或Ruby等语言编写的,你可以将解释器嵌入到你的Objective C客户端中,或者只需包装一个对标准解释器进程的调用(甚至使用PyPy或等效工具将其创建为半编译本地二进制文件)。并不是所有客户端代码都必须使用Objective C编写。 - abarnert
显示剩余2条评论
2个回答

1
请参考python-recsys: https://github.com/ocelma/python-recsys,这个软件使用SVD算法。我认为它是基础算法但足够有效。所需库是numpy和scipy,它们是用C编写的,并由Python封装。我认为很容易编译和移植到objective-c。

0

你可以使用基于物品的推荐算法,这听起来非常适合你的需求。稍后你可以开始将标签纳入权重考虑范围内,但现在我建议只考虑物品。

你可以在http://www.cs.carleton.edu/cs_comps/0607/recommend/recommender/itembased.html了解更多相关信息。网络上有很多实现它的好例子。

你在帖子中提到的内容被称为基于用户的协同过滤。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接