摘要
协同推荐系统容易受到推荐攻击,即恶意用户将虚假的个人资料插入评级数据库,以使系统输出产生偏差。为了降低这种风险,已经提出了许多方法来检测这种攻击。尽管这些方法很有效,但许多这些方法都是基于手工设计的特性构建的,即使是领域专家,通常也难以提取这些特性。为了在不采用手工设计的特征的情况下建立该检测方法,本文提出了一种基于深度学习的推荐攻击检测方法(称为DL-DRA)。该方法可以直接从低级的评级数据中学习,以进行分类器的训练。因此,它并没有如何提取手工设计的特征的问题。我们首先提出了一个框架来展示所提出的检测方法的基本结构。然后,我们提出了一种评级矩阵生成方法,将评级向量转换为每个用户的评级矩阵。然后,我们使用双边插值算法来调整评级矩阵的大小,以降低评级矩阵的稀疏性。最后,在卷积神经网络(CNN)的基础上,我们构建了一个可以直接从调整后的评级矩阵中学习的深度学习网络。在此基础上,我们提出了一种检测推荐攻击的算法。我们对不同规模的电影镜头数据集的推荐攻击方法进行了大量的比较实验。实验结果表明,该方法能够有效、稳定地检测出推荐攻击。
1介绍
协同推荐系统[1]可以根据已建立的用户配置文件过滤掉这些信息,以满足用户的兴趣,并主动向用户推荐这些信息。它们为解决互联网信息超载问题提供了一种有效的途径,而互联网已成为许多电子商务网站的重要组成部分。例如,为了提高销售,亚马逊1为每个客户建立了个性化的在线商店,Netflix2通过协作推荐系统向用户推荐流媒体服务。
然而,由于其自然的开放性,协作推荐系统很容易受到先令攻击或[2,3]的推荐攻击。在这种攻击中,恶意用户人为地将大量的虚假个人资料注入到一个协作推荐系统中,以使推荐结果偏向于他们自身的利益。为了区分真实的档案,我们通常将虚假的档案称为攻击档案。根据不同的目的,推荐攻击可分为推式攻击和核式攻击,促进或降级被推荐的目标项目[4]。为了达到攻击的目的,攻击者通常使用攻击模型[4]来生成攻击轮廓。除了目标项目,其他一些项目也将被评级,以使生成的攻击配置文件看起来像真正的配置文件。常见的攻击模型包括随机攻击、平均攻击和潮流攻击[2,5]。推荐攻击的强度通常通过攻击大小和填料尺寸[4]来衡量。推荐攻击是发挥协同推荐系统正常功能的一大挑战。
为了检测推荐攻击,研究人员提出了许多使用传统机器学习技术的方法[6-18、20、21],如聚类技术[9]、隐马尔科夫模型[13]、C4.5和SVM[14–16]。尽管这些方法很有效,但仍有大量的方法[14-18,20,21]是基于手工设计的特征构建的,这对于领域专家来说也是一项具有挑战性的任务。第一种基于深度学习的检测方法是基于单卷积神经网络层[19]。该方法在小规模数据集上具有较好的性能,但在大规模数据集上的性能较差。
为了通过直接从评级数据中学习而不是采用手工设计的特征来构建检测方法,能够有效并且稳定地检测推荐攻击,在不同规模的数据集上,我们提出了一种基于深度学习的方法,该方法由多个卷积神经网络层来检测推荐攻击,称为DL-DRA。该方法不存在如何提取手工设计后的特征的问题,因为它用一种训练分类器的评级矩阵生成方法取代了手工设计后的特征提取。我们在本文中的贡献总结如下:
•我们提出了一种评级矩阵生成方法,将每个用户的评级向量转化为评级矩阵。我们通过基于双边插值算法调整评级矩阵的大小来降低评级矩阵的稀疏性。
•我们提出了一种基于CNN的深度学习网络,可以直接从调整后的评分矩阵中进行学习。我们提出了一种基于深度学习网络的推荐攻击检测算法。
•我们在不同规模的电影镜头数据集上进行了实验,以验证该方法的有效性。
2.相关工作
根据训练样本的不同要求,现有的攻击检测方法可分为无监督、有监督和半监督三类。其中,大多数有监督和半有监督的方法都是基于手工设计的特征。
无监督方法的好处是它们不需要带有标记的训练样本。然而,他们中的大多数都需要一定的先验知识。Chirita等人[6]首先提出了一些基于统计的高密度攻击轮廓指标。然而,他们的方法不能有效地检测低密度攻击轮廓。Mehta等人[7,8]使用主成分分析技术过滤掉攻击轮廓。该方法可以有效地检测到各种类型的推荐攻击。但是他们的方法需要在测试集中知道攻击档案的总数,然后才能检测出在现实世界中难以获得的攻击档案。Lee等人[9]提出了一种基于聚类的检测方法。该方法在检测小填充尺寸的攻击轮廓时并不成功。Chung等。[10]提出了一种基于Beta分布的检测方法βP。该方法在各种攻击下都可以得到稳定的结果。但是,它不能有效地检测到攻击规模较大的攻击。Yang等人提出了一种构造无向图和估计相似度的方法。他们的方法可以检测到各种攻击。然而,如何轻松地为该方法选择一个合理的阈值是困难的。Yang等人,[12]分析了用户、项目和特殊评分的分布情况。在此基础上,他们提出了一种将目标项目分析和非线性结构聚类相结合的检测方法。该方法采用的非线性结构聚类有利于有效地检测推荐攻击。但是,在推荐系统中,很难从大量的项目中找到目标项目。Zhang等[13]提出了一种利用隐马尔可夫模型和层次聚类的检测方法。该方法可有效地检测各种类型的推荐攻击。但是,在测试集只包含真实的或攻击的配置文件的情况下,该方法将有较差的检测结果。
有监督的方法需要带有标记的训练样本。基于手工设计的特征,传统的机器学习方法训练分类器检测推荐攻击。Burke等人[14,15]使用了一些手工设计的统计特征,如WDMA、RDMA和WDA来训练三种监督算法kNN、C4.5和SVM来生成用于检测的分类器。由于该方法的精度较低,本文所描述的特征被许多其他工作广泛应用[16-18,20,21],用于进一步挖掘特征和构建分类器。Zhang等人[16]提出了一些利用希尔伯特-黄变换手工设计的特征,并利用它们生成了一个基于SVM的分类器。该方法所提出的特征可以有效地表征高密度攻击轮廓。但它们不能有效地描述低密度攻击的轮廓。Yang等人[17]根据攻击模型的统计特性提取了几个手工设计的特征,并提出了一种利用重尺度增强、AdaBoost和提取的特征的检测方法。该方法提高了对不平衡测试集的检测性能。基于一些现有的手工设计的特征,Zhou等人[18]利用边界线烟雾和目标项目分析训练了一个基于SVM的分类器来检测攻击轮廓。一般情况下,该方法具有良好的检测性能。但是,由于在推荐系统中通常有大量的项目,所以有时很难找到目标项目。在这种情况下,该方法的检测性能变得不稳定。Tong等人[19]提出了一种基于卷积神经网络的检测方法。该方法只包含一个卷积层和池化层。对于小规模的数据集,它具有一定的检测效果。但如我们的实验所示,它