“泰迪杯”挑战赛 - 基于协同过滤的推荐算法研究与 GUI 设计

目录

一、绪论
1.1 研究背景
1.2 推荐算法简述
1.3 论文框架
二、协同过滤算法
2.1 基于用户的最近邻推荐
2.1.1 算法简介
2.1.2 算法表示
2.1.3 代码分析
2.2 基于物品的最近邻推荐
2.3 Slop One 算法
2.3.1 算法简介
2.3.2 算法表示
2.3.3 代码分析
三、算法优化
3.1 并行编程模式
3.1.1 MapReduce 简介
3.1.2 MapReduce 在 python 中的实现
3.1.3MapReduce 的实际应用
3.2 简化技术 SVD
四、实验仿真结果与分析
4.1 数据集
4.2 度量标准
4.3 实验结果
五、GUI 设计
参考文献

一、绪论

1.1 研究背景

随着网络的普及,网络资源不断丰富,网络信息量不断膨胀。用户要在众多的选择中挑选出自己真正需要的信息好比大海捞针,出现了所谓的“信息过载”的现象。信息过载是指的是社会信息超过了个人或系统所能接受、处理或有效利用的范围,并导致故障的状况。信息过滤就是解决信息过载的重要工具。信息过滤通过建立用户和信息产品之间的关系,利用已有的选择过程或相似性关系,一方面挖掘用户潜在感兴趣的信息,另一方面让信息能够展现在对它感兴趣的用户面前。

基于信息过滤技术的推荐系统具有良好的发展应用前景。目前,几乎所有大型的商务系统,如Amazon,cnNow,eBay,dangdang等,都不同程度的使用了各种形式的推荐系统。各种提供个性化服务的Internet站点也需要推荐系统的大力支持。在同趋激烈的竞争环境下,推荐系统能有效保留用户,提高销售。

从总体的层次结构看,推荐系统可以分为三大模块:输入功能模块、推荐方法模块与输入功能模块[1]。推荐方法模块是最为核心的,其中协同过滤算法被广泛应用。

1.2 推荐算法简述

基于不同的推荐应用场景,有不同的推荐算法。主要可以分为以下三类:

基于协同过滤的推荐:根据用户集合对待推荐对象集合的推荐行为,找到用户之间的相关性,据此做出推荐。该推荐算法最大的优点在于并不需要用户和待推荐对象的属性特征,它的推荐来源仅仅是用户对于待推荐对象的行为。这使得推荐并不需要对用户和待推荐对象显式地进行信息采集,而是隐含在业
务系统的日常运作中。

基于内容的推荐:根据待推荐对象属性之间的相关性,当用户喜欢某个对象是,给该用户推荐与该对象相关的其它对象。相关的推荐算法有:决策树算法、支持向量机法、贝叶斯分类算法、人工神经网络算法等等,该类算法通常是将推荐问题化为分类问题,进而求解。

基于知识的推荐:这主要有两种基本类型,一是基于约束推荐,二是基于实例推荐。这两种推荐在过程上比较相似:用户必须指定需求,然后系统设法给出解决方案。如果找不到解决方案,用户必须修改需求。

鉴于本文旨在对协同过滤算法进行研究,故作进一步的阐述。基于协同过滤的推荐面临的最大挑战是稀疏矩阵问题。由于用户评分数据的极端稀疏性,传统的相似性度量方法不能有效地计算目标用户的最近邻居,协同过滤推荐系统的推荐质量难以保证。为此,矩阵分解技术(如SVD)和混合推荐方法被应用于矩阵稀疏问题中,并有较好的改进效果。

1.3 论文框架

考虑到现有的知识水平与实际问题,本文的研究目标为:以推荐系统的协同过滤技术为研究目标,旨在比较基于用户、物品的最近邻推荐与slope one算法性能的优劣,并尝试利用并行计算和矩阵的奇异值分解技术进行算法优化,在最后我们给出了推荐模块的仿真设计,初步完成推荐系统的核心构建。

本文的研究内容主要包括以下几个方面:

  1. 对目前的推荐算法进行了简要的介绍,并对协同过滤算法进行详细研究分析,重点分析了传统的基于物品最近邻、基于用户最近邻以及提出不久的slope one协同过滤算法,研究了三种算法的具体实现过程,并进行仿真实验。

  2. 针对数据量过大,协同过滤算法难以满足系统的实时性要求,我们利用Python的PP模块,采用Map-Reduce思想进行并行编程,减少系统的响应时间。此外,鉴于用户-物品评分矩阵可能产生噪点,我们通过仿真实验探究了矩阵分解技术SVD是否能减少评分矩阵的噪点。

  3. 在实现了协同过滤算法后,我们将其应用于GUI设计中,实行了简单的推荐功能。推荐模块是推荐系统的核心,实现该模块对进一步开发推荐系统很有意义。

二、协同过滤算法

2.1 基于用户的最近邻推荐

2.1.1 算法简介

基于用户的协同过滤是个性化推荐中应用最为广泛的方法,它是基于邻居用户的兴趣爱好预测目标用户的兴趣偏好。算法的基本思想根据用户对物品的评分向量之间的相似性,搜索目标用户的最近邻居,然后根据最近邻居的评分向目标用户产生推荐。

2.1.2 算法表示

该算法分为三步,如下:

步骤1.建立用户模型:协同过滤算法的输入数据通常表示为一个m*n的用户—评价矩阵R,其中m为用户数,n为项目个数, r i , j r_{i,j} ri,j表示第i个用户对第j个物品的评分值:

在这里插入图片描述
在这里插入图片描述
这里的评分值可以是用户的浏览次数,购买次数等隐式的评分,还可以采用显示评分。在本论文中该矩阵是用户对电影的评分矩阵。

步骤2.寻找最近邻居:基于用户的最近邻推荐系统的核心是为一个需要推荐服务的目标用户寻找最似的”邻居“:对一个用户u ,要产生一个根据相似度大小排列的“邻居”集合N = { N1 , N2 , ⋯, Ns} , u 不属于N ,从N1 到Ns ,按相似度 s i m ( u , N i ) sim ( u , N_i) sim(u,Ni) 从大到小排列。其中,用户之间相似度的度量是有较多选择的,常见的有:

Person相关系数:

s i m ( a , b ) = ∑ p ∈ P ( r a , b − r a ˉ ) ( r b , p − r b ˉ ) ∑ p ∈ P ( r a , b − r a ˉ ) 2 ∑ p ∈ P ( r b , p − r b ˉ ) 2 sim(a,b)=\frac{\sum_{p \in P}(r_{a,b}-\bar{r_a})(r_{b,p}-\bar{r_b})}{\sqrt{\sum_{p \in P}(r_{a,b}-\bar{r_a})^2} \sqrt{\sum_{p \in P}(r_{b,p}-\bar{r_b})^2}} sim(a,b)=pP(ra,braˉ)2 pP(rb,prbˉ)2 pP(ra,braˉ)(rb,prbˉ)

其中,sim a b ( , )表示用户 a 与用户 b 之间的相似度(下同), r a ˉ \bar{r_a} ra

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_47922824

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值