泰迪华南杯数据挖掘竞赛论文报告总结
一、绪论
随着互联网信息过载问题的加剧,推荐系统成为解决信息过载的重要工具。推荐系统通常包含输入功能模块、推荐方法模块和输出功能模块,其中协同过滤算法是核心推荐方法。本文主要研究协同过滤算法,特别是基于用户的最近邻推荐、基于物品的最近邻推荐和Slope One算法,并探讨并行编程和矩阵分解技术SVD对算法的优化效果。
二、协同过滤算法
2.1 基于用户的最近邻推荐
- 算法简介:根据用户对物品的评分向量之间的相似性,搜索目标用户的最近邻居,并基于邻居的评分进行推荐。
- 算法步骤:
- 建立用户模型:使用用户-物品评分矩阵。
- 寻找最近邻居:计算用户之间的相似度,常见的相似度度量方法有余弦相似度和Pearson相关系数。
- 产生推荐物品:根据最近邻居的评分预测目标用户对未评价物品的评分,选择预测评分最高的TOP-N项推荐。
- 代码分析:包括数据读取、相似度计算和推荐列表生成等功能。
2.2 基于物品的最近邻推荐
- 算法简介:根据用户的历史数据给他们推荐与之前的物品相似的物品,通过分析用户行为记录计算物品之间的相似度。
- 特点:可以离线计算物品之间的相似度,满足推荐系统的实时性要求。
2.3 Slope One 算法
- 算法简介:根据用户对物品之间的评分差异来进行推荐,算法简单高效,推荐准确性较高。
- 算法思想:通过计算物品之间的平均偏差值,预测用户对未评价物品的评分。
- 代码分析:包括数据读取、偏置值和权重计算、推荐列表生成等功能。
三、算法优化
3.1 并行编程模式
- MapReduce简介:一种并行编程模式,通过Mapper和Reducer函数处理数据,提高算法效率。
- MapReduce在Python中的实现:使用Parallel Python模块实现MapReduce。
- 实际应用:在基于用户的最近邻推荐过程中使用MapReduce框架,分解任务,提高响应速度。
3.2 简化技术SVD
- SVD简介:通过矩阵分解将原始矩阵转化为易于处理的形式,去除噪声,提取重要特征。
- 应用效果:在MovieLens数据集上实验表明,SVD技术并不能提高推荐效果,甚至可能降低可用信息。
四、实验仿真结果与分析
4.1 数据集
- 数据集:MovieLens 100k数据集,包含943位用户对1682部电影的评分记录。
- 稀疏等级:0.936953。
4.2 度量标准
- 度量标准:平均绝对偏差MAE,MAE越小,推荐质量越高。
4.3 实验结果
- 余弦相似度和Pearson相似度:实验表明,余弦相似度优于Pearson相似度,且近邻个数k为10~50时效果最佳。
- SVD技术:实验表明,SVD技术并不能提高推荐效果,甚至可能降低可用信息。
- Slope One和基于物品最近邻推荐:实验表明,Slope One的推荐性能比基于物品的最近邻推荐稍差,但算法简单高效。
- 推荐算法混合:当用户观看记录与数据库中的用户观看记录共同项较少时,采用基于物品的最近邻推荐算法进行推荐。
五、GUI设计
- 设计工具:基于Python语言的wxpython与wxFormbuilder插件。
- 功能:
- 读入记录用户行为的txt文件,显示用户信息和已观看影片数目。
- 选择推荐算法(Slope One、基于用户的最近邻推荐、基于物品的最近邻推荐、混合算法),设置推荐电影数目,点击推荐按钮生成推荐列表。
- 数据库更新功能:通过基于模型的推荐算法重新计算,更新数据库,使推荐结果更符合实际。