12

如何为推荐引擎设计神经网络。我假设每个用户都需要自己的网络,但是您将如何设计输入和输出以推荐数据库中的项目。有什么好的教程之类的吗?

编辑:我更多地考虑如何设计一个网络。就像有多少输入神经元以及输出神经元如何指向数据库中的记录一样。您是否会说 6 个输出神经元,将其转换为整数(可以是 0 到 63 之间的任何值),这就是数据库中记录的 ID?人们是这样的吗?

4

2 回答 2

8

我建议研究使用无监督学习的神经网络,例如自组织地图。除非您可以非常精确地对数据进行分类以进行学习,否则很难使用正常的监督神经网络来做您想做的事情。自组织地图没有这个问题,因为网络自己学习分类组。

看看这篇描述音乐推荐系统的论文 http://www.springerlink.com/content/xhcyn5rj35cvncvf/

以及更多来自谷歌学者关于该主题的论文 http://www.google.com.au/search?q=%09+A+Self-Organizing+Map+Based+Knowledge+Discovery+for+Music+Recommendation+系统+&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:official&client=firefox-a&safe=active

于 2010-02-23T01:00:25.523 回答
2

首先,您必须确定您推荐的具体内容以及在什么情况下推荐。有很多事情需要考虑。你会考虑“其他买了 X 的用户也买了 Y”吗?你会只推荐性质相似的物品吗?您是否在推荐具有这种与那种关系更有用的项目?

我敢肯定还有更多的决定,每个人都有自己的目标。训练一个巨大的网络来处理上述所有问题是非常困难的。

神经网络都归结为同一件事。您有一组给定的输入。您有一个网络拓扑。你有一个激活函数。您对节点的输入有权重。你有输出,你有衡量和纠正错误的方法。每种类型的神经网络可能都有自己的方式来做这些事情,但它们一直存在(据我所知)。然后,您通过输入一系列具有已知输出结果的输入集来训练网络。您可以根据需要尽可能多地运行此训练集,而不会过度或训练不足(这与您的猜测和下一个人的猜测一样多),然后您就可以开始了。

从本质上讲,您的输入集可以描述为一组您认为与手头的潜在功能相关的质量(例如:降水、湿度、温度、疾病、年龄、位置、成本、技能、一天中的时间、一天每周、工作状态和性别都可能在决定一个人是否会在某一天去打高尔夫球方面发挥重要作用)。因此,您必须决定您究竟要推荐什么以及在什么条件下推荐。您的网络输入本质上可以是布尔值(例如,0.0 为假,1.0 为真)或映射到伪连续空间中(其中 0.0 可能表示根本没有,0.45 表示有点,0.8 表示可能,1.0 表示是的)。第二个选项可以为您提供工具来映射某个输入的置信水平,或者您认为相关的简单数学计算。

希望这有帮助。你没有付出太多努力:)

于 2010-02-23T00:25:14.680 回答