340 likes | 539 Views
基于大数据的推荐算法研究. 报告人:孙远帅 E-mail : sunyuan_2008@aliyun.com. 2. 1. 课题背景与研究意义. TopKS 算法. 3. 基于项目层次结构相似性的推荐算法. 4. 5. 论文框架. 矩阵分解并行化. 总结与展望. 新闻推荐. 图书推荐. 淘宝网. 当当网. 央广网. 亚马逊. 课题背景. 启发式的协同过滤 代表的方法: KNN 基于模型的协同协同过滤 代表的方法:矩阵分解. 课题背景. user1(3, 2, ?, 4) user2(2, 3, ?, ?)
E N D
基于大数据的推荐算法研究 报告人:孙远帅 E-mail : sunyuan_2008@aliyun.com
2 1 课题背景与研究意义 TopKS算法 3 基于项目层次结构相似性的推荐算法 4 5 论文框架 矩阵分解并行化 总结与展望
新闻推荐 图书推荐 淘宝网 当当网 央广网 亚马逊
课题背景 • 启发式的协同过滤 代表的方法:KNN • 基于模型的协同协同过滤 代表的方法:矩阵分解
课题背景 user1(3, 2, ?, 4) user2(2, 3, ?, ?) user3(?, ?, 4, 3) user4(4, ?, ?, 1) user5(?, 5, 5, ?) • 余弦距离 • 皮尔逊相关系数 • ………
课题背景 . ≈ . = u2 v2 X21*y21 + x22* y22 + x23 * y23 ≈ 3 • 交替下降 • 梯度下降
研究意义 • 用户量猛增 • 项目(商品、新闻等)数量猛增 • 推荐算法的可扩展性不强
TopkS算法 TopKS是Top K Similarity的简写,即最大的前K个相似度。主要包含以下三部分: • 采用余弦距离和皮尔逊相关公式累加性特点 • 引入倒排索引数据结构 • 结合TopK思想
TopkS算法 余弦距离 皮尔逊相关系数
TopkS算法 倒排索引
TopkS算法 计算u1和其他用户的相似度
TopkS算法 假设查找用户ui的最近邻用户,当前计算到用户ui和uj第k1个共同项目(i != j),而ui和uj有k个共同评分项目,则分为两种情况: • 如果uj已经在最近邻列表LS中,则直接更新列表中的相似度; • 如果uj不在最近邻列表LS中,则计算用户ui和uj可能的最大值,下面是余弦距离和皮尔逊相关系数可能的最大值: 余弦距离
TopkS算法 皮尔逊相关系数 计算出 之后, 是 否 从LS中剔除最小值,插入uj 把uj加入黑名单
TopkS算法 不同稀疏度对近邻计算的影响
TopkS算法 不同规模用户数量上的比较实验
TopkS算法 不同K值对执行时间的影响
基于项目层次结构相似性的推荐算法 节点之间的距离度量: 然后利用最短路径算法Dijkstra结合TopK思想找到最相近的项目; 相似度度量
基于项目层次结构相似性的推荐算法 三种算法效果对比
矩阵分解并行化 目标函数 采用梯度下降方法,V的更新公式通常是: 这里 注意: 是一个常数,对因子矩阵中的每个元素都一样
矩阵分解并行化 把步长修改为因子矩阵中每个元素一个值,如下: , V的更新公式变为: 这里 同理,用户因子矩阵U也可以近似为矩阵乘除的形式.
矩阵分解并行化 MapReduce编程模型
矩阵分解并行化 结果矩阵C 右矩阵B 左矩阵A 介绍矩阵的分布式乘法时,假设: 左矩阵A是m×s 右矩阵B是s×n 结果矩阵C是m×n C = AB • 内积法 • 外积法 • 分块矩阵乘法
矩阵分解并行化 内积法 …. ….
矩阵分解并行化 内积法数据流程图 内积法中Reduce任务与数据的对应关系 并发粒度:m×n×s 中间shuffle数据量: n个A矩阵,m个B矩阵,即2s个C矩阵 注:R_i_j表示Reduce任务的编号
矩阵分解并行化 外积法 + + =
矩阵分解并行化 外积法数据流程图 外积法中Reduce任务与数据的对应关系 并发粒度:s 中间数据量: Job1的shuffle 数据量:一个A矩阵和一个B矩阵 Job1到Job2的IO数据量:s个C矩阵 Job2的shuffle数据量:远小于s个C矩阵 注:R_i_j表示Reduce任务的编号
矩阵分解并行化 把左矩阵划分为m1×s1等大小的矩阵,右矩阵划分为s1×n1的等大小矩阵,则有: M = (m - 1)/m1 + 1 S = (s - 1)/s1 + 1 N = (n - 1)/n1 + 1 并发粒度:M×N×S 中间数据量:N个A矩阵和M个B矩阵
矩阵分解并行化 矩阵规模与运行时间的关系
矩阵分解并行化 矩阵稀疏度与运行时间的关系
矩阵分解并行化 分块策略与运行时间的关系 分块策略与中间数据量的大小关系
矩阵分解并行化 工作节点数量与运行时间的关系
总结与展望 本文工作 • 对传统的相似度度量方法进行改进 • 提出基于项目标签层次结构的相似度度量方法 • 矩阵分解算法并行化 未来展望 • 利用MPI分布式模型并行化矩阵分解模型; • 实现通过构造传统推荐算法的近似算法把传统推荐算法并行化