本发明属于人工智能技术领域,更具体地,涉及一种基于词向量数据驱动的商品智能推荐方法。
背景技术:
随着互联网的发展,电子商务作为新兴产业应运而生,电子商务把商品从实体店搬运到网络的虚拟环境中,使得用户足不出户就可以购物。虚拟购物降低了卖家的成本,提高了买家的购物体验。但对于网络购物的用户来说,网络上纷繁多样的商品给挑选带来了麻烦。解决这一问题的方法就是使用推荐系统为用户进行个性化的物品推荐。
传统的个性化推荐系统有协同过滤算法、knn聚类算法、因子模型、受限玻尔兹曼机等。这些传统方法往往精确度不够高,不能完成精确推荐的目的。词向量(word2vec)方法是google公司在2013年开源的一款将词表征为实数值向量的高效工具,利用深度学习的思想,通过训练把对文本内容的处理简化为k维向量空间中的向量运算,利用向量空间上的相似度来表示文本语义上的相似度;word2vec输出的词向量可以被用来做很多nlp相关的工作,比如聚类、找同义词、词性分析等等。将词向量的方法应用在推荐系统上,可提供高精确度的推荐,给用户更好的体验。
技术实现要素:
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于词向量数据驱动的商品智能推荐方法,其目的在于提供一种可用于电子商务平台的简单、有效、高精度的商品智能推荐方法。
为实现上述目的,按照本发明的一个方面,提供了一种基于词向量数据驱动的商品智能推荐方法,包括如下步骤:
(1)预处理步骤:将用户的购买行为日志及对商品评分数据按比例随机分为训练数据和测试数据;
对训练数据中的异常数据、重复数据进行筛除,对缺失值数据进行填充或者筛除,对商品评分数据进行归一化处理,得到预处理的数据;其中,商品评分数据通过统计用户对商品的评分获得;
(2)词向量生成步骤:将预处理的数据中的用户编号和商品编号作为训练数据,分别进行独热编码处理,再乘以权重矩阵,将用户编号和商品编号分别映射到低维、稠密的特征空间中形成词向量;再将用户词向量和商品词向量进行融合,得到第一融合词向量;其中,权重矩阵采用随机初始化的权重矩阵;
(3)模型训练步骤:将上述的第一融合词向量、归一化后的商品评分数据作为模型训练数据,构建模型的输入层、若干隐藏层、输出层,指定损失函数、最优解方法、激活函数,进行训练,得到模型各层的权重;
(4)商品评分预测步骤:对测试数据中的异常数据、重复数据进行筛除,对缺失值数据进行填充或者筛除,得到预处理后的测试集;
将测试集中的用户编号和物品编号作为步骤(2)训练数据,进入步骤(2),得到第二融合词向量;
将第二融合词向量作为模型训练数据,输入到步骤(3)所训练好的模型,得到用户对新商品的归一化预测评分,将该归一化预测评分进行反归一化处理,得到预测评分。
优选地,上述基于词向量数据驱动的商品智能推荐方法,其步骤(2)包括以下子步骤:
(2.1)独热编码:把每一个用户编号作为一个词,由所有的用户编号组成一个用户字段,用一个维度为用户数的向量对每一个用户编号进行唯一标识,获得稀疏矩阵;其中,向量只包括一个为1的分量,其他分量全为0,分量1所对应的位置为该用户在用户字典中的位置;
(2.2)初始化权重矩阵:随机设置权重矩阵的初始值;
(2.3)将稀疏向量转为词向量:将步骤(2.1)独热编码得到的稀疏矩阵乘上步骤(2.2)中所设置的初始权重矩阵,将原始的稀疏、高维向量映射到稠密、低维的特征空间中,分别获得用户词向量和商品词向量;
(2.4)平整向量:将步骤(2.3)获得的低维的用户词向量和商品词向量分别平铺为一维向量;
(2.5)向量融合步骤:将步骤(2.4)获得的一维的商品词向量和用户词向量采用连接的方式进行融合,获得融合词向量;
所述连接的方式是指在商品词向量后面追加用户词向量,合为一个词向量。
优选地,上述基于词向量数据驱动的商品智能推荐方法,其步骤(3)包括以下子步骤:
(3.1)随机输入置零:采用随机选取的方式将步骤(2)得到的第一融合词向量中的部分元素根据一定比例置零,以防止过拟合;该比例小于0.5;
(3.2)设定隐藏层参数:设置网络深度、每层神经元数目以及激活函数;
(3.3)前向传播:将每一层的输入数据乘以权重矩阵,并加上偏置量,计算得到该层的输出值;其中,偏置量在最初设置神经网络参数时进行随机初始化,在参数训练中自动更新为较优的结果;
(3.4)采用批量梯度下降法对神经网络每层的参数进行反向传播求解。
优选地,上述基于词向量数据驱动的商品智能推荐方法,其步骤(4)包括以下子步骤:
(4.1)对测试集的用户编号、商品编号作为步骤(2)的输入,获得融合词向量;
(4.2)将上述融合词向量作为输入数据,输入至步骤(3)得到的已训练模型中,获得归一化的预测评分;
(4.3)根据反归一化方程将预测评分从[0,1]转换为正常的评分值区域中。
优选地,上述基于词向量数据驱动的商品智能推荐方法,其步骤(4.3)还包括以下子步骤:
根据下式将反归一化后获得的float型评分转换为int型,
其中s为评分最大值,t为反归一化后的float评分值,round(t,-1)是取评分t四舍五入得到的整数。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明所提供的基于词向量数据驱动的商品智能推荐方法,把用户编号、商品编号看作词,把词当做特征,通过word2vec方法把特征映射为稠密空间的词向量,为文本数据寻求更加深层次的特征表示,再运用深度神经网络模型进行对未知商品进行评分预测,为系统向用户进行智能商品推荐提供依据,具有较高的精确度和可解释性;
(2)本发明所提供的基于词向量数据驱动的商品智能推荐方法,对输入样本评分项先进行归一化,在预测后进行反归一化,并进行取整处理,具有进一步提高精确度的效果。
附图说明
图1是实施例提供的基于词向量数据驱动的商品智能推荐方法的流程示意图;
图2是实施例提供的基于词向量数据驱动的商品智能推荐方法进行预处理的流程示意图;
图3是实施例提供的基于词向量数据驱动的商品智能推荐方法的词向量生成流程示意图;
图4是实施例提供的基于词向量数据驱动的商品智能推荐方法的单神经元示意图;
图5是实施例提供的基于词向量数据驱动的商品智能推荐方法的神经网络结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例提供的基于词向量数据驱动的商品智能推荐方法,其流程如图1所示,包括以下步骤:
(1)预处理步骤,其具体流程如图2所示;
本实施例中以netflixprize竞赛中的cf数据集为例来进行阐述;cf数据集的数据格式为[uid,iid,score];其中,uid是用户编号,为整数类型;iid是商品编号,为整数类型;score是用户对商品评分,为整数,共5档,分别为[1,2,3,4,5],评分越高表示对商品评价越好;
由于输入的数据量过大,直接将原始数据加载至内存的方式对硬件要求会计较高,浪费大量内存;因此采用流读入的方式,将原始数据的某一个样本数据读入进行处理后,再读取下一个样本数据进行处理;这种方式虽然速度慢一些,但对内存需求大大减少;
对重复、异常、缺失的样本数据进行删除;对输入的商品评分进行归一化,即变换到[0,1]区间;本实施例中,根据下式进行归一化:
其中,x是指评分,f(x)是指归一化后的评分。
(2)词向量生成,其具体流程如图3所示;
输入预处理训练数据后,分别对用户编号和商品编号进行独热编码处理;以用户编号为词库,词库长度为用户数量nuser,将每一个用户编号作为一个词,将用户编号按照升序排列,每个用户编号所处位置即是该用户编号在词库中的位置;对商品编号采用同样方法处理,生成商品词向量;本步骤包括如下子步骤:
(2.1)独热编码子步骤:假设用户编号词库为{u0,u1,u2,...,un-1,un},对于第k个用户的独热编码向量为<0,0,0,...,1,...0>,该向量仅含一个元素为1,其余均为0,且为1的元素下标为k-1,;对商品做同样处理;
(2.2)初始化权重矩阵步骤:初始化
(2.3)稀疏向量转为词向量:将步骤(2.1)中所述的独热编码得到的用户向量矩阵乘以(2.2)中所设置的用户初始权重矩阵mu,将原始的稀疏、高维向量映射到稠密、低维的特征空间中,获得用户词向量;
通过将步骤(2.1)独热编码得到的物品向量矩阵乘上步骤(2.2)中所设置的物品初始权重矩阵
(2.4)平整向量步骤:将步骤(2.3)中的低维向量平铺为一维向量;
(2.5)向量融合步骤:将步骤(2.4)中商品词向量和物品词向量通过连接的方式进行融合,即在商品词向量后面追加物品词向量,合为一个词向量,得到用户-商品词向量;
(3)模型训练步骤:输入步骤(2)得到的词向量,通过神经网络训练模型,得到模型参数,具体包含以下子步骤:
(3.1)随机输入置零:随机的将步骤(2)中得到的融合词向量中的部分元素根据比例置零,以防止过拟合;本实施例中,该比例在[0.2~0.5]的范围选择;
(3.2)设定隐藏层参数步骤:设置网络深度、每层神经元数目以及激活函数;
(3.3)前向传播步骤:以下以一个3层神经网络为例说明该步骤的工作原理;
本实施例中设输入的训练样本为(x(i),y(i)),输出为hw,b(x),其中w和b为模型参数;
以图4所示的单神经元为例说明输入经过一层神经元后的输出结果,该图中,“神经元”是一个以x1、x2、x3及截距+1为输入值的运算单元,其输出为
如图5所示为在本实施例中的神经网络结构示意图;神经网络就是将许多个单一“神经元”联结在一起;一个“神经元”的输出可以是另一个“神经元”的输入;图5中使用圆圈来表示神经网络的输入,标上”+1”的圆圈称为偏置节点,也就是截距项,其中“layerl1”是输入层,“layerl3”是输出层,仅有一个”layerl2”是隐藏层;但实际情况中,隐藏层往往不止一个;图5中共有3个输入单元(这里偏置单元不包含在内),4个隐藏单元和1个输出单元。
以nl表示网络层数,则本示例共nl=3,将第l层记为ll,则上例中l1是输入层,l2是隐藏层,l3是输出层。则该神经网络的参数有(w,b)=(w(1),b(1),w(2),b(2)),其中
用
用
则有:
将激活函数f(.)扩展为向量(用分量的形式),
f(|z1,z2,z3|)=|f(z1),f(z2),f(z3)|
将上式简化为:
z(2)=w(1)x+b(1)
a(2)=f(z(2))
z(3)=w(2)a(2)+b(2)
hw,b(x)=a(3)=f(z(3))
按照下式求得各层输出,得到最终的输出结果;
z(l+1)=w(l)a(l)+b(l)
a(l+1)=f(z(l+1))
(3.4)反向传播求参步骤:假设有固定样本集{(x(1),y(1)),...,(x(m),y(m))}包含m个样例;
以下采用批量梯度下降法对每层的参数w,b进行求解。
对于单个样例(x,y),其代价函数设为:
则对于m个样例,整体的代价函数为:
求解参数的方法即是最小化代价函数;对j(w,b)求偏导数得:
对于第nl层(输出层)的每个输出单元i,根据以下公式计算残差:
对于l=nl-1,nl-2,nl-3,...,2的各个层,第l层的第i个节点的残差计算方法如下式:
则计算出偏导数公式为:
更新权重参数方法为:
其中α为学习率,设定一定的迭代次数,反复迭代直至损失函数到达某阈值或者不再减小为止。
本实施例中,梯度下降法的伪代码如下:
a.对于所有的l,令δw(l):=0,δb(l):=0;
b.对于i=1到m,计算
c.更新权重参数
(4)评分预测步骤:具体包括以下子步骤:
(4.1)对测试集的用户编号、商品编号作为步骤(2)中输入,获得用户-商品词向量;
(4.2)将步骤(4.1)得到的用户-商品词向量作为输入数据,输入至步骤(3)得到的已训练模型中,获得归一化的预测评分。
(4.3)由于步骤(4.2)中获得的归一化预测评分进行反归一化和取整处理,获得实际评分。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。