我正在研究一个推荐系统的侧项目,并且遇到了这个C++包,它实现了并行SGD(https://github.com/cjlin1/libmf)的BPR协同过滤。该模型将P (#users * k)
和Q (#items * k)
矩阵输出为.txt
文件。我试图将它们相乘,得到估计的R
,然后对每一行进行排序,得到每个客户的最高N
建议。你知道吗
我使用的软件包不提供recommend_top_n
API,因此我一直在研究一种有效的大型密集矩阵乘法解决方案,包括Spark IndexedRowMatrix和Scipy with .h5
文件。你知道吗
尺寸:
P (300,000 * 32) * Q (32 * 250,000) = R (300,000 * 250,000)
我将值四舍五入到可能的最小类型(int16
)。所以得到的R矩阵应该在150 GB
左右。我目前正在使用带有160 GB
RAM(m4.10xlarge)的EC2。我将每个用户的最重要的N
结果写入一个表中,以便仪表板使用,而不是作为web服务提供。你知道吗
我想知道这个案子有什么好办法?我认为最直接的方法是像Strassen算法那样划分用户或项目矩阵。但是,有没有更好的方法来更优雅、更高效地完成它,或者我应该简单地升级我的EC2?我找不到很多关于人们是如何解决这个问题的资料,而且我觉得奇怪的是,没有很多这样的实现。这让我怀疑是否有更好的解决办法。你知道吗
我的主要代码是Python,但是我很乐意使用任何语言或工具来实现这个矩阵乘法和排名。或者我甚至不应该做乘法运算,而是应该尝试使用一个不同的协作过滤包来直接预测顶级的N
推荐?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐