基于深度学习的协同过滤模型在推荐系统中的应用

  互联网的迅猛发展给用户带来了大量的信息,一方面大量的信息可以满足用户在信息时代对信息量的需求,但另一方面过大的信息量会使用户在面对纷繁复杂的信息时,难以从中快速获得有效的部分,降低信息的使用效率,诱发信息超载问题。解决信息超载问题一个强有力的办法就是采用用户推荐系统,推荐系统是根据用户个人特征和历史行为习惯等因素,将用户可能感兴趣的信息推荐给用户的智能系统。和搜索引擎相比,推荐系统通过统计、建模等手段分析用户的行为偏好,不仅能够给用户推荐当前需要的产品信息,还能引导用户发现自己潜在的信息需求。推荐系统现已广泛应用于很多领域,其中最典型并具有良好发展前景的领域就是电子商务。

  如上图,以电子商务的推荐系统为例,其输入数据可以是多种多样的,归纳起来主要分为用户(user)、产品(product)和评分(ratings)三个维度,并分别对应一个矩阵的行、列、值。其中0、1表示用户对产品的评分,该评分可以是二值型变量,也可以是0~5的分值等,问号表示用户对该项产品评分的缺失。推荐系统主要分为“预测”和“推荐”两个环节,“预测”要解决的问题就是推断每一个用户对不同产品的偏爱程度,“推荐”要解决的问题是根据预测环节所计算的结果向用户推荐其没有打过分的产品,即矩阵中的问号部分。但目前绝大多数的推荐算法都把精力放在“预测”环节上,“推荐”环节则根据预测环节所计算的得分由高到底排序推荐给用户。

· 基于协同过滤的用户推荐

  基于协同过滤(collaborative filtering,CF)的用户推荐算法 目前主要分为两类:memory-based CFmodel-based CF, 其中memory-based CF 又包括基于用户的协同过滤算法和基于产品的协同过滤算法。前者是根据邻居用户的偏好信息产生对目标用户的推荐,它基于这样一个假设,如果一些用户对某一类项目的打分比较接近,则他们对其它类项目的打分也比较接近;后者是根据用户对相似产品的评分数据预测目标产品的评分,它是建立在如下假设基础上,如果大部分用户对某些产品的打分比较相近,则当前用户对这类产品的打分也会比较接近。memory-based CF算法不仅计算简单且精确度较高,其核心就是通过相似性度量方法计算出最近邻的集合,并将最近邻的评分结果作为推荐预测结果返回给用户。
  model-based CF最常用的方法就是矩阵分解,即把原始矩阵分解成两个矩阵相乘的形式。该方法的优势在于将评分矩阵R分解成U和V两个矩阵后,这样评分矩阵中缺失的评分就可以通过U矩阵的某列和V矩阵的某行相乘得到,而U矩阵和V矩阵的具体数值又可以通过梯度下降法多次迭代后获得。其背后的核心思想就是找到两个矩阵,使得它们相乘之后所得到的矩阵与评分矩阵尽可能的相似,从而评分矩阵中缺失的值则由这两个矩阵的乘积值来填补。

· 深度学习优化推荐系统的演变过程

  Model-Based CF的目的就是找到基于用户的隐向量矩阵U和基于产品的隐向量矩阵V,目前很多公司会采用深度学习算法来寻找这些较为抽象的隐向量矩阵,以提高用户推荐系统的准确率。最初用来优化推荐模型的深度学习算法名为Autoencoder,简称AE ,是一种无监督学习模型。利用AE预测用户对某个产品缺失的评分值,其原理类似于BP神经网络的反向传播方法,该模型的输入为评分矩阵中的一行或者一列,通过迭代计算出最小损失度来进行模型训练,并根据训练结果预测缺失的产品评分,进而对用户进行个性化推荐。由于训练样本中可能存在噪音数据,因此在AE的基础上又提出改进的深度学习算法名为DenoisingAutoencoder(DAE)。DAE虽然在去除噪声数据上有斐然的功效,但其又显现出另外一个问题——机器学习的泛化能力。这时便应运而生了Stacked DenoisingAutoencoder(SDAE)深度学习算法,SDAE是一个多层的AE组成的神经网络,其前一层自编码器的输出作为其后一层自编码器的输入。在SDAE的基础上,机器学习专家们又提出了Bayesian SDAE模型,该模型假设SDAE中的参数满足高斯分布,同时假设用户的隐向量也满足高斯分布,通过最大后延估计得到想要优化的目标函数,进而利用梯度下降训练模型参数,从而得到基于用户和产品对应的隐向量矩阵U和V,用来拟合原始评分矩阵R。

  当前深度学习在推荐领域已具有广泛的应用,一些常见的深度学习模型例如AE、DNN、CNN等都能较好的应用于推荐系统中,但对于不同行业领域的用户推荐,应该具有更强针对性的模型。相信随着信息化的不断发展,深度学习会不断完善成为推荐系统中一项必不可少的技术手段。

分类: 相关资讯