基于惩罚因子的协同过滤算法的改进与研究
扫描二维码
随时随地手机看文章
引 言
随着信息量的提升,推荐系统开始发挥越来越重要的作用。目前,推荐系统在新闻行业、娱乐媒体行业以及电子商务领域都有着重要的应用。推荐系统领域出现了多种算法, 这些算法都有着明确的应用场景,同时也各有优缺点。常用的推荐算法包括基于内容的推荐、基于关联规则的推荐和协同过滤算法 [1] 等,其中,协同过滤算法是推荐系统中的经典算法之一,在众多场合都有非常广泛的应用。该算法目标明确、易于理解,同时实用性很强,无需具备专业领域的知识即可完成推荐。随着时间的推移,推荐系统的性能会一直得到增强,因此该算法的自动化程度较高,同时也可较为方便地处理复杂的对象信息和非结构化数据 [2]。但是协同过滤算法存在冷启动、数据稀疏、可拓展性差等缺点 [3],这些缺点在实际应用中会影响到推荐系统的性能。本文从实际入手,针对协同过滤算法传统的相似度公式无法抑制热门物品的问题,提出惩罚因子的概念,给出修正后的余弦相似度计算公式,并进行实验论证。
1 协同过滤算法
1.1 传统协同过滤算法
协同过滤算法在 1992 年被提出 [5-6],该算法的第一个应用项目是 Tapestry[7]。协同过滤算法是在获取到用户信息后,寻找目标用户的近邻集合,选择近邻集合中感兴趣的对象推荐给目标用户,其具体步骤如下 :
(1)收集用户行为,产生用户评分矩阵
用户的行为数据可以多种形式展现给后台,因此需要进行预处理。预处理是将自然语言描述的用户历史行为转换为数字化信息 [8]。预处理之后,将用户对物品的行为信息描述为一个 m×n 的矩阵 R(m,n),这个矩阵被称为用户 - 评分矩阵。矩阵 R 中每一行代表用户,每一列代表物品对象,Rij 表示用户 i 对物品对象 j 的评分。同时,采取 0 和 1 两种数值的方式表征用户行为,数字 1 代表用户喜欢该物品,反之为不喜欢。用户评分矩阵 R 为 :
(2) 建立用户近邻集合,找出用户邻居
用户近邻集合是将目标用户与其他用户进行相似度计算后生成用户的近邻集合。用户之间的相似度通过相似度公式计算得出。兴趣相似度计算公式较多,如 Jaccard 公式、余弦相似度公式等。其中,余弦相似度公式使用较多。
(3) 产生推荐结果
计算用户 u 对物品 i 的兴趣度公式为 :
式中:S(u,K)表示用户 u的近邻集合, 包含与 u最接 近的 K个用户;N(i)表示对物品 i产生行为的用户集合;
Wuv 表示用户 u,v 的兴趣相似度;rvi 表示用户 v 对物品 i 的兴趣。
1.2 相似度公式
本文使用余弦相似度公式计算兴趣相似度。给定用户 u 与用户 v,令 N(u)与 N(v)分别表示用户 u 与用户 v 曾经有过正反馈的物品集合,余弦兴趣相似度公式如下 :
通过式(3)可计算出目标用户与其他用户之间的相似度值,从而确定用户的近邻集合,以便下一步使用。
1.3 算法流程
整个系统算法流程包括收集用户历史信息、建立用户评分矩阵、计算用户相似度、生成近邻集合,进而产生推荐。协同过滤算法流程如图 1 所示。
2 基于惩罚因子的协同过滤改进算法
2.1 惩罚因子
若热门物品出现次数较多,则会使实际相似度计算结果受到影响,导致推荐的物品都是热门物品,无法挖掘用户的实际需求。为了避免这种影响,考虑加入一个惩罚因子作为加权系数,从而抑制热门物品的影响,因此本文对余弦相似度计算公式进行修正,将物品出现次数的倒数作为惩罚因子。物品出现次数越多,即该商品越热门,同时,该商品对于用户兴趣相似度的贡献越少。修正后的公式可衰减热门物品造成的影响,带有惩罚因子的修正公式为 :
式中:N(i)表示商品 i 出现的次数;i 表示用户 u 与用户 v共同产生行为的商品。通过物品出现的次数来惩罚热门物品。
2.2 其他改进参数
冷启动是推荐系统设计过程中必须经历的一个过程。由于系统刚刚创建,新注册的用户尚未对项目产生有效的行为信息,此时可利用的行为信息极少,这种情况下难以给用户做出合理的推荐 [9],因此必须考虑从别的渠道获取更多的用户信息作为参考。通过用户的注册信息挖掘用户爱好是一种有效的方式,在用户注册时加以引导,使用户提供一些信息,通过这些信息最大限度地挖掘出用户感兴趣的信息。用户注册信息完毕后初次登录时,后台系统可根据用户提交的个人信息进行分析与挖掘,从而做出有针对性的推荐。
2.3 改进后的算法流程
本文在原有的推荐流程中加入惩罚因子的参数,该参数作为衰减因子可削弱热门造成的影响,使用用户对该物品发生正反馈的次数衡量物品的热门程度。物品越热门,惩罚力度越高,热门物品对计算兴趣相似度带来的影响越小,因此可较好地解决热门物品对于推荐效果的影响。改进后的算法流程如图 2 所示。
3 实验结果
本文使用目前推荐系统经典的数据集 MovieLens(m1-1M)进行验证。MovieLens数据集是目前公认的数据集之一[10],共有用户表(Users)、电影表(Movies)及评分记录表三张表。本文使用准确率与召回率作为实验数据进行评测 [11]。准确率与召回率计算公式为 :
式中:R(u)表示对用户 u 推荐的 N 个物品;T(u)表示测试集中用户 u 喜欢的物品的集合。
首先使用经典的余弦相似度算法进行计算。将推荐数量选定为 25,目标用户的邻居个数分别为 2,3,4,5,6,7,8,9,10,20,40。由上述数据得到的准确率与召回率(计算结果保留小数点后四位)见表 1 所列。
由上述实验数据可知,当目标用户的邻居个数为 3 时,准确率与召回率有较好的效果,因此在对修正后的公式验证时可选定邻居个数 3 进行准确率与召回率的对比。余弦相似度公式与修正后的相似度公式对比见表 2 所列。
由表 2 可知,使用余弦相似度公式的准确率为 0.133 8,召回率为 0.154 4,使用带有惩罚因子的修正公式的准确率为0.144 6,召回率为 0.204 0。实验结果表明,带有惩罚因子的修正公式可以较好地抑制热门物品的影响,提升系统的准确率与召回率。
4 结 语
由于使用传统的余弦相似度公式时,热门物品会影响推荐结果,导致推荐的物品几乎都是热门物品,因此本文提出带有惩罚因子的余弦相似度计算公式,使用热门物品出现次数的倒数作为惩罚因子,物品越热门惩罚力度越大。通过实验验证,该算法可使准确率与召回率得到一定的提升,从而提高推荐效率。