这一次学习的是一个名为CoDetector的监督学习的托攻击检测算法。
该算法是在word embedding models的启迪下发现的,用user-user共生矩阵和user-item共生矩阵,学习到包括word embedding信息的用户隐性条件作为特征去检测攻击者。
这篇博文主要是简单介绍一下这个检测算法,方便一些不想看英文的朋友,如果希望详细看原文的可以下载附件观看。
一.准备工作
CoDector是同时利用了MF和Word Embeding
1. 矩阵分解(Matrix factorization):
这是协同过滤的一种方法,着重于隐形特征。就是将用户和项目融合进一个低维的矩阵,损失函数为:
图一
Yui代表着用户u对项目i的评分, 控制着隐形特征的影响的大小。
2. 词向量(Word Embedding)
词向量在自然语言处理里面是一个特别成功的模型,在相关方法中,词向量会被嵌入进一个连续的矩阵空间。Word Embedding的学习也可以通过下载附件来学习。我也会上传一个资料。
二.CoDector的介绍
CoDector利用用户嵌入(User Embedding)来发现异常。
在word2vec中,给定一个中心词,在这个中心词附近的序列被定义为这个中心词的上下文,同样我们可以在推荐系统的用户-项目二部图里面也这样定义,如用户u1和用户u2都消费了项目i1和项目i2,因此,u1和u2是互相的上下文。
然后用户-用户的SPPMI矩阵(这个可以通过看论文找到相应解释)就代表着用户1和用户2同时消费的item的数量。在这之后,我们能够通过构建矩阵M获取UserEmbedding的信息。一旦攻击者想要攻击项目时,SPPMI矩阵M就会将隐形交互显示出来。
三.训练过程
为了保证评分和结构信息注入用户隐形特征,CoDector联合分解了了评分矩阵R和SPPMI矩阵M。整个过程在算法1里体现出来,损失函数为
图二
Pu是共享的用户隐性特征,muj代表着用户u和用户j的正点信息偏移(这里其实翻译不太来,英文为muj denotes the shifted positive point-wise mutualinformation between user u and user j),gi是用户u的上下文,wu和cj是用户和上下文的偏差。模型参数由随机梯度下降更新。更新规则为
图三
算法一:
图四
四.实验结果
数据集包括Movie-lens和Amazon,检测指标为精准率(P),召回率(R)和F1值。
在Movie-lens的检测结果:
图五