基于Item的时序协同过滤算法
基于Item的时序协同过滤算法技术方案包括两个步骤:
(1)提取用户商品点击日志、搜索点击日志和商品基本信息等基本数据。然后,去除噪音数据(譬如每天点击商品数达到数以万计的用户)和缺失值数据,构建时序点击流数据,即记录用户每天按照点击时间先后顺序排序的商品行为数据。从而得到如下数据结构:<用户id,商品id,点击时间,点击日期>;
(2)时序协同过滤算法构建模块,根据数据预处理阶段的得到的商品点击时序数据集,在ODPS平台上实现该算法算法,计算商品之间的相关性。
时序协同过滤算法
步骤1:计算商品之间相关性
Map阶段
输入:key(行记录标识), value(用户id,商品id,点击时间,点击日期)
输出:key(用户id,点击日期,点击时间), value(商品id,点击时间)
Reduce阶段:
输入:key(用户id,点击日期,点击时间), value(商品id,点击时间)
输出:ODPS Record(点击日期,商品1, 商品2, 相关性分数)
计算相关性分数算法:
- 计算每个用户每天的点击时间序列对,按照升序排列,即<商品1,点击时间1>,<商品2,点击时间2>,…,<商品n,点击时间n>;
- 在每个用户的商品点击序列中,如果两两商品时间序列对的点击时间差小于等于两个小时,则表示这两个商品具备相关性;计算出有效时序商品序列<商品1,商品2,商品3,…,商品n>;
-
计算商品之间的相关性,公式如下:
,其中score表示相关性分值,delta表示任意两个商品之间的时间排序位置之差
步骤2:计算每天商品之间相关性均值,减少噪声数据,譬如用户无意图的商品点击序列
Map阶段
输入:key(行记录标识), value(点击日期,商品1, 商品2, 相关性分数)
输出:key(点击日期,商品1, 商品2), value(相关性分数)
Reduce阶段
输入:key(点击日期,商品1, 商品2), value(相关性分数)
输出:ODPS Record(商品1, 商品2, 相关性分数均值)
步骤3:计算每月商品之间的相关性,减少噪声数据,去除异常的相关性数据
Map阶段
输入:key(行记录标识), value(商品1, 商品2, 相关性分数)
输出:key(商品1, 商品2), value(相关性分数)
Reduce阶段
输入:key(商品1, 商品2), value(相关性分数)
输出:ODPS Record(商品1, 商品2, 相关性分数均值)
参考:
http://blog.sina.com.cn/s/blog_61c463090102uwqu.html
http://www.aliyun.com/ odps
青春就应该这样绽放 游戏测试:三国时期谁是你最好的兄弟!! 你不得不信的星座秘密