我正在尝试构建一个基于协作过滤的推荐引擎,使用apache。我已经能够对我的数据运行recommendation_example.py,并取得了很好的效果。(MSE ~ 0.9)。我提出的一些具体问题是:
java.util.NoSuchElementException异常,并返回那些流行项。org.apache.hadoop.mapred.FileAlreadyExistsException。一种方法是侦听并行线程上的传入数据,使用model.save(sc, "target/tmp/<some target>")保存数据,然后在收到重要数据后重新加载模型。我在这里迷失了,如何实现这一点。如果我能在这里找到一些方向,那将是很有帮助的。
发布于 2016-03-01 14:46:28
对于第一部分,您可以找到item_id,item_id出现的次数。你可以使用星星之火的地图和reduceByKey函数。在此之后,找到前10/20项具有最大计数。你也可以根据最近的项目给出重量。
对于第二部分,每次都可以使用新名称保存模型。我通常使用当前的日期和时间在运行时创建一个文件夹名,并使用相同的名称从保存的文件夹重新加载模型。您将始终需要再次训练模型,使用过去的数据和收到的新数据,然后使用模型进行预测。
发布于 2016-03-01 22:20:58
除了使用像Spark这样的平台之外,还有一些非常好的技术(用于ex )。链接预测的非负矩阵因式分解,预测2组之间的关联.其他非常有效(和良好)的推荐技术有:- 1. Thompson抽样,2. Arm (多臂带)。很大程度上取决于原始数据集。原始数据集是如何分布的。我建议将上述方法应用于5%的原始数据集,建立一个假设,使用A/B测试,预测链接并向前推进。
同样,所有这些技术都与平台无关。我还建议从无到有,而不是使用spark这样的平台,因为这些平台只对大型数据集有用。为了实现可伸缩性,您将来总是可以迁移到这些平台。
希望能帮上忙!
https://stackoverflow.com/questions/35723274
复制相似问题