文/万玉龙 顾峰 柏小颖 邱晓茜
本文设计了冷链物流智能配载推荐算法,本系统最主要的功能就是系统能够自动给用户推荐信息,能够大幅减少冷链物流管理成本,有效增加冷链物流经济绩效,助力国家双碳达峰目标任务完成。
基于用户的协同过滤推荐就是把用户当做一维向量,将用户对物品的偏好作为向量的项,将一维向量的距离用来表示用户的相似度。该推荐算法原理如表1.1所示,假设有三个用户,1用户爱好1物品、3物品,2用户爱好2物品,3用户爱好1物品和3物品以及4物品。综上所述,在这三个用户的偏好文档中,用户1和用户3拥有相同的喜好物品1和物品3,可以判断他们的偏好比较相似,因此我们可以推测用户1也很有可能喜欢物品4,将其推荐给用户1。
表1.1 基于用户的协同过滤推荐原理
a)建立用户模型
协同过滤算法的输入数据通常表示为一个m*n的用户—评价矩阵R,用户数用m来表示,项目数用n来表示,第i用户关于第j项目之评价数值用rij来表示。
图1.1 评价数值的矩阵公式
b)寻找最近邻居。通过计算目标用户与其他用户之间的相似度,算出与目标用户最相似的“最近邻居”集。即:对目标用户i产生一个以相似度sim(i,j)递减排列的“邻居”集合。该过程分两步完成,即求解用户间相似的程度,可以执行皮尔森系数、余弦相似性以及修正的余弦相似性等等计算法。求解相似程度一般用以下三个方法:
(1)余弦相似性
每一个用户的评分都可以看作为维项目空间上的向量,用户没有对项目进行评价数值,那么该用户关于相关项目评价数值就是0。向量之间余弦的夹角能够度量相关用户间相似的程度。假设i向 量与向量各表示i用户与j用户第n相关项目的评价数值,则用户和用户之间的相似性sim(i,j)为:
注释说明,两用户的向量模之积就是分母,两用户的评价数值向量之内积就是分子。
(2)相关相似性
设用户i和用户j共同评分过的项目集合用Iij表示,Iij=Ii∩Ij,则用户i和用户j之间的相似性sim(i,j)通过Pearson相关系数度量:
说明,Ri,d表示用户i对项目d的评分,i用户与j用户关于相关项目打分之平均评价数值分别用来进行表示。
(3)关于余弦的相似性修正
在余弦相似性度量方法中,没有考虑不同用户的评分尺度问题,修正的余弦相似性度量方法通过减去用户对项目的平均评分改善这一缺陷。假设以Iij来表示i用户与j用户一起评价数值后的项目之集合,Iij=Ii∩Ij,i用户与j用户评价数值后的项目之集合可以用来表达,那么sim(i,j)可以表示为i用户与j用户间相似的程度,具体表达公式如下:
其中,Ri,d表示i用户对d项目的评价数值,i用户与j用户关于相关评价项目的平均评价数值各用和来进行表示。
根据大数据求解系统中全部用户相似的程度,帮助目标的相关用户求解出最靠近的K数量的邻居。邻居产生的方法和原则一般包含两个大类,具体情况如下:
2.2 不同b值下的诊断指标 对不同b值下肺部结节良恶性的相关诊断指标进行统计,结果显示,b值为400 s/mm2时特异度、准确度、阳性预测值、阴性预测值均为最高,而b值为400或800 s/mm2时,其敏感度均为91.28%,不同b值间敏感度相比较差异均有统计学意义(P<0.05),见表2。
图1.2 最近邻居的产生过程示意图
基于物品的协同过滤原理与基于用户的协同过滤原理基本相似,但它只需要计算物品相似度,其基本思想是通过计算物品与物品之间的相似度,对这些物品之间的相似度进行分析,挖掘出数据中与目标物品距离最近的集合,然后根据集合中的物品的评分对目标物品的评分进行预估,选择评分最高的前N项推荐给用户。
该推荐原理如表2.2所示,假设有三个用户,1用户爱好1物品和3物品,2用户爱好1物品、2物品和3物品,3用户爱好1物品。由于用户1和用户2同时喜欢物品1和物品3,可以推断喜欢物品1的用户可能会喜欢物品3,那么认为对于物品1,和其相似的物品是物品3,而根据3用户爱好1物品,能够推理出用户3很可能喜欢物品3,所以将物品3推荐给用户3。
其中建立用户模型与基于用户的协同过滤推荐算法一致,接下来主要说明最近邻居集的形成和预测评分,已经产生推荐结果。
表2.2 协同过滤关于物品的推荐算法原理
a)形成目标用户邻居
实现基于物品的协同过滤推荐算法重点在于实现物品之间的相似度的计算。根据用户—评价矩阵R,计算目标物品与其他物品之间的相似度,获得目标物品的最近邻居。先分离出共同评过分物品i和物品j的用户,接着执行相似性求解。相似针对用户的协同过滤推荐算法之中求解相似性用户办法,算法过程中主要涉及到上文提到的余弦相似度、皮尔森相似系数和修正的余弦相似性系数等。
b)余弦的相似程度
把两个物品看作空间中的两个向量,通过计算两个向量的夹角余弦值来得到相似度。假设物品i和物品j的评分向量分别用向量i和向量j表示,则物品i和物品j之间的相似性可以用如下公式进行计算:
c)修正的余弦相似性
相比基于用户的协同过滤,修正的预先相似性算法与其相似的方面为修正的余相似性度量方法考虑到了不同用户的评价尺度的问题,假设i物品与j物品全被评价过数值的用户之集合用Iij来进行表示,i物品与j物品评价过数值的用户集可以用Ii和Ij分别进行表达,那么i物品与j物品间相似的程度可以表示为:
d)相关相似性
相似于基于用户的协同过滤,相关相似性一般通过皮尔森相关系数进行计算,用Iij表示物品i和物品j都评过分的用户集合,则物品i和物品j之间的相似性sim(i,j)通过Pearson相关系数度量:
其中,Ri,d表示用户i对项目d的评分分别是指用户关于i物品与j物品平均的评价数值。
e)推荐的产生
目标用户对物品的评分的预测通过根据邻居对物品的评分来计算,选择最高的Top-N项推荐给目标用户。考虑到评分尺度不同的问题,采用平均加权策略进行推荐,公式如下:
注释说明,i用户同j用户间相似的程度用sim(i,j)来进行表示,最靠近的邻居j用户关于d物品评价的数值用来Ri,d进行表示,i用户与j用户关于物品平均的评价数值分别用Rˉi和Rˉj来进行表示。
上述两种算法在处理大数据时会存在一定的缺陷,因为在处理海量数据时需要通过两种方法产生推荐这样计算量会很大,在运算上花费大量时间且效率低。而Slope One推荐算法执行效率较高,结果相对更加准确,其基本原理与基于物品的协同过滤基本相同,是一种轻量级的协同过滤推荐。Slope One推荐是通过用户对物品的评分,需要计算物品间的差值,通过f(x)=ax+b函数得到,其中a=1,即斜率为一。Slope One算法原理如表3.3和表3.4所示。
表3.3 用户评价分值表
表3.4 推出评价分值表
由表3.3表示所得,假设用户1对物品1打分为3,用户2对物品1打分为1,对物品3打分为3。系统计算出所有用户对1物品、2物品、3物品平均评价数值分别是2、3和3。根据平均打分推理出结论:对物品2的评分=对物品1的评分+1;对物品2的评分=对物品3的评分。用户1根据结论可以推算出对物品2,物品3的评分都是4。用户2根据前半个结论推算对物品2的评分是2,根据后半个结论推算的评分是3,遇到这种情况时需要取两者平均值即2.5。
该协同过滤推荐算法的系统把相似程度相对最高的三种用户当做最近的邻居。文章在原系统中综合运用了皮尔森相关性求解的用户和物品相似度,计算得出其最近的邻居三个。
冷链物流智能配载推荐算法是一项繁琐、复杂的工作。以冷链物流智能配载推荐算法为对象,实现冷链物流车源、货源、库源的信息智能配载推荐功能。根据冷链物流智能配载推荐的实际开发需求,借助开源框架Mahout,调用其中的API接口设计一个简单的冷链物流推荐引擎原型系统,然后通过Myelipse、MySQL和Tomcat等开源工具实现一个Java Web系统。冷链物流智能配载推荐系统能够大幅减少冷链物流管理成本,有效增加冷链物流经济绩效,助力国家双碳达峰目标任务完成。由于团队成员能力水平有限,本推荐算法的设计还存在一些不足,今后团队成员将进一步研究与完善。
引用出处