推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

协同过滤Python软件包的实现

更新时间:2019-12-21 10:19:25 大小:900K 上传用户:songhuahua查看TA发布的资源 标签:python数据挖掘 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

数据爆炸时代,信息过载已成为社会性问题。基于物品的协同过滤算法设计并实现一款Python软件包ItemCollab,可有效解决这一问题。ItemCollab包括数据处理、物品推荐和质量评价3个模块。数据处理模块实现数据导入、稀疏度分析和训练集划分功能;物品推荐模块实现了目前主流的几种推荐算法,质量评价模块实现对推荐质量的图表展示功能。ItemCollab扩展性好,便于调用,可帮助用户构建自己的个性化推荐系统。


部分文件列表

文件名 大小
协同过滤Python软件包的实现.pdf 900K

部分页面预览

(完整内容请下载后查看)
计 算 机 与 网 络  
技术论坛  
协同过滤 Python 软件包的实现  
张柏林  
(山东农业大学 信息科学与工程学院,山东 泰安 271018)  
摘
要:数据爆炸时代,信息过载已成为社会性问题。基于物品的协同过滤算法设计并实现一款 Python 软件包  
ItemCollab,可有效解决这一问题。ItemCollab 包括数据处理、物品推荐和质量评价 个模块。数据处理模块实现数据导入、稀疏  
3
度分析和训练集划分功能;物品推荐模块实现了目前主流的几种推荐算法,质量评价模块实现对推荐质量的图表展示功能。  
ItemCollab 扩展性好,便于调用,可帮助用户构建自己的个性化推荐系统。  
关键词:协同过滤;个性化推荐;Python;软件包;数据挖掘  
中图分类号:TP393 文献标志码:  
A
文章编号:1008-1739(2019)04-64-3  
ZHANG Bolin  
(College of Information Science and Engineering, Shandong Agricultural University, Tai an 271018, China)  
爷
The item-based collaborative filtering algorithm is one of the effective ways to solve the social problem of information  
overload. A Python software package ItemCollab is design and implemented in this paper. ItemCollab is composed of such three  
—
modules as data processing, item recommendation and quality evaluation. The data processing module implements such functions as  
data import, sparsity analysis and training set partition; the item recommendation module implements several popular recommendation  
algorithms; the quality evaluation module implements the chart display function of recommended quality. ItemCollab has higher  
expansibility and is convenient for transfer, and users can use it to build their own personalized recommendation system.  
collaborative filtering; personalized recommendation; Python; software package; data mining  
0
引言  
互联网数据呈指数级爆炸式增长,信息过载问题随之而  
来[1]。推荐系统是解决信息过载的有效途径之一,它依据用户  
兴趣从低价值密度的庞大数据中甄别出有效信息,从而提供  
个性化推荐服务。利用一类常见的推荐方法———基于物品的  
协同过滤,实现一个 Python 软件包,使系统开发者不必过多  
关注算法实现细节,仅通过接口调用就可方便简洁地构建自  
己的个性化推荐系统。  
图
1
数据处理模块运行效果图  
规模包含 943 个用户对 1 682 部影片的 10 万评分数据,评分  
区间在 分之间,ItemCollab 选择这一规模数据作为内置  
示例数据集。  
ItemCollab 通过 loadMovieLens(path)来导入内置数据集,  
1
数据处理模块  
1
~5  
此模块主要有数据集导入、稀疏度分析和训练集测试集  
合划分 3 个主要功能,以 ItemCollab 内置的数据集 MovieLens  
同时对外提供接口 loadDatasets(path),参数 path 指定数据所在  
路径,使用户导入.csv 格式的自身数据集。  
为例,运行效果如图 1 所示。  
1.1 数据导入  
1.2 稀疏度分析  
MovieLens (https://grouplens.org/) 是 明 尼 苏 达 大 学  
GroupLens 研究项目提供的具有多种规模的数据集。其中最小  
收稿日期:2018-10-02  
数据稀疏度通常用式(  
1
)进行计算[2]。数据集的稀疏度可  
作为下一步选择合适的推荐算法的依据。  
64  
计 算 机 与 网 络  
技术论坛  
。
(1)  
(3)  
,
式中,Max ,Min 分别表示当前评分体系中的最大值和最小  
值; 表示某一物品的评分结果; 表示 的归一化结果。  
原本的取值范围为,经过式(3)处理后, 的归一化结果  
的取值范围变为[-1,1]。  
1.3 训练集划分  
对同一用户所评分的所有物品按原始数据中的顺序,前  
80%作为训练集,余下 20%作为测试集。训练集和测试集的划  
分是质量评价模块功能实现的前提。  
,
(4)  
2
物品推荐模块  
式中,(  
所有评分物品中每个和 得分相似的某一物品,这里“相似”指  
的是在根据式( )求出的相似度矩阵中存在 的一个得  
分值, ( )表示所有这些物品组成的集合。 表示 与  
的相似度,可由式(  
结果,由式( )计算出。  
, )表示预测出的用户 对物品 的评分; 表示 的  
此模块利用几种常见的基于物品的协同过滤算法来生成  
2
和
推荐,这些算法包括调整后的余弦相似度;基于 Slope One  
各种改进算法,如加权 Slope One、双极 Slope One 以及 SVD  
Slope One  
的
,
2)计算出,  
表示  
对
的归一化评分  
,
。
4
在实际应用中,系统的用户和资源分布情况不同,不同的  
推荐算法表现也不同。调整后的余弦相似度算法在评分结果  
中减去每个用户给出的平均评分,可以很好地处理不同用户  
2.2 算法流程  
输入:待预测用户 ,目标物品 ,评分结果数据集,当前评  
分体系最值;  
输出:用户 对目标物品 的预测值 ( , )  
利用 ( , )计算每 个物品之间的余弦相似度,得到物  
品的相似度矩阵;  
利用 式对评分结果数据集进行归一化处理,得到  
物品的归一化评分矩阵;  
根据式( )和式( )得到的矩阵,利用 ( , )求出  
的归一化预测评分;  
逆向使用  
的评分尺度问题。Lemire  
和 Maclachlan 提出的标准 Slope One  
。
算法根据已有评分和两两物品评分偏差的平均值来预测用户  
对新物品的评分,在物品评分矩阵较为稠密时表现良好。其主  
要优点是简洁,易于实现且运算效率高,但没有考虑矩阵的稀  
疏性,推荐结果易受用户数量、用户偏好的影响。加权 Slope  
One 算法将用户数量作为权重,平衡了其他物品对目标物品的  
影响[3]。双极 Slope One 算法考虑用户偏好问题,将用户对物品  
的厌恶程度也加入评价体系[4]。SVD Slope One 算法通过矩阵  
奇异值分解[5],降低评分矩阵的稀疏度,从而得到更准确的推  
荐结果[6]。  
①
2
②
③
2
3
对
④
式,将式(4)得到的评分转化为正常评分  
区间内的数据,即为最终结果。  
2.3 运行效果  
总的来说,这些算法各有利弊,在不同的数据集上有不同  
的性能和准确度表现,用户应根据数据处理模块得到的数据  
集性质,选择合适的算法。下面以调整后的余弦相似度为例,  
叙述该算法的数学理论、算法流程及运行效果。  
假设一个评分结果数据集如表  
1
所示,第一行表示 user1  
null 表示 user1 没有对物  
1 评分。考察 user1 对物品 1 的预测评分,ItemCollab 的运行  
对物品 2,3,4,5 的评分别是 3,5,4,1,  
品
效果如图 2 所示。  
2.1 数学理论  
表 1 评分结果数据表  
调整后的余弦相似度引入了归一化的思想,它主要包括  
用于衡量两两物品间相似程度的相似度计算式(2),用于对评  
分结果数值变换的归一化式(3),以及用于预测用户对某一物  
品评分结果的评分预测式(4)。  
,
(2)  
式中,( , )表示物品 和物品 的相似度; 表示所有同时对  
和 进行过评分的用户组成的集合; 表示用户 对 的评  
分; 表示 对所有物品评分的平均值。在分子中,对于每个同  
时对 2 个物品评分的用户,将 2 个物品归一化评分结果相乘,  
然后对结果求和。在分母中,对 的归一化评分结果的平方求  
和,然后对 进行相同处理,最后求它们乘积的平方根。  
图 2 物品推荐模块运行效果图  
65  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单
  • 21下载积分 打赏60.00元   3天前

    用户:gsy幸运

  • 21下载积分 打赏70.00元   3天前

    用户:铁蛋锅

  • 21下载积分 打赏65.00元   3天前

    用户:xzxbybd

  • 21下载积分 打赏60.00元   3天前

    用户:jh0355

  • 21下载积分 打赏60.00元   3天前

    用户:w178191520

  • 21下载积分 打赏20.00元   3天前

    用户:jh03551

  • 21下载积分 打赏20.00元   3天前

    用户:sun2152

  • 21下载积分 打赏20.00元   3天前

    用户:kk1957135547

  • 21下载积分 打赏25.00元   3天前

    用户:w1966891335

  • 21下载积分 打赏20.00元   3天前

    用户:xuzhen1

  • 21下载积分 打赏15.00元   3天前

    用户:x15580286248

  • 21下载积分 打赏25.00元   3天前

    用户:pcb

  • 21下载积分 打赏20.00元   3天前

    用户:bhacker

  • 21下载积分 打赏15.00元   3天前

    用户:liqiang9090

  • 21下载积分 打赏25.00元   3天前

    用户:有理想666

  • 21下载积分 打赏15.00元   3天前

    用户:godbox

  • 21下载积分 打赏15.00元   3天前

    用户:aetek

  • 21下载积分 打赏5.00元   3天前

    用户:mulanhk

  • 21下载积分 打赏5.00元   3天前

    用户:JuneLin61

推荐下载