作者DreamRecord (初心を忘れるべからず)
看板DataScience
标题Re: [问题] 推荐系统除了预先准备结果有更好的方法吗
时间Fri Apr 13 01:47:50 2018
※ 引述《del680202 (HANA)》之铭言:
: 不确定这个版适不适合问这问题
: 想了下应该还算跟机器学习相关就决定PO这里了
: 最近在研究怎麽作个人化的推荐系统
: 目前看到的流程大致分成
: 蒐集user/item清单 -> 建模 -> 打分 -> 排序 -> 储存到某个DB给人呼叫
: 也就是预先作好推荐清单然後给人使用
: 之後就是一个建立一个batch定期更新这个清单
: 建模方法目前常看到的就相似度计算/MF/FM等等
: 当user/item清单非常庞大的时候这是一个很重的作业
: 产出的结果档案也很庞大
: 想问问推荐系统的结果交付除了像这样预先做出推荐清单之外
: 其他还有什麽好的交付方式吗
分享个人浅见
1.
MF的optimization不只有SGD这个选项
还有Alternating Least Square(ALS)
这招有理论保证每次update後training error会下降
(详细可以看田神的机器学习技法第15讲)
当你在update user matrix的时候要先固定item matrix
这时候对每个user vector来说都是彼此之间independent的linear regression问题
因此这部份很适合做平行化
(当然在update item matrix的时候也是一样)
2.
MF在打分和排序这部份
MSR在RecSys 2014发表过一篇paper
idea主要是先offline把item vector透过PCA Tree做indexing
online的时候把使用者的user vector拿去traverse这颗PCA Tree
(详细:
https://goo.gl/n3aWLc)
这个方法是speed和accuracy的trade-off
看你愿意牺牲多少accuracy来换speed up
3.
至於推荐清单的部份
个人觉得使用者应该比较在意排名top k个推荐而不是整个推荐清单
这部份可以透过partial sorting的演算法加速
生成的档案也会比较小
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.165.101
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1523555272.A.4CE.html
※ 编辑: DreamRecord (180.217.165.101), 04/13/2018 01:49:39