■
收稿日期
:
2019
-
01
-
03
作者简介
:
张玉叶
(
1973
—),
女
,
硕士
,
济南职业学院计算机学院副教授
,
研究方向
:
网站建设
、
软件开发
、
大数据
。
宿超
(
1970
—),
男
,
硕士
,
山东广播电视大学高级工程师
。
基于
Python
的协同过滤算法的设计与实现
张玉叶
1
,
宿
超
2
(
1.
济南职业学院
,
山东
济南
250014
;
2.
山东广播电视大学
,
山东
济南
250014
)
摘
要
:
协同过滤算法是推荐系统中最常用的推荐算法之一
,
该算法的关键是计算物品或用户的相似度
,
通常采用同现矩阵来实现
,
因同现矩阵是一稀疏矩阵
,
已有的一些推荐系统中通常采用二维数组来存放同现
矩阵
,
利用第三方扩展库
Numpy
来计算推荐评分
,
时间空间效率相对较低
,
利用
Python
内置的序列字典来存
放稀疏矩阵
,
自行编写相应的代码来求解推荐评分
,
可有效提高算法的时间
、
空间效率
。
关键词
:
推荐系统
;
协同过滤
;
同现矩阵
中图分类号
:
TP391.
1
文献标识码
:
A
文章编号
:
1008
-
3340
(
2019
)
02
-
0082
-
04
一
、
引言
随着网络的飞速发展
,
网络信息飞速增长
,
人
们面临着
“
信息过载
”
和
“
信息迷航
”
的问题
。
借助
于搜索引擎
,
人们可以从海量信息中查找到自己
所需的信息
。
但是
,
搜索引擎只适用于在有明确
需求的情况下帮人们查找信息
,
如果在没有明确
需求的情况下
,
搜索引擎则难以帮助人们有效地
筛选信息
。
此时推荐技术应运而生
,
它通过研究
用户的兴趣偏好
,
自动建立起用户和信息之间的
联系
,
从而帮助用户从海量信息中去发掘自己潜
在的需求
。
推荐系统是建立在海量数据挖掘基础上的
,
它通过分析用户的历史数据来了解用户的需求和
兴趣
,
从而将用户感兴趣的信息
、
物品等主动推荐
给用户
,
其本质是建立用户与物品之间的联系
。
常用的推荐算法主要有专家推荐
、
基于统计的推
荐
、
基于内容的推荐和协同过滤推荐等
。
其中协
同过滤推荐是推荐系统中应用最早和最为成功的
算法
。
协同过滤算法的关键是计算相似度及求解推
荐评分
,
在计算时需要用到矩阵的一些运算
。
Py-
thon
的第三方扩展库
Numpy
是一科学计算库
,
提
供了大量的数组及矩阵运算
,
因此很多推荐系统
中都是利用
Numpy
来实现协同过滤算法
,
但因协
同过滤算法中涉及到的矩阵多是稀疏矩阵
,
采用
普通的二维数组存放存在大量的无效存储
,
空间
利用率较低
,
同时利用
Numpy
扩展库也无法进行
算法的优化
,
因此本文利用
Python
的内置序列字
典来存放稀疏矩阵
,
自行编制相应的代码来求解
推荐评分
,
可有效提高算法的时间空间效率
。
二
、
协同过滤算法
协同过滤算法分为基于用户的协同过滤算法
和基于物品的协同过滤算法
。
基于用户的协同过滤算法
(
简称
UserCF),
通
过不同用户对物品的评分来评测用户之间的相似
性
,
基于用户之间的相似性做出推荐
。
简单说就
是给用户推荐和他兴趣相似的其他用户喜欢的物
品
。
基于物品的协同过滤算法
(
简称
ItemCF),
通
过用户对不同物品的评分来评测物品之间的相似
性
,
基于物品之间的相似性做出推荐
。
简单说就
是给用户推荐和他之前喜欢的物品相似的物品
。
2
8