一种预测相似物品及训练其模型的方法和装置与流程

文档序号:16147493发布日期:2018-12-05 16:45阅读:341来源:国知局
一种预测相似物品及训练其模型的方法和装置与流程
本发明涉及计算机领域,具体涉及机器学习领域,尤其涉及一种预测相似物品及训练其模型的方法和装置。
背景技术
相似物品对为两件在外观、价格和用途等几十个维度接近的物品,其中,不同维度影响相似性的程度不同,不同品类相同维度影响相似性的程度也不同。当前,传统自然语言处理常用词袋模型来量化表示描述事物的一段文字,但对于计算机而言,此方法难以精确地计算两个词、文章的语义和语法相似度,而且词袋模型的数据稀疏性和维度灾难会导致模型的性能下降。近几年逐渐使用浅层神经网络直接由大量文本数据学习低维且连续的词向量,词向量能有效得表达一个词的语义和语法,但是对于分类物品判定两个物品是否相似还具有一定的局限性,其一表示物品词向量仍然需要高纬度,并且大部分维度都是无用的,真正有用的特征就藏在那么几个维度中,造成损耗大量的训练时间,并且判定结果不具有参考性,其二物品对之间的关联性比较薄弱,例如,会判定“长裙”和“短裙”两个商品描述文本为相似度一样的商品。因此,本领域的技术人员致力于开发一种预测相似物品及训练其模型的方法和装置。技术实现要素:有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种速度快且准确度高的预测相似物品及训练其模型的方法和装置。为解决上述技术问题,本发明提供了一种训练预测相似物品模型的方法,包括以下步骤:获取物品的词袋表示和向量表示,其中,物品的向量表示与该物品的属性维度值及其词向量相关;基于物品对的距离特征获取物品对的向量表示,所述物品对的距离特征与物品的词袋表示和向量表示相关;结合相似物品对的向量表示和随机采样的物品对的向量表示训练分类模型,以获得用于预测相似物品的模型。进一步地,所述物品的向量表示包括:物品的各属性维度值的向量表示和物品的所有属性维度值的向量表示。进一步地,通过中文语料和语言模型训练所述词向量,其中语言模型采用glove模型、word2vec模型、senna模型和hlbl模型中至少一种模型。进一步地,所述物品的属性维度值及其词向量采用哈希表方式存储。进一步地,所述距离特征包括jaccard相似度,所述距离特征还包括manhattan距离、euclidean距离、cosine相似度、canberra距离、chebyshev距离和bray-curtis相似度中的至少一种,其中,jaccard相似度与物品的词袋表示相关,manhattan距离、euclidean距离、cosine相似度、canberra距离、chebyshev距离及bray-curtis相似度与物品的向量表示相关。进一步地,所述相似物品对是已标注为相似的物品对,所述随机采样的物品对是未标注的物品对。进一步地,采用n轮随机采样,n>1,其中,每轮随机采样的物品对的数量与所述相似物品对的数量相等。进一步地,所述分类模型包括朴素贝叶斯分类器、逻辑回归分类器、支持向量机分类器、k最近邻分类器、随机森林分类器和梯度提升决策树分类器中的至少一种。为解决上述技术问题,本发明还提供了一种预测相似物品的方法,利用上面所述的训练预测相似物品模型的方法获得的所有模型分别预测物品对,以获得所述物品对的预测结果。进一步地,采用投票法获得所述物品对的预测结果。为解决上述技术问题,本发明还提供了一种训练预测相似物品模型的装置,包括:物品表示获取单元,用于获取物品的词袋表示和向量表示,其中物品的向量表示与该物品的属性维度值及其词向量相关;物品对表示获取单元,用于基于物品对的距离特征获取的物品对向量表示,所述物品对的距离特征与物品的词袋表示和向量表示相关;训练单元,用于结合相似物品对的向量表示和随机采样的物品对向量表示训练分类模型,以获得用于预测相似物品的模型。进一步地,通过中文语料和语言模型训练所述词向量,其中语言模型采用glove模型、word2vec模型、senna模型和hlbl模型中至少一种模型。进一步地,所述距离特征包括jaccard相似度,所述距离特征还包括manhattan距离、euclidean距离、cosine相似度、canberra距离、chebyshev距离和bray-curtis相似度中的至少一种,其中,jaccard相似度与物品的词袋表示相关,manhattan距离、euclidean距离、cosine相似度、canberra距离、chebyshev距离及bray-curtis相似度与物品的向量表示相关。进一步地,采用n轮随机采样,n>1,每轮随机采样的物品对的数量与所述相似物品对的数量相等。为解决上述技术问题,本发明还提供了一种预测相似物品的装置,包括预测单元,用于利用上述的训练预测相似物品模型的装置获得的所有模型分别预测物品对;获得单元,用于获得所述预测单元对所述物品对的预测结果。根据本发明提供的一种预测相似物品及训练其模型的方法和装置,具有如下技术效果:1)本发明通过物品向量表示获取物品对向量表示来训练分类模型,多次压缩训练分类模型的输入数据,提高了训练分类模型的速度和训练结果的准确度。2)本发明提供的技术方案适用于各种物品,包括商品(例如,预测竞品和推荐商品等)、货品(例如,用于仓储管理等)和产品(例如,寻找相似产品,从而可以计算其市场空间,从而指导每年的产品规划)等等。3)本发明提供的物品向量表示借助现有的语言模型,并且还结合物品所有属性维度值,来表示物品的标题和描述文本,使物品向量表示即包括物品各个属性维度值,还包括了该物品的综合维度值,以提高最终预测结果的准确度。4)本发明中,通过使用多种相似度函数,可以进一步压缩物品对的向量表示,并且保留更多相似信息。5)本发明中,模型的训练集来自随机物品对,随机物品对指同品类随机两件物品,其中一部分由人工标注判断是否为相似物品对,即模型的训练集包含两类物品对,第一类是作为正例的已标注相似物品对;第二类是未经标注的随机物品对。由于相似物品对在全量数据中的占比非常低,因此从第二类物品对中随机负采样的任意物品对可当作负例使用,该过程称为随机负采样。单次负采样最大的缺点在于舍弃大量潜在有用的数据以及影响模型的泛化能力,因此,本发明中使用多轮随机负采样。在每一次负采样后均训练一批模型,逐渐逼近类别边界获得更好的分类效果,最后通过投票的方式集成所有模型的预测,便可得到准确率高且泛化能力强的相似物品对判断方法。6)本发明中,集成多种分类模型分别预测物品对,可以获得准确率高的预测结果。7)本发明解决的不仅仅是相似性度量问题,更是进一步解决了物品分类问题。以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。附图说明图1是本发明实施例的训练预测相似物品模型的方法示意图;图2是服装商品的部分词向量示意图;图3是本发明实施例的计算商品低维连续向量表示的流程图;图4是本发明实施例的计算商品对距离特征的流程图;图5是本发明实施例的基于多轮随机负采样训练模型的流程图;图6是本发明实施例的模型预测集成的具体步骤的流程图;图7是现有技术采样训练模型的商品分类效果图;图8是本发明实施例的采用多轮随机负采样训练模型的商品分类效果图。下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。具体实施方式如图1所示,是本发明实施例的训练预测相似物品模型的方法,包括以下步骤:步骤s1,获取物品的词袋表示和向量表示,其中,物品的向量表示与该物品的属性维度值及其词向量相关。例如通过中文语料和语言模型训练所述词向量,其中语言模型采用glove模型、word2vec模型、senna模型和hlbl模型中至少一种模型。采用哈希表方式存储物品的属性维度值及其对应的词向量。物品的向量表示可采用物品的各属性维度值的向量和物品的所有属性维度值的向量来表示。步骤s2,基于物品对的距离特征获取物品对的向量表示,物品对的距离特征与物品的词袋表示和向量表示相关。例如物品对的距离特征使用jaccard相似度,并且还使用manhattan距离、euclidean距离、cosine相似度、canberra距离、chebyshev距离和bray-curtis相似度中的至少一种,其中,jaccard相似度与物品的词袋表示相关,manhattan距离、euclidean距离、cosine相似度、canberra距离、chebyshev距离及bray-curtis相似度与物品的向量表示相关。步骤s3,结合相似物品对的向量表示和随机采样的物品对的向量表示训练分类模型,以获得用于预测相似物品的模型。例如相似物品对是已标注为相似的物品对,随机采样的物品对是未标注的物品对,采用n轮随机采样(n>1),并且每轮随机采样的物品对的数量与相似物品对的数量相等,其中分类模型可以使用朴素贝叶斯分类器、逻辑回归分类器、支持向量机分类器、k最近邻分类器、随机森林分类器和梯度提升决策树分类器中的至少一种。下面采用具体实施例对本发明上述实施例的技术方案进行详细说明,以预测相似商品为例具体说明,同样地,以下描述的技术方案同样适用于预测其他物品包括货品和产品等等。步骤s1,获取物品的词袋表示和向量表示。举例来说,本实施例中,步骤s1具体是基于商品的词袋表示计算商品低维连续向量表示,具体包括以下步骤:步骤101,使用哈希表h(vk)存储属性维度值及其对应的词向量表示;其中哈希表的键vk是属性维度值,值为对应的具体属性的词向量表示。例如,一种服装商品的属性维度值如下表所示:廓形a型材质成分聚酯纤维100%销售渠道类型纯电商(只在线上销售)货号9972风格街头街头欧美组合形式单件裙长中裙款式其他/other袖长长袖领型圆领袖型喇叭袖腰型高腰衣门襟套头裙型a字裙图案条纹流行元素/工艺褶皱纽扣品牌aibiry/埃比芮适用年龄18-24周岁年份季节2017年春季颜色分类粉色尺码sml表中第一列显示这个服装商品的属性维度值,其包括廓形、材质成分、销售渠道类型、货号、风格、街头、组合形式、裙长、款式、袖长、领型、袖型、腰型、衣门襟、裙型、图案、流行元素/工艺、品牌、适用年龄、年份季节、颜色分类和尺码。表中第二列显示其相对应的具体属性值,这个属性值用词向量来表示,例如,如图2所示服装商品的部分词向量,这些词向量是通过中文语料和开源的glove模型训练出来的多维词向量。本实施例考虑计算速度、预测结果准确度等因素,优选采用300维词向量表示,同样也可以采用更少或更多维词向量表示。其中glove模型还可以替换成word2vec模型、senna模型和hlbl模型。步骤102,计算每件商品的词袋表示;假设品类c有属性维度值列表:category_attr_valuesc={attrj},其中j=1,2,3…n,且品类c下商品i有属性维度值列表:item_attr_valuesi={attrk},其中k=1,2,3…m则商品i的词袋表示为:例如,如下表所示,其输入是商品属性键值对,输出是定长向量,每个元素表示一个维度商品id廓形风格袖长裙型组合形式……001a型街头长袖a字裙null……002a型淑女中袖null假两件……步骤103,计算每件商品的各属性维度的向量表示;假设商品i的属性维度attri包含属性维度值:item_attr_values={vk},其中k=1,2,3…m,则该属性维度向量表示为:例如,如下表所示步骤104,计算每件商品所有属性维度值的向量表示;本例中采用对所有的300维词向量非null的维度取平均得到商品所有属性维度值的向量表示,并且与n个属性维度(即商品的属性维度值的向量长度)的300*n维向量合并,得到300*(n+1)维向量,作为商品向量表示。假设商品i有属性维度值:item_attr_values={vk},其中k=1,2,3…n,则该商品所有属性维度值向量表示为:则该商品的向量表示是商品的各属性维度值的向量表示和商品的所有属性维度值的向量表示的合并向量表示,即为:以下为方便说明采用4维向量举例说明如何计算商品低维连续向量表示,在实际应用中是优选300维向量以提高训练速度和预测准确度。品类的属性维度值[风格,廓形,袖长,裙型];某商品的属性维度值如下图所示,其中该商品没有裙型属性。商品id风格廓形袖长裙型001街头a型长袖null在已训练的词向量哈希表h中查找到相对应的属性4维词向量“街头”的词向量是[0.01,0.02,0.12,0.32]“a型”的词向量是[0.31,0.34,0.12,0.62]“长袖”的词向量是[0.58,0.24,0.06,0.02]计算该商品的所有属性维度值的向量表示,即对各非空属性值按列取平均值,例如,(“街头”的词向量的第1分向量0.01+“a型”的词向量的第1分向量0.31+“长袖”的词向量的第1分向量0.58)/3=0.30,依次类推计算所有属性维度值的向量其他分向量,所以该商品的所有属性维度值的向量表示是[0.30,0.20,0.10,0.32]。则该商品的的向量表示是各个属性维度值的向量表示和其所有属性维度值的向量表示相连接,其中缺失的属性用0向量表示(例如该商品没有裙型属性,则裙型属性的4维向量是[0,0,0,0])则该商品的的向量表示是[0.01,0.02,0.12,0.32,0.31,0.34,0.12,0.62,0.58,0.24,0.06,0.02,0,0,0,0,0.30,0.20,0.10,0.32]。如图3所示,是计算商品低维连续向量表示的流程图,具体如下:步骤1-0为开始步骤;步骤1-1为输入哈希表h,哈希表的键为词,值为对应的词向量;步骤1-2为输入商品列表items={iteml},其中l=1,2,3…n,iteml表示第l个商品的哈希表,该哈希表的键为iteml的属性维度名,值为该属性维度的属性值,n表示总商品数;步骤1-3为初始化用于遍历商品列表的循环变量i=1;步骤1-4为初始化用于计算itemi属性维度向量和商品所有属性维度值向量的变量:设置该属性维度向量变量商品所有属性维度值向量步骤1-5为枚举itemi中下一个键,赋值给变量k;步骤1-6为枚举itemi(k)中下一个属性值,赋值给变量s;步骤1-7为计算itemi词袋表示;步骤1-8为判断s是否为h的其中一个键,若是,执行1-9,否则,执行1-10;步骤1-9为更新属性维度向量和商品所有属性维度值向量变量,attr_embedding=attr_embedding+h(s);item_embedding=item_embedding+h(s);步骤1-10为判断是否已枚举完s,若是,执行1-11,否则,执行1-6;步骤1-11为计算itemi属性维度向量表示;步骤1-12为重置属性维度向量变量,设置步骤1-13为判断是否已枚举完k,若是,执行1-14,否则,执行1-5;步骤1-14为计算itemi商品所有属性维度值向量表示;步骤1-15为循环变量i自增1;步骤1-16为判断循环变量i是否小于等于所有的商品数n,即判断是否遍历完所有商品,若是,执行1-4,否则,执行1-17;步骤1-17为结束步骤。在这个步骤里,对商品进行了向量表示,具有以下效果:1)更准确的数据表示。例如传统词袋模型中,裙长这个属性下的“长裙”和“中裙”的相似度与“长裙”“短裙”的相似度是一样的,因为他们都是不同的词,这不合理;使用词向量可以表示商品属性的语义信息,解决这一问题。2)低维连续向量商品表示可以大幅减小计算量。传统词袋模型商品的表示需要约10万维的向量,本专利中的方法只需要不到数千维(300*(n+1),n是商品属性数,20左右),在相似度度量时,计算速度提速几百倍。在之后的第二步将进一步压缩商品对的向量表示到数百维。步骤s2,基于物品对的距离特征获取物品对的向量表示。举例来说,本实施例中,步骤s2具体是计算商品对距离特征,步骤s1完成了对单个商品的向量表示,商品的相似度指的是一对(2个)商品的关系,这一步主要是针对一对商品进行建模。步骤s201,输入商品配对表商品配对表即配好对的商品对集合,商品对集合包括两种:训练数据中的正例数据(即已标注的相似商品对)和其他所有同品类商品中任意挑选两个商品配对;商品对列表定义如下所示:item_pairs={item_pairl},其中l=1,2,3…n,{item_pairi}为商品对(pl,ql)的向量表示n为总商品对数;步骤202,计算距离特征,其中距离特征包括jaccard相似度,距离特征还包括manhattan距离、euclidean距离、cosine相似度、canberra距离、chebyshev距离和bray-curtis相似度中的至少一种,其中,jaccard相似度基于商品的词袋表示计算,manhattan距离、euclidean距离、cosine相似度、canberra距离、chebyshev距离及bray-curtis相似度基于商品的属性维度向量和商品所有属性维度值向量表示计算即基于商品向量表示计算。本实施例中,步骤202使用到的七种距离特征定义为:jaccard相似度:manhattan距离:euclidean距离:cosine相似度:canberra距离:chebyshev距离:bray-curtis相似度:例如,如下表所示商品对廓形风格袖长裙型组合形式商品总表示……001-0027维7维7维7维7维7维……以下以具体数据说明如何基于商品对的距离特征计算商品对距离特征。假设2件商品的向量表示分别为:a:[0.01,0.02,0.12,0.32,0.31,0.34,0.12,0.62,0.58,0.24,0.06,0.02,0,0,0,0,0.30,0.20,0.10,0.32]b:[0.00,0.04,0.11,0.42,0.32,0.32,0.13,0.52,0.58,0.24,0.06,0.02,0,0,0,0,0.30,0.20,0.10,0.32]然后,为了方便说明,采用2种度量函数计算相似度,实际应用中是优选采用了7种度量函数计算相似度或者选择其中3种、4种、5种或者6种度量函数计算相似度。计算时分别计算每个维度,即分别计算风格、廓形、袖长、裙型、平均维度值,得到:在第一种相似度度量下a-b各维度相似度为[0.92,0.91,0.83,1,1]在第二种相似度度量下a-b各维度相似度为[0.88,0.79,0.93,1,1]最后穿插式得连接以上结果得到商品对a-b的向量表示为[0.92,0.88,0.91,0.79,0.83,0.93,0.43,0.63,1,1]。如图4所示,是计算商品对距离特征的流程图,具体如下:步骤2-0为开始步骤;步骤2-1为输入商品对列表item_pairs={item_pairl},其中l=1,2,3…n,item_pairl为商品对(pl,ql)的向量表示n为总商品对数;步骤2-2为初始化用于遍历商品对列表的循环变量i=1;步骤2-3为计算item_pairi的jaccard相似度特征;步骤2-4为计算item_pairi的manhattan距离特征;步骤2-5为计算item_pairi的euclidean距离特征;步骤2-6为计算item_pairi的cosine相似度特征;步骤2-7为计算item_pairi的canberra距离特征;步骤2-8为计算item_pairi的chebyshev距离特征;步骤2-9为计算item_pairi的bray-curtis相似度特征;步骤2-10为循环变量i自增1;步骤2-11为判断循环变量i是否小于等于总商品配对数n,若是,执行2-3,否则,执行2-12;步骤2-12为结束步骤。在这个步骤里,是对商品对进行向量表示。每种相似度度量函数都是对信息进行压缩表示,使用多种相似度度量函数,可以保留更多信息。步骤s3:结合相似物品对的向量表示和随机采样的物品对的向量表示训练分类模型,以获得用于预测相似物品的模型。举例来说,本实施例中,步骤s3主要是基于多轮随机负采样训练模型。输入的训练数据只有人工标注好的正例(相似)商品对,该步骤是为了解决从正例生成负例以训练模型,所以该步骤遇到的难点是训练集极度不平衡(正例和负例的不平衡),负例不相似商品对的数目远远大于正例相似商品对的数目。传统的做法通常是标一些负例样本用于训练,如图7所示,圆圈表示正例,叉表示负例,负例太过稀疏,无法很好的确定类别边界。该步骤采用的是多轮随机负采样得到很多轮数据样本。它的理论前提是任意挑选两件同一品类的商品出来,有极大的概率他们是不相似的商品对,所以随机挑选出的商品对以极大的概率可以作为负例。如图8所示,圆圈表示正例,叉表示负例,其中叉旁边的标号代表是哪轮随机负采样后得到的负例,即同样的标号代表同一次随机负采样后得到的负例,可以看出,多轮随机负采样可以很好地逼近类别边界,以获得更好的分类效果。具体包括以下步骤:步骤301,初始化负采样次数,例如设置采样次数为sampling_times,即随机负采样的总次数。步骤302,随机负采样,其负采样处理是从全部商品对中随机负采样和正例等量的商品对来训练模型步骤303,训练模型,采用六种分类器训练模型,其包括朴素贝叶斯、逻辑回归、支持向量机、k最近邻、随机森林、梯度提升决策树,以步骤s2所得的距离作为商品对特征,商品对是否相似作为类标来训练二分类模型。例如,将负采样次数设置为20。随机挑选商品对作为负例,挑选出的商品对数目同正例数目一致。每一次负采样的负例数据和手工标注的正例数据合并后,训练6个分类模型朴素贝叶斯、逻辑回归、支持向量机、k最近邻、随机森林、梯度提升决策树。每次负采样训练出6种模型,20次随机负采样训练出120个模型,将这些模型同时用于下面的预测。如图5所示,是基于多轮随机负采样训练模型的流程图:步骤3-0为开始步骤;步骤3-1为初始化负采样次数sampling_times;步骤3-2为输入模型列表models={modelk},其中k=1,2,3…k,其中k为模型种类数,在本专利中k等于6,分别为朴素贝叶斯、逻辑回归、支持向量机、k最近邻、随机森林、梯度提升决策树;步骤3-3为初始化用于记录负采样次数的循环变量i=1;步骤3-4为随机负采样商品对作为负例;步骤3-5为枚举下个modelk;步骤3-6为训练modelk;步骤3-7为判断是否已枚举完所有模型;步骤3-8为循环变量i自增1;步骤3-9为判断循环变量i是否小于采样次数sampling_times,若是,执行3-4,否则,执行3-10;步骤3-10为结束步骤;本发明还提供一种预测相似商品的方法,利用上述步骤s1-s3的训练预测相似物品模型的方法获得的所有模型分别预测商品对,以获得所述商品对的预测结果,例如可以采用投票法获取预测结果。步骤401,预测新数据;步骤s3所得已经训练过的模型预测新商品对是否相似并记录结果,一共为m个模型,其中m=k×sampling_times,k为分类器种类;sampling_times为采样次数。步骤402,计算并输出预测结果;假设由步骤401得到一对商品的预测结果列表:predictions={pi},其中i=1,2,3…m,当pi等于1表示模型判断为相似商品对,等于0表示为相异商品对,取predictions的众数(例如采用投票法)作为最终预测,并输出众数为1,即判断为相似的商品对。例如,如图6所示,模型预测集成的具体步骤:步骤4-0为开始步骤;步骤4-1为输入已训练模型列表trained_models={trained_modelk},其中k=1,2,3…m,m为总模型数;步骤4-2为初始化遍历模型列表的循环变量i=1;步骤4-3为用trained_modeli预测新数据;步骤4-4为循环变量i自增1;步骤4-5为判断循环变量i是否小于总模型数m,若是,执行4-3,否则,执行4-6;步骤4-6为计算各商品预测结果的众数作为类标;步骤4-7为输出类标为1商品对;步骤4-8结束步骤。以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本
技术领域
中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1