1. 引言
随着电子商务和互联网技术的快速发展,当前的商业模式急速演变成新的模式,而用户的需求也从最初对产品功能(价格、质量、性能)等的需求,变成对消费体验(在线互动,信息共享)等的需求,更高等级是对服务生态系统(产品生态、产品生命周期服务)等的需求 [1]。由此C2M (用户直连制造)商业模式被提出。C2M模式需要满足的客户个性化定制的需求,工厂客户提供订单定制的平台,客户能够全程参与到工厂的产品设计和订单配置的过程中。由于产品属性的多样性和组合性,可以供客户定制的产品的订单能够达到成千上万的数量级,因此通过个性化智能推荐算法,能为客户的订单配置提供建议,减少客户定制的难度和时间。
目前个性化推荐算法基本上有以下几种:基于协同过滤的推荐技术、基于内容的推荐技术、基于关联规则的推荐技术等 [2]。而协同过滤技术是当前推荐系统最广泛应用的和最有效的。协同过滤算法是根据用户历史评分数据来预测目标用户对项目评分。大量的学者研究协同过滤推荐技术。于洪提出了遗忘曲线模型的协同过滤算法 [3],刘超慧等提出惩罚因子和时间权重的改进 [4]。吴彦文等结合时间效应和信任度算法提高了算法推荐的速度和准确率 [5]。Liu C等提出了应有于大规模定制的协同过滤推荐方法 [6]。上述学者研究了协同过滤推荐算法的改进方法,说明了时间参数能提高推荐结果的准确性。但是大多数改进算法仅考虑用户历史行为参数,针对的是用户的兴趣,而没有考虑项目的信息参数,如用户A与B的兴趣非常相似,根据协同过滤方法,A喜欢的项目x,B也极有可能喜欢,但是如果考虑项目x的时间参数,比如电影的上映年份,因电影的年份久远会造成电影分辨率低,历史文化差异大,甚至不能获取观影资源等问题,即使推荐项目x给用户B,也是无效推荐。即失效项目会影响用户的兴趣,降低推荐的成功率。
不同于电商的产品,C2M模式推荐的是工厂的定制产品,具有更多的属性,并且C2M模式在实时定制平台的能够提供给用户更多的定制信息,比如存货数量,生产时间,发货时间等。这些信息虽然不会影响产品的品质,但是极大地影响用户下单的兴趣,如果一个订单的项目的属性超过用户的接受范围,那么用户将不考虑这个产品。为了描述项目本身信息对用户的影响,通过用户满意程度来表示用户对项目信息的接受程度。在量化用户的满意程度方面,余建军 [7] 和陈萍 [8] 等学者提出了模糊时间窗隶属函数来决定用户的满意度。曹霞 [9] 和袁杰 [10] 等学者通过服务质量评价来决定用户的满意度。
本文为了解决C2M模式项目信息利用的问题,提出基于用户满意度的协同过滤算法。利用用户对项目本身的时间信息的交互记录,通过模糊时间窗函数构建用户的满意度模型,计算当前用户对项目的时间信息的价值大小。再结合协同过滤算法,同时考虑用户的兴趣和项目信息属性,得到更具有价值的推荐结果。
2. 算法研究与设计
2.1. 基于用户的协同过滤算法
协同过滤技术分为基于用户的协同过滤算法和基于项目的协同过滤算法 [11]。两种的算法的主要区别是根据现有的评分数据来找出相似用户还是相似项目,Sarwar [12] 比较了两种方法的性能和实用性。吕锋 [13] 和傅鹤岗 [14] 的研究说明了基于项目的协同过滤算法更适用实时性和个性化产品推荐的系统,由于C2M模式性化项目数量大且评分数据稀疏,不适用于基于用户的协同过滤算法。本文采用基于项目的过滤算法进行研究。其步骤如下
1) 收集用户数据,生成用户–评分矩阵
定制平台通过收集用户对产品的历史互动数据,转换成用户对产品的评分数据,用户u对项目i评分记为
,通过量化处理转换为
的用户–评分矩阵,评分矩阵表示为R:
(1)
2) 相似度计算
相识度计算目前常用余弦相似度法、皮尔逊相似度和修改余弦相似度计算方法,皮尔逊不适用于稀疏度较高的数据集 [15],而本文重点是关注用户满意度对推荐的影响,故本文选择余弦相似度计算出项目i和j之间的相识度,记为
:
(2)
其中
、
表示用户u对项目i和j的评价。
3) 最近邻居集合
采用Top-K方法选出最近邻居集合,即通过设定最近邻居数K,取相似度最大的前K个项目作为最近邻居集N,本文选取K = 30作为参数取值。
4) 预测评分值计算
通过最近邻居集对项目i的评分和相识度可以预测目标用户u对项目i的评分
,计算公式如下:
(3)
其中,
表示最近邻居中对项目i评价过的用户,
是目标项目的平均评分,考虑到不同用户评分的差异性,
取的是目标项目和最近邻居共同的项目的平均评分。
2.2. 用户满意度模型
用户满意度是用户对生产时间的要求及对服务体验的评价,用户的满意度是用户对服务能力评价的硬指标,对用户的购买需求有很大的影响 [16]。所以本文研究通过项目的时间信息来生成用户满意度模型。,而为了量化用户满意度,本文通过模糊时间窗隶属函数处理生产时间,如下公式所示:
(4)
其中
表示产品实际生产时间,
表示用户的满意度,实际生产时间的有效范围为
,用户理想的生产时间范围为
,实际生产时间在此之内表示用户能够完全接受,而随着时间的增加,用户满意度降低直至0。如图1(a)所示。实际上人对时间的感知过程并不是线性的,而是指数衰减,参考艾宾浩斯遗忘曲线 [17],可以对满意度函数调整,如下公式所示。图形如如图1(b)所示。
(5)
其中
为衰减常数,
。
(a) 线性用户满意度函数
(b) 指数用户满意度函数
Figure 1. Relationship between project time and user satisfaction
图1. 项目时间与用户满意度关系
2.3. 协同过滤推荐算法改进策略
基于以上模型,本文改进相似度的计算方法,根据用户的评分偏好和用户的满意度综合评价,对项目之间的相似度用加权的方式重新计算有效值,公式表示如下
(6)
其中的
是融合参数,
越大表示系统推荐的方案关注用户的兴趣,相反说明系统用户的满意度影响更大。
参数的取值根据应用环境有所变化,根据王真 [18] 的物流服务质量评价体系的研究,时效性对用户满意度影响约为20%,故这里的取值为0.8。通过优化的相似度可以得到优化的最近邻居集合NS。
为了进一步对推荐结果进行优化,防止推荐无效结果,结合用户满意度得出预测评分值公式为:
(7)
3. 实验
本文通过实验进行验证提出的方法可行性。实验环境为:CPU:i5-3470双核3.2 GHz,6 G内存,Windows10操作系统,Python3.8开发语言,Pycharm11.0集成环境。
3.1. 数据集
本文将采用MovieLens的ml-1m数据集进行实验。该数据集是GroupLens工作组收集电影评分数据集,包含6040个用户在2000年对3952个电影的1,000,209个评分,评分值在1~5的整数,分值越高,表示电影越偏爱。数据包括3张数据表,其内容如下表1所示。

Table 1. Structure description of data table
表1. 数据表的表结构描述
3.2. 实验结果与分析
1) 用户满意度模型验证
用户满意度关注的是项目时间信息的影响,通过对MovieLens数据进行处理,从而得到用户对电影上映年份之间的交互记录,统计用户对同一时间上映的评论数量,可以得到按电影年份的评论数量,为了方便显示,将年份分成了8个时间段,并求出时间段内的评论数量的平均值。如图2所示。

Figure 2. The average number of comments in different time periods
图2. 不同时间段的评论数的平均值
可以从图2明显看出电影上映年份跟用户的评论数的关系,电影上映年份距离当前时间越近,评论数越多,也就表示用户对项目的信息越满意,并且整个趋势呈指数增长。与预期相符合。
2) 满意度衰减常数
的影响
为了确定
对算法的影响,使用MAE评估推荐的准确率,MAE值越小,准确的越高,MAE计算公式如下所示:
(8)
其中
表示测试集评分,
表示为实际评分,n表示评分个数。
实验
按步长0.1进行实验,实验结果如图3所示。

Figure 3. Relationship between
and MAE
图3.
与MAE的关系
根据实验结果,
取0.4时MAE值最小。故实验选取0.4作为参数取值。
3) 比较不同测试集比率和MAE的关系
通过改变测试集比率比较传统协同过滤算法和本文改进的算法的推荐精度,比较结果如图4所示。

Figure 4. MAE comparison of recommended algorithms
图4. 推荐算法的MAE比较
实验表明随着测试集比例的增加,MAE呈现上升趋势,这是由于训练集比例降低造成数据稀疏,这也是协同过滤算法存在的缺点。而本文提出的改进算法,能够通过项目信息得到满意度的权重,不存在数据稀疏性的问题,推荐的精度也比传统算法精度更高,同时改进算法也能在一定程度上缓解传统推荐算法的冷启动和数据稀疏的问题,在推荐结果上,项目的价值也更符合用户的偏好,更具有实际意义。
4. 结论
本文面向C2M模式,考虑项目信息对用户产生的价值,并通过用户满意度模型量化项目信息的价值大小,并且通过实验验证了模型的准确性,并结合传统协同过滤算法提出一种基于用户满意度的协同过滤推荐算法,同时考虑了用户的历史评分偏好和用户对项目信息的满意度,通过实验也证明了改进算法改进的算法能够推荐更加准确的结果,产生更具有实际意义的项目,提高了推荐的效率。