当前位置:首页 期刊杂志

一种改进的协同过滤的商品推荐方法

时间:2024-05-04

薛 亮,徐 慧,冯尊磊,贾俊铖

(1.苏州城市学院 计算机工程系,江苏 苏州 215104; 2.苏州大学文正学院 计算机工程系,江苏 苏州 215104; 3.浙江大学 计算机科学与技术学院,浙江 杭州 310027; 4.苏州大学 计算机科学与技术学院,江苏 苏州 215006)

0 引 言

随着全球科技的飞速发展,并且在当今社会疫情的背景下,网络购物已经成为人们日常购物的重要方式。根据中国报告大厅网络购物行业数据统计,网络在线的零售交易额正在以每年多于40%的速度增长,在国内电子购物发展非常迅猛的背景下,在线商品交易的用户数量已经高达8.6亿[1]。但根据商务部的相关反映,网络购物中的一些违法犯罪行为突出,例如:侵犯消费者的合法权益、制售假冒伪劣商品等,已经成为侵权假冒的关键手段,为消费者推荐优质的商品也就变得非常必要。针对上述商品信息过载的问题,为了方便、便捷、有效地为用户提供所需的商品,推荐算法逐渐成为研究热点。通过分析用户行为以及物品内容特征,经过一系列的数据处理,帮助用户获得需要的信息。推荐算法在网络购物产品中得到了较为广泛的应用,但是商家为了提高销售量使得推荐的商品鱼龙混杂,导致消费者难以分辨出自己想要的商品。因此,想要为用户进行个性化推荐,就必须要对推荐算法有较为深入的研究。

目前,大众使用的较为主流的推荐算法是协同过滤算法,但传统的协同过滤算法常常伴有数据稀疏性以及冷启动的问题。因此,国内外许多专家提出了众多改进算法。Choi Y等人[2]对用户的情感进行分类研究,发现可以通过该方式影响电子商务推荐的结果,他们认为可以通过计算机相关技术、机器学习等方法,将用户的情感分类,再根据分类之后所得到的结果对用户进行个性化推荐。该系统采用了Naive Bayes(朴素贝叶斯)、SVM和决策树等方法,通过大量数据集的实验分析可知决策树具有更好的分类效果。杨茂保等人[3]通过分析用户的评论从而发现用户潜在的偏好,系统主要采用协同过滤算法分析用户在评论中的情感因素,预测用户之后的产品需求。

根据上述的研究内容,该文的电子商品推荐采用改进的协同过滤算法实现,通过降低活跃用户对相似度的影响并且将电子商品本身属性的质量通过标准差计算获得其离散性并将该离散值融入进相似度计算的公式,对电子商品的推荐值进行加权处理从而优化推荐的预测效果。最后,在真实的数据集Movie-Lens上对算法的性能进行测试,并且利用人工数据集Mobile-Data在设计实现的电子商品推荐系统上进行推荐性能的实验测试。

1 传统的协同过滤算法

协同过滤推荐算法(collaborative filtering,CF)[4]是迄今为止较为热门的推荐技术。协同过滤推荐算法的目标是根据用户之前的喜好和其他志同道合的用户的意见,为该用户或者新用户推荐新项目或者预测他们将对哪些项目感兴趣。总的来说,该算法可以实现对某些特定项目的推荐与预测功能。传统的协同过滤算法主要分为两类:一是基于用户的相似度计算进行相关推荐,二是基于物品的相似度计算进行相关推荐。基于用户的协同过滤推荐算法(user collaborative filtering,User-CF)是通过计算用户之间的相似度得到与目标用户志趣相投的用户,并根据相似度较高的用户评分,将评分较高的项目信息推荐给目标用户。基于物品的协同过滤推荐算法(item collaborative filtering,Item-CF)是通过计算物品之间的相似度,举例来说:如果用户喜欢物品a,就会向用户推荐与物品a具有较高相似性的其他物品信息[1]。该文主要采用基于用户的协同过滤推荐算法,该算法的主要流程如图1所示。

图1 传统的User-CF算法流程

1.1 构建用户评分矩阵

用户评分矩阵数据模型的构建,主要是根据用户对物品的评分表,构建出相应的评分矩阵。针对一个系统具有多个用户与物品信息,记用户数目为M,物品数目为N,从而根据用户对物品的评分构建出M×N的用户-物品的评分矩阵,R=M×N,故Rij表示用户i对物品j的评分数据。User表示用户用Useri表征,Item表示物品用Itemj表征。为了更加直观地表现数据模型的构建过程,假设用户数M=3,物品数N=4,则构建出一个R=3×4阶的用户-评分矩阵,见表1。其中数据越低表示评分越低,若数值为0表示没有进行相关的评分。

表1 用户评分

续表1

根据上述表格分析:假设要为User1推荐物品,就先要找到与该用户有相同兴趣的用户,通过观察上表发现User2和User1均对Item1具有相同的评分,然而User3对该物品的评分较低为1分,因此选取User2为最近邻,可见User2对Item3的评分为4分并且User1未对该物品做出任何评分,故可以将Item3推荐给User1,预测User1对Item3的评分也是4分。这里将用户对电子商品的评分作为输入,设计出评分表。该表包含多个用户的评分组合。设计评分矩阵如图2所示。

图2 物品的评分矩阵

1.2 传统的相似度计算

推荐系统的设计还离不开计算模型中的相似度,在构建完数据模型得到用户对电子商品的评分矩阵后,根据该矩阵计算数据模型内用户之间的相似度,继而得到相似度矩阵。常见的计算用户之间相似度的方法主要有:余弦相似度(cos)[4]、杰卡德系数(Jaccard)[5]以及皮尔逊相关系数(Pearson)[6]等。具体的计算公式如下:

(1)基于余弦的相似度(cos):

(1)

(2)杰卡德系数(Jaccard):

(2)

(3)皮尔逊相关系数(Pearson):

Pearson(u,v)=

(3)

值得指出的是,基于上述传统的相似度计算公式,在用户评分矩阵极其稀疏的情况下很难通过直接计算得到真实的最近邻集合。例如,用户A的评分数据为(1,2,1),用户B与用户C的评分分别为(5,4,5)、(4,5,4)。通过观察分析可以知道用户B与用户C更为相似,但是通过皮尔逊相关系数计算得到用户A与用户C最为相似,因此可见无法获得真正的最近邻。

1.3 评分预测推荐结果

传统的基于用户评分信息的协同过滤算法[7]在获得用户的相似度矩阵后,通过K近邻的方法获取与目标用户最为相似的K个用户集合,再通过加权评价公式进行项目推荐的预测评分。

常用的预测评分的公式如下:

(4)

该公式是推荐算法评分预测常用的公式,u,v表示两个不同的用户,i表示物品,Rv,i表示用户v对物品i的评分数据,S(u,v)是用户u与用户v之间的相似度值。通过计算用户对与i相似的商品给出的评分总和,以计算对用户u商品的评分预测,其本质上是对基于皮尔逊相关系数计算后所得的相似度以及最近邻评分的加权平均数,然后将所计算得到的加权平均数进行排序,从而进行评分预测。

2 改进的基于用户的协同过滤算法

综上所述,传统的基于用户评分信息的协同过滤算法(user collaborative filtering,User-CF),利用一般的相似度计算公式时会受到活跃用户大量的评分信息以及商品本身质量属性的影响。首先,为了消除上述相关因素对相似度计算的影响,该文将活跃用户对商品相似度的贡献程度降低并且通过计算标准差降低电子商品本身质量对相似度的影响,将两者计算获得的系数与皮尔逊相关系数(Pearson)结合。其次,采取对推荐项目的推荐值进行加权处理,从而得到优化后的结果。

2.1 改进的相似度计算

在推荐系统中,最为主要的工作就是计算用户之间的相似度。因此,考虑到活跃用户以及商品自身质量对相似度计算结果的影响,该文对相似度计算的改进工作主要如下:

(1)活跃用户的惩罚。

活跃用户对商品的评分行为过多,由于该类浏览过多的商品对商品的甄别性较差,因此,非活跃用户的评分比活跃用户的评分更具有价值。该文参考John S. Breese[8]论文中所提出的IUF(inverse user frequency),用于降低活跃用户对商品评分的贡献程度,具体的实现公式如下:

(5)

该公式对活跃用户进行了软性的惩罚,其中N(u)代表当前训练的用户数。

(2)降低电子商品本身质量的影响。

该文利用标准差的计算方式表示电子商品本身的质量因素对用户评分数值的影响。评分的标准差的值越高,表明电子商品本身的质量因素对用户评分的影响比重就越大,反之,则表明影响的程度越小。其离散性降低商品本身质量[9]对用户评分的计算公式如下:

(6)

该文采用皮尔逊相关系数计算用户之间的相似度,为提高该公式的精确度,将式(5)与式(6)融入公式(3),从而降低活跃用户对相似度值的贡献程度以及电子商品本身质量对其的影响,可得修正后的公式如下:

simNP(u,v)=

(7)

2.2 选择最近邻

最近邻的搜索(nearest neighbor search,NNS)[9-14]主要是在相似度计算的基础上,通过获得的相似度矩阵,找到最近邻集合。在K近邻实现的过程中,整个数据分为训练数据和测试的样本数据,在分类问题中,使用以下步骤实现K近邻的算法:

(1)确定K的数值,该K值是特征空间中训练模型的数量;

(2)根据之前相似度计算获得各个用户之间的数据点的距离;

(3)在训练模型数据中搜索与最接近K值的各个数据点,其中这些数据点必须在训练模型的观察点内;

(4)计算K值与各个数据点之间的距离,从而获得最近邻集合。

举例说明根据图3的特征空间图,可以获得最近邻集合:

图3 训练模型特征空间图

从该特征空间图中可以找出5的五个最近邻,即为NNS(5)=[4,1,8,2,7]。获得最近邻集合为后续进行评分预测奠定了较好的基础,在该集合内排序越靠近前面说明与目标项目的相关程度越大。

2.3 算法整体流程

通过改进的皮尔逊相关系数的公式计算获得用户的相似度矩阵,利用K近邻的方式选择K个最为相似的用户,对此K个用户的相似度值进行推荐值的计算公式如下:

VSim(u,v)=SimNP(u,v)*K*Rvi

(8)

然后通过如下公式进行评分预测:

NPu,i=

(9)

其中,VSim(u,v)是用户u与用户v加权后的两者相似度的值。对比公式(4),此公式引入用户u与用户v对已有电子商品评分的均值,优化了原先的加权评价公式。最后,使用该公式进行对用户的预测推荐。本算法的具体流程如下:

算法:改进的协同过滤算法。

Input:User-Item即用户与项目的评分矩阵。

Output:预测推荐的项目列表。

Steps:

(1)初始化:根据读入的用户、评分和项目的数据文件,通过预处理构建User-Item的评分矩阵;

(3)Foru=1 in User

(4)通过公式(5)计算对活跃用户的惩罚系数IUF;

(5)根据公式(6)计算商品本身质量的离散系数Di;

(6)将步骤4、5计算获得的IUF与Di运用于公式(7),从而利用改进后的皮尔逊相关系数公式计算用户之间的相似性SimNP(u,v);

(7)End

(8)Forn=1 toNdo

(9)遍历当前用户的相似度利用选择K近邻的方法,选择K个相似度值较高的用户形成最近邻集合;

(10)End

(11)Forn=1 toKdo

(12)遍历(该过程在for循环内实现)最近邻集合,通过公式(8)计算当前项目的推荐值;

(13)利用公式(9)进行加权评分预测;

(14)最后根据预测评分的结果进行遍历,从而得到最终推荐的项目列表。

(15)End

3 实 验

3.1 数据集

MovieLens100K是电影评分数据集[15],由943个用户对1 682部电影的100 000个电影的评分组成,评分范围为1分至5分。数据文件中主要分为用户编号(userId)、电影编号(itemId)、电影评分(rating)以及时间戳(timestamp),并且该文件中的数据是随机排序的。在实验过程中,将MovieLens数据集以7∶3的比例随机分为训练集与测试集。

人工数据集Mobile-Data,是利用Intel Core i5的CPU,8 GB运行内存进行爬虫收集数据,该数据集主要收集汇总了手机信息。将该人工数据集Mobile-Data用于测试电子商品系统的推荐功能。

3.2 算法评价标准

算法评测指标是计算准确率(Precision)、召回率(Recall)以及覆盖率(Cov),将该算法(记为new Pearson collaborative filtering,NP-CF)与传统的User-CF算法进行比较。算法评测的方法如下:

(1)准确率。

准确率是用于衡量推荐算法对整个数据集中训练集最终做出来多少正确的预测。计算公式如下:

(10)

(2)召回率。

召回率是衡量从测试的数据集中为用户推荐的信息获得反馈的数据占用户实际点击感兴趣的数据的比例。计算公式如下:

(11)

公式(10)与(11)中,R(u)表示推荐算法对用户u所推荐的项目,T(u)表示用户u在所训练的数据集上面喜欢的项目集合。

(3)覆盖率。

覆盖率[16]表明预测推荐的项目对目标用户是否有效,该值越大则说明此算法预测推荐的项目其分布就越均匀。计算公式如下:

(12)

其中,Nu表示预测评分为用户u所推荐的所有项目的数目,n表示整个数据集中所有项目的数目。

3.3 实验结果与分析

文中算法(NP-CF)与传统的基于用户的协同过滤算法(User-CF)进行比较。其一,采用上述的MovieLens数据集比较两者的准确率、召回率。其二,设计实现电子商品推荐系统,将人工数据集Mobile-Data存入数据库作为数据来源,利用上述两种推荐算法实验测试推荐结果。

3.3.1 MovieLens数据集实验

采用文中算法(NP-CF)与传统的基于用户信息的协同过滤算法(User-CF)在MovieLens数据集并且通过不同的最近邻个数计算相应的准确率、召回率。这里采用随机的方式将数据集的70%作为训练集,遍历训练集的数据形成用于计算用户相似度的倒排表,其次实现相似度的计算并且通过加权评价公式形成预测推荐的列表,最后根据预测推荐的项目计算准确率、召回率,比较二者的数据。

实验结果见表2和表3。

表2 准确率

表3 召回率

从表2可以看出,文中算法(NP-CF)相比传统的基于用户信息的协同过滤算法(User-CF)准确率有了明显的提高。准确率的比对结果如图4所示。从图中可以看出最近邻个数N对两种算法的准确率有一定的影响。当N达到30之后,NP-CF的准确率逐渐趋于平稳,在N<50时,该算法的准确率随着最近邻个数N的增加而提高。当N>50时,准确率开始下降,但是降低的程度较低。综上所述,在最近邻个数变化的情况下,文中算法(NP-CF)的准确率明显优于传统的基于用户信息的协同过滤算法(User-CF)。

图4 两种算法准确率比较结果

根据表3对两种算法召回率的统计,随着最近邻数值的增加,两种算法的召回率都在提高。

比较两种算法召回率的数值,可见文中算法(NP-CF)召回率提高的更显著。

从图5可以看出,通过文中算法(NP-CF)计算获得的召回率,随着最近邻个数的增加,当最近邻个数N>40时,召回率的数值逐渐趋于稳定在0.09左右,当最近邻个数N>50时,召回率的数值开始降低。由此得出,文中算法(NP-CF)的召回率具备优势。

图5 两种算法召回率比较结果图

根据上述两种评价方法的比较,最终设计实现的电子推荐系统,最近邻的个数选择30,根据上述的测试分析可见当最近邻个数为N=20时,文中算法的准确率达到了28.11%,而传统的基于用户的协同过滤算法的准确率只有10.00%,可见预测推荐的结果更为准确。N=30的准确率数值与最近邻个数N>30的准确率值都比较接近。

3.3.2 人工数据集

采用eclipse开发工具设计实现电子商品推荐系统,将人工数据集Mobile-Data存入数据库作为数据源,利用文中算法(NP-CF)和传统的基于用户信息的协同过滤算法(User-CF),分别设计实现系统的推荐功能并且利用人工数据集Mobile-data进行推荐功能的实例测试。在系统通过多个用户对不同的手机进行浏览与评分,测试系统最终对目标用户进行推荐,观察其结果发现能够形成较好的推荐。测试数据包含4个测试用户A、B、C、D,用户喜欢商品包括4个品牌,10个型号手机产品。

采用文中算法(NP-CF)以及传统的基于用户信息的协同过滤算法(User-CF)经过该数据集实际测试结果见表4。其中文中算法(NP-CF)最终形成了5个推荐结果,选用传统的基于用户信息的协同过算法(User-CF)形成了3个推荐结果。

表4 系统测试结果

根据皮尔逊相关系数相关技术的公式,用户A与用户B的相似度值应该与用户A与用户D的相似度值相等,但是传统的基于用户的系统过滤算法未将用户D感兴趣的电子产品IPHONE11PRO以及HUAWEIMATE30EPRO推荐给目标用户A,造成该推荐结果的原因是只利用皮尔逊相关系数计算获得最近邻,常常无法获得准确的最近邻集合,而文中算法(NP-CF)对皮尔逊相关系数进行了优化改进后获得的推荐结果相较而言更加具有优势。值得指出的是,该方法推荐结果与最终推荐次序无关,通过计算目标用户的相似度,最终按照商品的ID顺序将推荐的商品添加进入推荐列表。

4 结束语

传统的基于用户的协同过滤算法由于受活跃用户以及商品自身质量因素的影响,得到的预测推荐效果较差。对此,该文将活跃用户的惩罚系数与商品自身质量对用户评分的惩罚因子融入皮尔逊相关系数的计算公式。经过MovieLens数据集测试的实验表明,该算法(NP-CF)能够有效地提高准确率(Precision)、召回率(Recall),并且在使用人工数据集Mobile-Data作为电子商品推荐系统测试的数据源时,该算法在仿真测试中能够得到较好的推荐效果。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!