1. 引言
随着互联网的不断发展,人们每天产生与接收的信息量呈爆炸式增长,在无形中造成了信息过载的问题。人们迫切需要在海量信息中快速获取他们感兴趣的部分,即所谓个性化信息,于是推荐系统和推荐算法就此应运而生。推荐算法的本质是一种信息过滤技术,它根据用户对事物的偏好或者观察到的行为,通过过滤出大量的动态以及重要信息的片段,来解决信息过载的问题 [1]。同时,推荐算法作为偏好学习的重要应用方向之一,其类型下的商品推荐系统已广泛应用于我们的生活之中。国内外也有很多学者对推荐算法进行了深入的研究和探讨。
江海洋(2010)提出了在评论中挖掘文字信息的新方法,将评论中用户所关注的信息挖掘出来并进行评分,从而对其他待评分对象进行预测并产生推荐 [2] ;李京等(2011)在研究推荐库和用户兴趣模型的基础上加入了推荐引擎,实现了基于电子商务的个性化推荐系统 [3] ;崔睿宇等(2019)系统地介绍了基于内容、协同过滤、基于关联规则、基于知识和基于人口统计信息等主流的推荐算法,对组合推荐算法的思路也进行了简要介绍,给出了算法评价标准并使用实验常用数据集进行了实证研究 [4] ;而国外也有很多学者也对此进行了深入的研究,如Mohsen Ahmadi Fahandar等(2017)提出基于类比推理的排序学习的方法 [5] ;Sandeep K. Raghuwanshi等人(2019)针对推荐系统中的协同过滤技术进行了研究 [6] ;Bag, Sujoy等人研究了使用相关的Jaccard相似度进行有效的推荐生成 [7]。
推荐算法的出现和发展改变了信息检索和个性化推荐的模式,也有效地解决了数据过载等问题。随着推荐算法的深入研究与推广,推荐算法作为一种全新的、智能化的方法已经被广泛地使用到了生活中的各个领域之中,如商品推荐、广告推荐、浏览推荐等。然而,目前已经存在的绝大部分的推荐系统的研究主要集中在同类物品的推荐算法上 [8]。为了解决不同类别的个性化推荐问题,本文提出了一种基于物品相似度的异构推荐算法,并且以异类商品的推荐为例,进行深入的研究与探讨。
2. 物品相似度
在进行推荐算法的研究时,通常会涉及相似度理论及计算,相似度可以用来衡量用户或项目之间的相似或相关程度。在推荐算法的研究中,为了将不同的物品关联起来而使用的相似度有物品相似度和用户相似度,物品相似度是用来衡量物品之间的相似度大小,而用户相似度衡量的是不同用户之间的相似度值 [9]。本文需要解决的关键问题是如何将不同类别的商品联系起来,这里就采用物品相似度理论来完成异类商品的推荐。下面介绍几个相关的概念。
1) 物品相似度
物品相似度是用来衡量不同的个体之间相似性的方法,其计算方法是通过计算个体特征值之间的相似度来完成的。在这里,个体可以指商品、文本、图片等。对于不同的个体,通过特征值的形式就可以完成对个体特征的描述。物品相似度就是通过比较不同物品特征值之间的差异性或者相似性,来完成对异构项目的关联。为了度量相似性,最常用的两种度量方法分别是基于相关性和基于余弦值的相似性度量方法,即皮尔森相似度和余弦相似度。
2) 文本相似度
由于本次研究所使用数据集的特殊性,每个商品的特征值是通过如下方式给出的,首先对商品标题进行分词,分词后的词语以ID类脱敏处理的形式给出。因此,在本文的研究中,在衡量不同物品的相似度时,因为特征值的形式类似于文本的形式,所以使用文本相似度来衡量不同类别物品之间的相似度。
3) 文本相似度的计算步骤
简单来说,文本相似度的计算步骤表述如下:
4) 文本相似度的计算公式
文本相似度的计算公式如下:
其中,similarity(x, y)表示文本字段x和y的相似度函数,Co(x, y)表示字段x和y的分词结果共同出现的次数,|x|表示为字段x的词语的总数,si为相似度参数,其中i = 1, 2, … , n。
3. 基于物品相似度的异类商品推荐算法
在处理异类商品推荐的时候,存在两个关键的问题,那就是相似度标准的选取和推荐成功率的计算。在这里,为适应数据集本身的参数设置,建立了以下模型来解决:
假设数据集中有商品a,b,c,d其中a和b是属于类别cat.1的商品,c和d则是属于类别cat.2的商品,那么a,b和c,d就叫做异类商品。且商品a具有特征值xa,商品b具有特征值xb,商品c具有特征值yc,商品d具有特征值yd。那么,对于某一个用户而言,若该用户购买了商品b,通过推荐算法计算出c,d的特征值与b相似,将给这名用户推荐商品c或者商品d。
为了更直观的介绍本文所提出的数学模型,表1给出了所用到的数学符号及情况说明:
在本文所提出的异类商品推荐算法中,所研究的对象是商品集,即由一个商品集推荐另一个商品集的推荐算法。首先,选取一对目标商品ai和ci。然后,需要通过相似度的计算,得到目标商品集C和推荐商品集A。那么,基于物品相似度的异类商品推荐算法的研究问题可以表示如下:
输入:目标商品ai和ci,且ai和ci分别属于不同的两个商品类别;
输出:相似度s1,s2,推荐商品集合A和推荐成功率。
在基于物品相似度的异类商品推荐算法中,对于相似度和推荐成功率的计算方法如下:
1) 相似度计算
相似度的计算方法与前文介绍的文本相似度一致,由于所选数据集中不同类别的商品其特征值f的数目不同,因此,需要首先计算出数据集中所有商品特征值的平均值fmeans,再选择适当的特征f的个数,通过计算得到一个归一化的相似度s1,s2,其公式如下:
2) 推荐成功率计算公式
推荐成功率表示一个用户购买了所推荐的商品的概率。其计算公式为:
其中,uA表示购买了商品集A中商品的全部用户,uB表示所有购买了商品集B中商品的用户,|uA∩uB|表示为既购买了商品集A中的商品又购买了商品集B中的商品的用户的数量,|uA|表示所有购买了商品集A中的商品的用户的总数。
此时,整个测试集的推荐成功率CA计算公式为:
其中,n为测试集的个数。
4. 实验设计与结果
4.1. 数据集说明
为了选取符合研究条件的数据集,本文从阿里云天池大数据众智平台中,提取了天池比赛的淘宝穿衣搭配-挑战Baseline数据。然后根据研究需要,本文对原始数据集进行了拆分,得到两个分表格分别为商品基本信息数据和用户历史行为数据。其中,记录商品信息的表2仅用到了前三列的文本部分,这些是用来描述商品的特征。另外,需要特别说明的是所有ID类字段,包括user_id,item_id,category_id均已进行脱敏处理。表2和表3分别为商品信息和用户历史行为信息。
实验所使用的环境为:Intel i5-8250U CPU,8G运行内存,Win10操作系统,MATLAB R2016a。
4.2. 数据预处理
原始数据集中存在的购买记录有10万余条,类型数量也较多,为了方便进行分析,首先要对数据进行预处理,这里将原数据集按照购买记录中的数目由大到小分成4个类别,取其中的三类数据big_set1,big_set2和big_set4。它们的各项具体记录参数如表4所示:

Table 4. Data preprocessing results
表4. 数据预处理结果
此外,在原数据集中,购买记录均为淘宝的服装商品,其特征值在表2中terms这一行给出,是将淘宝网中的商品标题分词后的词语进行ID类脱敏后的结果。由于淘宝网中商品的标题长度不一,因此首先要计算商品的平均特征数,通过计算原数据集中所有商品特征值的平均数为:fmeans = 14,这是实验中需要用到的重要的相似度计算参数。
4.3. 实验结果与分析
为了检验所提出的算法在实际应用中的推荐效果,本文针对数据预处理之后所提取的三个子数据集来进行实验。实验方法为选择其中一个数据集为目标集,另一个数据集为推荐集,将推荐集中的相似物品推荐给目标集中购买相似物品的用户,如果用户确实购买了该物品则表示推荐成功。为了让目标商品的购买记录尽可能的多,于是从每类别的数据集中分别提取了购买记录最多的前5名的商品进行分析,并将不同类别的不同商品的编号、类别等信息分别记录在各个实验结果的表格中,表5和表6分别是实验一和实验二的结果,具体结果如下:
如表5所示,第一列表示实验组的编号,第二列记录了从商品集big_set1中选取了5个购买记录较多的商品及这些商品的编号A-ID,第三列则是这些商品的类别编号A-cat.ID,第四列是该商品在数据集中出现过的次数,记为A-freq.,第五列是相似度参数
的值,第六列为目标商品集合B的大小,表示为|B|,第七列记录了商品集合B中商品的编号B-ID,第八列是类别编号,记为B-cat.ID,第九列则是B中的商品在big_set2中出现的次数B-freq.,第十列是相似度参数
的大小,第十一列是推荐商品集合A的大小,也就是推荐集合中商品的个数。最后一列是计算出来的推荐成功率,用CA来表示。我们主要关注的是最后一列的推荐成功率,在表5中,商品的平均推荐成功率为84.01%。
实验二是选取商品集big_set1和big_set4来进行推荐,在本组实验中,选取的第一个商品可能由于本身数据存在偶然性,该商品目标集中的5个目标商品进行推荐得到的推荐成功率为0。计算下来,本组实验的推荐成功率的平均值为66.19%,但在其他情况下的推荐成功率还是较高的。
5. 结论
本文针对推荐算法领域中的热点研究问题,即现阶段的推荐算法研究主要还集中在相同类别的物品推荐上这一问题,通过对异构推荐算法的研究,提出了一种基于物品相似度的异类商品推荐算法,本推荐算法的思想是通过一个目标商品集合来推荐另一个不同类的商品集合,通过实证研究表明该算法可以得到较好的推荐结果。特别地,在推荐的过程中,基于某一类的目标商品,可以同时推荐好几类其他的商品,而不是只局限于只有两个类别的推荐。综上所述,本文所提出的基于物品相似度的异类商品推荐算法是一种推荐效果较好且值得推广的推荐算法。