神经网络推荐引擎
Posted
技术标签:
【中文标题】神经网络推荐引擎【英文标题】:Neural Network Recommendation Engine [closed] 【发布时间】:2011-01-19 21:20:40 【问题描述】:如何为推荐引擎设计神经网络。我假设每个用户都需要自己的网络,但是您将如何设计输入和输出以推荐数据库中的项目。有什么好的教程之类的吗?
编辑:我更多的是思考如何设计网络。就像有多少输入神经元以及输出神经元如何指向数据库中的记录一样。您是否会说 6 个输出神经元,将其转换为整数(可以是 0 到 63 之间的任何值),这就是数据库中记录的 ID?人们是这样的吗?
【问题讨论】:
关于您的编辑:不,您没有抓住重点。 NN 的要点是基于统计属性的分类。它们本质上不是贝叶斯,但如果它对你有帮助,你可以这样想:“当我输入某个值的 A 时,输入某个值的 B ,输入某个值的 C ......这个特定的输入集属于某个组的可能性(更准确地说,你问它属于哪个组)?这就是 NN 的目的。您可以灵活地将此模型用于不仅仅是简单的分类,但在其核心,这就是它的作用。 谢谢,您的回答清楚地说明了如何输入数据,但没有说明输出应该/会是什么样子以及它们的含义。这就是我感到困惑的地方。 输出将是数字,但这些数字必须有意义。 “它们的意思”取决于您,网络的设计者,但是以您想要的方式简单地将它们映射到数据库 ID(这是一个没有数学意义的标签)是行不通的。输出不能直接转换为标签。输出是统计模型的值。这就像您试图根据球衣上的号码来预测四分卫的表现一样。除非球衣是按照特定的、可观察到的关于球员的标准来分配的,否则任何这样的预测都是没有意义的。 是的,我认为我的猜测很离谱。 【参考方案1】:首先,您必须确定您推荐的具体内容以及在什么情况下推荐。有很多事情需要考虑。你会考虑“其他买了 X 的用户也买了 Y”吗?你会只推荐性质相似的物品吗?您是否推荐了具有“这一点更有用”类型的关系的项目?
我相信还有更多的决定,而且每个人都有自己的目标。训练一个庞大的网络来处理上述所有问题是非常困难的。
神经网络都归结为同一件事。您有一组给定的输入。您有一个网络拓扑。你有一个激活函数。您对节点的输入有权重。你有输出,你有衡量和纠正错误的方法。每种类型的神经网络可能都有自己的方式来做这些事情,但它们一直都存在(据我所知)。然后,您通过输入一系列具有已知输出结果的输入集来训练网络。您可以在没有过度或不足训练的情况下尽可能多地运行此训练集(这与您的猜测一样多),然后您就可以开始了。
本质上,您的输入集可以描述为一组您认为与手头的基本功能相关的质量(例如:降水、湿度、温度、疾病、年龄、位置、成本、技能、时间)日期、星期几、工作状态和性别都可能在决定一个人在某一天是否会去打高尔夫球方面发挥重要作用)。因此,您必须决定您究竟要推荐什么以及在什么条件下推荐。您的网络输入本质上可以是布尔值(例如,0.0 为假,1.0 为真)或映射到伪连续空间中(其中 0.0 可能表示根本没有,0.45 表示有点,0.8 表示可能,1.0 表示是的)。第二个选项可能会为您提供工具来绘制特定输入的置信度,或者您认为相关的简单数学计算。
希望这会有所帮助。你没有付出太多努力:)
【讨论】:
【参考方案2】:我建议使用无监督学习来研究神经网络,例如 self organising maps。除非您可以非常精确地对数据进行分类以进行学习,否则很难使用正常的监督神经网络来做您想做的事情。自组织地图没有这个问题,因为网络自己学习分类组。
看看这篇描述音乐推荐系统的论文 http://www.springerlink.com/content/xhcyn5rj35cvncvf/
还有更多来自谷歌学者的关于该主题的论文 http://www.google.com.au/search?q=%09+A+Self-Organizing+Map+Based+Knowledge+Discovery+for+Music+Recommendation+Systems+&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:official&client=firefox-a&safe=active
【讨论】:
以上是关于神经网络推荐引擎的主要内容,如果未能解决你的问题,请参考以下文章