基于进化多目标算法提取系统关键用户的推荐方法与流程

文档序号:16135133发布日期:2018-12-01 00:51阅读:149来源:国知局

本发明属于计算机技术领域,更进一步涉及物品推荐技术领域中的一种基于进化多目标算法提取系统关键用户的推荐方法。本发明可用于提取推荐系统的关键用户,将提取的系统关键用户及其携带的信息投入到推荐过程中,为系统目标用户推荐其喜欢的诸如图书,电影和音乐等物品。

背景技术

推荐系统是应对信息爆炸问题的有效工具。通过分析用户的历史行为数据,挖掘用户的兴趣爱好,推荐系统为用户推荐其感兴趣的诸如图书,电影和音乐等物品。推荐系统中的关键用户是携带系统大部分信息的一组用户,提取系统中的关键用户,代替系统所有用户投入到推荐过程中,能够为系统目标用户推荐其喜欢的物品。目前,基于进化算法的推荐系统关键用户提取方法是解决推荐系统关键用户提取问题的一种有效方法,该方法以平均绝对误差为优化目标,通过种群进化提取系统关键用户,提升推荐结果准确率的同时,却降低了推荐结果的覆盖率。

河海大学在其申请的专利文献“基于关键用户和时间上下文的二部图推荐方法”(申请号:201711190064.2,申请公布号:cn108038746a)中公开了一种基于关键用户和时间上下文的个性化推荐方法。该方法的实施步骤是:步骤1,采集所有用户对物品的反馈数据;步骤2,根据评分数量权重和用户对商品的评分样本标准差衡量用户的交易经验度和评分准确度,确定每个用户的权威度,根据用户的权威度大小来提取关键用户;步骤3,形成每个用户的兴趣偏好邻居集;步骤4,在经裁剪的二部图中进行资源扩散,并在第二步扩散过程中引入时间上下文;步骤5,将步骤4中获得资源最多且用户没有购买过的前n个物品推荐给目标用户,其中n为推荐给目标用户的物品个数。该推荐方法存在的不足之处是,规定用户的权威度大小作为关键用户选择的标准,此标准根据工程实际经验制定,实际应用中获得的推荐结果准确率稳定性不高。

caihongmu等人在其发表的论文“informationcoreoptimizationusingevolutionaryalgorithmwithelitepopulationinrecommendersystems”(proceedingsofthe2017ieeecongressonevolutionarycomputation,文章编号:441-462,2017)中提出了一种基于精英种群的进化算法提取推荐系统关键用户的推荐方法。该推荐方法的实施步骤是:步骤1,建立所有用户和物品评分矩阵;步骤2,初始化父代种群个体,计算所有个体的适应度;步骤3,根据m精英策略,将所有个体按适应度排序,对所有个体执行顺序交叉操作,提取系统关键用户;步骤4,利用提取的系统关键用户计算目标用户对各物品的评分,给出推荐结果。该推荐方法存在的不足之处是,利用该方法提取的系统关键用户投入到推荐过程中,虽然推荐结果准确率有所提高,却降低了推荐结果的覆盖率。



技术实现要素:

本发明的目的在于针对上述现有技术的不足,提出了一种基于进化多目标算法提取系统关键用户的推荐方法。

本发明的具体思路是,将进化多目标算法中优化的种群用本发明中提取的关键用户结果序列集合表示,将进化多目标算法中优化的两个目标函数用本发明中每个候选序列的准确率适应度和覆盖率适应度表示,计算每个候选序列的准确率适应度值和覆盖率适应度值,确定系统关键用户集合,利用系统关键用户为目标用户推荐物品。为了实现上述目的,本发明的具体实现步骤如下:

(1)构建用户物品交互数据矩阵:

输入n个用户对m个物品的用户物品交互数据,创建用户物品交互数据矩阵a(n×m),其中,n表示用户数量,m表示物品数量;

(2)计算每个用户有评分行为的物品数:

对用户物品交互数据矩阵每行求和,得到每个用户有评分行为的物品数;

(3)计算对每个物品有评分行为的用户数:

对用户物品交互数据矩阵每列求和,得到对每个物品有评分行为的用户数;

(4)生成候选序列集合和结果序列集合:

(4a)生成一个空的结果序列集合;

(4b)随机生成n个m维的初始候选序列,其中,n为初始候选序列的数量;

(4c)从n个初始候选序列中任意选取一个未选取的初始候选序列;

(4d)输入系统关键用户的规定提取规模,判断所选初始候选序列中系统关键用户的个数是否等于系统关键用户的规定提取规模,若是,将其作为候选序列,执行步骤(4f),否则,将其作为无效序列,执行步骤(4e);

(4e)利用随机修理方法,将无效序列修理为候选序列;

(4f)判断生成的候选序列个数是否达到n个,若是,则执行步骤(5),否则,执行步骤(4c);

(5)计算每个候选序列的两个适应度值:

(5a)按照下式,计算每个候选序列的准确率适应度值:

其中,ph(s)表示第h个候选序列的准确率适应度值,ui表示第i个用户有评分行为的物品数,的取值为0或1,当时表示第h个候选序列中第i个用户被提取为系统关键用户,表示第h个候选序列中第i个用户未被提取为系统关键用户;

(5b)按照下式,计算每个候选序列的覆盖率适应度值:

其中,ch(s)表示第h个候选序列的覆盖率适应度值,αij表示用户物品交互数据矩阵中的元素,ij表示对第j个物品有评分行为的用户数;

(6)确定两个适应度参照值:

(6a)将n个候选序列的准确率适应度值降序排列,选择第一个准确率适应度值为准确率适应度参照值;

(6b)将n个候选序列的覆盖率适应度值降序排列,选择第一个覆盖率适应度值为覆盖率适应度参照值;

(7)确定每个候选序列的邻居序列集合:

(7a)从下式的权重向量集合中任意选取一个未选取的权重向量,作为一个候选序列的权重向量:

其中,h表示构建权重向量的参数;

(7b)判断权重向量集合中的权重向量是否被选取完,若是,则得到所有候选序列的权重向量,执行步骤(7c),否则,执行步骤(7a);

(7c)利用欧氏距离公式,计算每个候选序列权重向量之间的欧氏距离:

(7d)从候选序列集合中任意选取一个未选取的候选序列;

(7e)将所选的候选序列与其他所有候选序列权重向量间的欧氏距离降序排序,选择前k个欧氏距离对应的候选序列作为该候选序列的邻居序列,其中,k为该候选序列的邻居序列的数量;

(7f)判断是否选取完候选序列集合中所有候选序列,若是,执行步骤(8),否则,执行步骤(7d);

(8)计算每个候选序列的所有邻居序列的两个适应度值:

(8a)利用准确率适应度公式,计算每个候选序列的每个邻居序列的准确率适应度值;

(8b)利用覆盖率适应度公式,计算每个候选序列的每个邻居序列的覆盖率适应度值;

(9)更新所有候选序列:

(9a)利用均匀交叉方法,更新所有候选序列;

(9b)从n个候选序列中任意选取一个未选取的候选序列;

(9c)判断所选候选序列中系统关键用户的个数是否等于系统关键用户的规定提取规模,若是,执行步骤(9e),否则,将其作为无效序列后执行步骤(9d);

(9d)利用随机修理方法,将无效序列修理为候选序列;

(9e)判断选取的候选序列个数是否达到n个,若是,则执行步骤(10),否则,执行步骤(9b);

(10)更新每个候选序列的两个适应度值:

(10a)按照准确率适应度公式,计算每个候选序列的准确率适应度值;

(10b)按照覆盖率适应度公式,计算每个候选序列的覆盖率适应度值;

(11)更新两个适应度参照值:

(11a)将n个候选序列的准确率适应度值降序排列,选择第一个准确率适应度值为准确率适应度参照值;

(11b)将n个候选序列的覆盖率适应度值降序排列,选择第一个覆盖率适应度值为覆盖率适应度参照值;

(12)更新每个候选序列的所有邻居候选序列的两个适应度值:

(12a)从候选序列集合中任意选取一个未选取的候选序列;

(12b)按照切比雪夫聚合公式,计算所选的候选序列的切比雪夫聚合值;

(12c)从所选候选序列的邻居序列集合中任意选取一个未选取的邻居序列;

(12d)按照切比雪夫聚合公式,计算所选的候选序列邻居序列的切比雪夫聚合值;

(12e)判断所选候选序列的切比雪夫聚合值是否小于所选候选序列邻居序列的切比雪夫聚合值,若是,执行步骤(12f),否则,执行步骤(12c)

(12f)用所选的候选序列更新所选的候选序列的邻居序列;

(12g)根据准确率适应度公式,计算所选候选序列的所选邻居序列的准确率适应度值;

(12h)根据覆盖率适应度公式,计算所选候选序列的所选邻居序列的覆盖率适应度值;

(12i)判断是否选取完所选的候选序列的所有邻居序列,若是,执行步骤(12j),否则,执行步骤(12c)

(12j)判断是否选取完所有候选序列,若是,执行步骤(13),否则,执行步骤(12a)

(13)更新结果序列集合:

(13a)从结果序列集合中任意选取一个未选取的结果序列;

(13b)从候选序列集合中任意选取一个未选取的候选序列:

(13c)根据支配关系判定方法,判定并记录选取的结果序列与选取的候选序列的支配关系;

(13d)判断是否选取完候选序列集合中的所有候选序列,若是,执行步骤(13e),否则执行步骤(13b);

(13e)判断是否选取完结果序列集合中的所有结果序列,若是,执行步骤(13f),否则,执行步骤(13a);

(13f)从结果序列集合中任意选取一个未选取的结果序列;

(13g)对照记录的支配关系,判断所选结果序列是否至少被一个候选序列支配,若是,将所选结果序列从结果序列集合中移出后执行(13h),否则,执行步骤(13h);

(13h)判断是否选取完结果序列集合中的所有结果序列,若是,执行步骤(13i),否则,执行步骤(13f);

(13i)从候选序列集合中任意选取一个未选取的候选序列;

(13j)对照记录的支配关系,判断选取的候选序列是否不被任何结果序列支配,若是,将选取的候选序列加入结果序列中后执行步骤(13k),否则,执行步骤(13k);

(13k)判断是否选取完候选序列集合中的所有候选序列,若是,执行步骤(14),否则,执行步骤(13i)

(14)计算接近度值:

(14a)从结果序列集合中任意选取一个未选取的结果序列;

(14b)利用欧氏距离公式,计算并记录选取的结果序列的适应度值向量与参照适应度值向量的欧氏距离,作为每个结果序列的接近度分量;

(14c)判断是否选取完结果序列集合中的所有结果序列,若是,执行步骤(14d),否则,执行步骤(14a);

(14d)将所有结果序列的接近度分量的和作为接近度值;

(15)判断接近度值是否小于终止阈值,若是,则执行步骤(16),否则,执行步骤(9);

(16)确定系统关键用户集合:

(16a)输出结果序列集合中的所有结果序列;

(16b)根据工程具体要求,从所有结果序列中选择一个结果序列作为系统关键用户集合;

(17)为目标用户推荐物品:

(17a)从目标用户集合中任意选取一个目标用户;

(17b)为所选的目标用户有过评分行为的物品分别分配1个单位的资源量,作为起始阶段每个物品的资源量;

(17c)将起始阶段每个物品的资源量平均分配给每个关键用户,得到再分配阶段每个关键用户的资源量;

(17d)将再分配阶段每个关键用户的资源量平均分配给关键用户有评分行为的每个物品,得到结束阶段每个物品的资源量;

(17e)将结束阶段所有物品的资源量降序排序,选取前w个物品推荐给所选目标用户,其中,w表示为每个目标用户推荐的物品数量。

(17f)判断是否选取完目标用户集合中的所有目标用户,若是,执行步骤(18),否则,执行步骤(17a)

(18)完成推荐过程。

本发明与现有技术相比有以下优点:

第一,由于本发明将进化多目标算法中优化的种群用本发明中提取的关键用户结果序列集合表示,计算每个候选序列的准确率适应度值和覆盖率适应度值,克服了现有技术规定用户的权威度大小作为关键用户选择的标准,此标准根据工程实际经验制定,实际应用中获得的推荐结果准确率稳定性不高的问题,使得本发明选择的关键用户投入到推荐过程中推荐的物品有更稳定的准确率。

第二,由于本发明将进化多目标算法中优化的两个目标函数用本发明中每个候选序列的准确率适应度和覆盖率适应度表示,确定系统关键用户集合,利用系统关键用户为目标用户推荐物品,克服了现有技术以准确率为单一优化目标,提取的系统关键用户投入到推荐过程中,虽然推荐结果准确率有所提高,却降低了推荐结果的覆盖率和多样性的问题,使得本发明选择的关键用户投入到推荐过程中时,不仅能保证为目标用户推荐的物品的准确率,还提高了推荐物品的覆盖率。

附图说明

图1是本发明的流程图;

图2是本发明仿真图。

具体实施方式:

以下结合附图对本发明做进一步的详细描述。

参照图1,对本发明的具体实现步骤做进一步的描述。

步骤1,构建用户物品交互数据矩阵。

输入n个用户对m个物品的用户物品交互数据,创建用户物品交互数据矩阵a(n×m),其中,n表示用户数量,m表示物品数量。

所述的用户物品交互数据矩阵是指,用户对物品的评分行为数据的矩阵,其中,用1表示用户对物品有评分行为,用0表示用户对物品没有评分行为。

步骤2,计算每个用户有评分行为的物品数。

对用户物品交互数据矩阵每行求和,得到每个用户有评分行为的物品数。

步骤3,计算对每个物品有评分行为的用户数。

对用户物品交互数据矩阵每列求和,得到对每个物品有评分行为的用户数。

步骤4,生成候选序列集合和结果序列集合。

第1步,生成一个空的结果序列集合。

第2步,随机生成n个m维的初始候选序列,其中,n为初始候选序列的数量。

第3步,从n个初始候选序列中任意选取一个未选取的初始候选序列。

第4步,输入系统关键用户的规定提取规模,判断所选初始候选序列中系统关键用户的个数是否等于系统关键用户的规定提取规模,若是,将其作为候选序列,执行第6步,否则,将其作为无效序列,执行第5步。

第5步,利用随机修理方法,将无效序列修理为候选序列。

所述随机修理方法的具体步骤如下:

第一步,计算无效序列中关键用户的数量与规定提取规模的差值。

第二步,判断差值是否大于0,若是,需调整的数量等于差值,执行第三步,否则,需调整的数量等于差值的相反数,执行第五步。

第三步,从无效序列中随机选取一个关键用户,将关键用户变为非关键用户。

第四步,判断选取的关键用户数量是否到达需调整的数量,若是,得到候选序列,否则,执行第三步。

第五步,从无效序列中随机选取一个非关键用户,将非关键用户变为关键用户。

第六步,判断选取的非关键用户数量是否到达需调整的数量,若是,得到候选序列,否则,执行第五步。

第6步,判断生成的候选序列个数是否达到n个,若是,则执行步骤5,否则,执行第3步。

步骤5,计算每个候选序列的两个适应度值。

第1步,按照下式,计算每个候选序列的准确率适应度值。

其中,ph(s)表示第h个候选序列的准确率适应度值,ui表示第i个用户有评分行为的物品数,的取值为0或1,当时表示第h个候选序列中第i个用户被提取为系统关键用户,表示第h个候选序列中第i个用户未被提取为系统关键用户。

第2步,按照下式,计算每个候选序列的覆盖率适应度值。

其中,dh(s)表示第h个候选序列的覆盖率适应度值,αij表示用户物品交互数据矩阵中的元素,ij表示对第j个物品有评分行为的用户数。

步骤6,确定两个适应度参照值。

第1步,将n个候选序列的准确率适应度值降序排列,选择第一个准确率适应度值为准确率适应度参照值。

第2步,将n个候选序列的覆盖率适应度值降序排列,选择第一个覆盖率适应度值为覆盖率适应度参照值。

步骤7,确定每个候选序列的邻居序列集合。

第1步,从下式的权重向量集合中任意选取一个未选取的权重向量,作为一个候选序列的权重向量:

其中,h表示构建权重向量的参数。

第2步,判断权重向量集合中的权重向量是否被选取完,若是,则得到所有候选序列的权重向量,执行第3步,否则,执行第1步。

第3步,利用欧氏距离公式,计算每个候选序列权重向量之间的欧氏距离。

所述的欧氏距离公式如下:

其中,dij表示第i个候选序列的权重向量与第j个候选序列的权重向量之间的欧氏距离,表示开根号操作,λi1表示第i个候选序列的权重向量的第一维向量分量,表示第j个候选序列的权重向量的第一维向量分量,λi2表示第i个候选序列的权重向量的第二维向量分量,表示第j个候选序列的权重向量的第二维向量分量。

第4步,从候选序列集合中任意选取一个未选取的候选序列。

第5步,将所选的候选序列与其他所有候选序列权重向量间的欧氏距离降序排序,选择前k个欧氏距离对应的候选序列作为该候选序列的邻居序列,其中,k为该候选序列的邻居序列的数量。

第6步,判断是否选取完候选序列集合中所有候选序列,若是,执行步骤8,否则,执行步骤第4步。

步骤8,计算每个候选序列的所有邻居序列的两个适应度值。

第1步,利用准确率适应度公式,计算每个候选序列的每个邻居序列的准确率适应度值。

所述的准确率适应度公式如下:

其中,phk(s)表示第h个候选序列的第k个邻居序列的准确率适应度值,的取值为0或1,当时表示第h个候选序列的第k个邻居序列的第i个用户被提取为系统关键用户,表示第h个候选序列的第k个邻居序列的第i个用户未被提取为系统关键用户。

第2步,利用覆盖率适应度公式,计算每个候选序列的每个邻居序列的覆盖率适应度值。

所述的覆盖率适应度公式如下:

其中,dhk(s)表示第h个候选序列的第k个邻居序列的覆盖率适应度值。

步骤9,更新所有候选序列。

第1步,利用均匀交叉方法,更新所有候选序列。

所述的均匀交叉方法具体步骤如下:

第一步,从候选序列集合中任意选取一个未选取的候选序列。

第二步,从所选取的候选序列的k个邻居序列中随机选取两个邻居序列。

第三步,随机生成一个m维的交叉指示向量,其中,交叉指示向量的每一维随机取值为0或1。

第四步,从交叉指示向量中任意选取一维未选取的交叉指示向量分量。

第五步,判断选取的交叉指示向量分量是否为1,若是,则将候选序列的对应维更新为第一个邻居序列对应维的数值,否则,将候选序列的对应维更新为第二个邻居序列的对应维数值。

第六步,判断是否取完所有交叉指示向量分量,若是,执行第七步,否则,执行第四步。

第七步,判断是否操作完所有候选序列,若是,更新完所有候选序列,否则,执行第一步。

第2步,从n个候选序列中任意选取一个未选取的候选序列。

第3步,判断所选候选序列中系统关键用户的个数是否等于系统关键用户的规定提取规模,若是,执行第5步,否则,将其作为无效序列后执行第4步。

第4步,利用随机修理方法,将无效序列修理为候选序列。

所述随机修理方法的具体步骤如下:

第一步,计算无效序列中关键用户的数量与规定提取规模的差值。

第二步,判断差值是否大于0,若是,需调整的数量等于差值,执行第三步;否则,需调整的数量等于差值的相反数,执行第五步。

第三步,从无效序列中随机选取一个关键用户,将关键用户变为非关键用户。

第四步,判断选取的关键用户数量是否到达需调整的数量,若是,得到候选序列,否则,执行第三步。

第五步,从无效序列中随机选取一个非关键用户,将非关键用户变为关键用户。

第六步,判断选取的非关键用户数量是否到达需调整的数量,若是,得到候选序列,否则,执行第五步。

第5步,判断选取的候选序列个数是否达到n个,若是,则执行步骤10,否则,执行步骤第4步。

步骤10,更新每个候选序列的两个适应度值。

第1步,按照准确率适应度公式,计算每个候选序列的准确率适应度值。

所述的准确率适应度公式如下:

其中,phk(s)表示第h个候选序列的第k个邻居序列的准确率适应度值,的取值为0或1,当时表示第h个候选序列的第k个邻居序列的第i个用户被提取为系统关键用户,表示第h个候选序列的第k个邻居序列的第i个用户未被提取为系统关键用户。

第2步,按照覆盖率适应度公式,计算每个候选序列的覆盖率适应度值。

所述的覆盖率适应度公式如下:

其中,chk(s)表示第h个候选序列的第k个邻居序列的覆盖率适应度值。

步骤11,更新两个适应度参照值。

第1步,将n个候选序列的准确率适应度值降序排列,选择第一个准确率适应度值为准确率适应度参照值。

第2步,将n个候选序列的覆盖率适应度值降序排列,选择第一个覆盖率适应度值为覆盖率适应度参照值。

步骤12,计算每个候选序列的所有邻居候选序列的两个适应度值。

第1步,从候选序列集合中任意选取一个未选取的候选序列。

第2步,按照切比雪夫聚合公式,计算所选的候选序列的切比雪夫聚合值。

所述的切比雪夫聚合公式如下:

其中,gte(sh|λj,z*)表示第h个序列的切比雪夫聚合值,sh表示第h个序列,|表示限制符号,λj表示第j个序列的权重向量,z*表示适应度值参照向量,max表示取最大值操作,i表示序列适应度值的序号,q表示序列的适应度值的总数,表示第j个序列的第i个权重向量分量,|·|表示取绝对值操作,fi(sh)表示第h个序列的第i个适应度值,表示第i个适应度参照值。

第3步,从所选候选序列的邻居序列集合中任意选取一个未选取的邻居序列。

第4步,按照切比雪夫聚合公式,计算所选的候选序列邻居序列的切比雪夫聚合值。

所述的切比雪夫聚合公式如下:

其中,gte(sh|λj,z*)表示第h个序列的切比雪夫聚合值,sh表示第h个序列,|表示限制符号,λj表示第j个序列的权重向量,z*表示适应度值参照向量,max表示取最大值操作,i表示序列适应度值的序号,q表示序列的适应度值的总数,表示第j个序列的第i个权重向量分量,|·|表示取绝对值操作,fi(sh)表示第h个序列的第i个适应度值,表示第i个适应度参照值。

第5步,判断所选候选序列的切比雪夫聚合值是否小于所选候选序列邻居序列的切比雪夫聚合值,若是,执行步骤(12f),否则,执行步骤(12c)。

第6步,用所选的候选序列更新所选的候选序列的邻居序列。

第7步,根据准确率适应度公式,计算所选候选序列的所选邻居序列的准确率适应度值。

所述的准确率适应度公式如下:

其中,phk(s)表示第h个候选序列的第k个邻居序列的准确率适应度值,的取值为0或1,当时表示第h个候选序列的第k个邻居序列的第i个用户被提取为系统关键用户,表示第h个候选序列的第k个邻居序列的第i个用户未被提取为系统关键用户。

第8步,根据覆盖率适应度公式,计算所选候选序列的所选邻居序列的覆盖率适应度值;

所述的覆盖率适应度公式如下:

其中,chk(s)表示第h个候选序列的第k个邻居序列的覆盖率适应度值。

第9步,判断是否选取完所选的候选序列的所有邻居序列,若是,执行第10步,否则,执行步骤第3步。

第10步,判断是否选取完所有候选序列,若是,执行步骤13,否则,执行步骤第1步。

步骤13,更新结果序列集合。

第1步,从结果序列集合中任意选取一个未选取的结果序列。

第2步,从候选序列集合中任意选取一个未选取的候选序列。

第3步,根据支配关系判定方法,判定并记录选取的结果序列与选取的候选序列的支配关系。

所述的支配关系判定方法是指,如果候选序列与结果序列的关系至少满足条件1和条件2中的一个条件,则候选序列支配结果序列;如果候选序列与结果序列的关系同时不满足条件1和条件2两个条件,则结果序列支配候选序列。

条件1,候选序列的准确率适应度值大于结果序列的准确率适应度值,且候选序列的覆盖率适应度值大于等于结果序列的覆盖率适应度值。

条件2,候选序列的准确率适应度值大于等于结果序列的准确率适应度值,且候选序列的覆盖率适应度值大于结果序列的覆盖率适应度值。

第4步,判断是否选取完候选序列集合中的所有候选序列,若是,执行第5步,否则执行第2步。

第5步,判断是否选取完结果序列集合中的所有结果序列,若是,执行第6步,否则,执行第1步。

第6步,从结果序列集合中任意选取一个未选取的结果序列。

第7步,对照记录的支配关系,判断所选结果序列是否至少被一个候选序列支配,若是,将所选结果序列从结果序列集合中移出后执行第8步,否则,执行步骤第8步。

第8步,判断是否选取完结果序列集合中的所有结果序列,若是,执行步骤第9步,否则,执行步骤第6步。

第9步,从候选序列集合中任意选取一个未选取的候选序列。

第10步,对照记录的支配关系,判断选取的候选序列是否不被任何结果序列支配,若是,将选取的候选序列加入结果序列中后执行第11步,否则,执行第11步。

第11步,判断是否选取完候选序列集合中的所有候选序列,若是,执行步骤14,否则,执行第9步。

步骤14,计算接近度值。

第1步,从结果序列集合中任意选取一个未选取的结果序列。

第2步,利用欧氏距离公式,计算并记录选取的结果序列的适应度值向量与参照适应度值向量的欧氏距离,作为每个结果序列的接近度分量。

所述的欧氏距离公式如下:

其中,dij表示第i个结果序列的适应度值向量与参照适应度值向量的欧氏距离,表示开根号操作,λi1表示第i个结果序列的适应度值向量的第一维向量分量,表示参照适应度值向量的第一维向量分量,λi2表示第i个结果序列的权重向量的第二维向量分量,表示参照适应度值向量的第二维向量分量。

第3步,判断是否选取完结果序列集合中的所有结果序列,若是,执行第4步,否则,执行第1步。

第4步,将所有结果序列的接近度分量的和作为接近度值。

步骤15,判断接近度值是否小于终止阈值,若是,则执行步骤16,否则,执行步骤9。

步骤16,确定系统关键用户集合。

第1步,输出结果序列集合中的所有结果序列。

第2步,根据工程具体要求,从所有结果序列中选择一个结果序列作为系统关键用户集合。

步骤17,为目标用户推荐物品。

第1步,从目标用户集合中任意选取一个目标用户。

第2步,为所选的目标用户有过评分行为的物品分别分配1个单位的资源量,作为起始阶段每个物品的资源量。

第3步,将起始阶段每个物品的资源量平均分配给每个关键用户,得到再分配阶段每个关键用户的资源量。

第4步,将再分配阶段每个关键用户的资源量平均分配给关键用户有评分行为的每个物品,得到结束阶段每个物品的资源量。

第5步,将结束阶段所有物品的资源量降序排序,选取前w个物品推荐给所选目标用户,其中,w表示为每个目标用户推荐的物品数量。

第6步,判断是否选取完目标用户集合中的所有目标用户,若是,执行步骤18,否则,执行第1步。

步骤18,完成推荐过程。

下面结合仿真实验对本发明的效果做进一步的说明。

1.仿真条件:

本发明仿真实验的运行环境是:处理器为intelcore(tm)i5-3470cpu@3.2ghz,内存为4.00gb,硬盘为1t,操作系统为windows10,编程环境为visualstudioenterprize2015。

本发明的仿真实验是采用推荐系统领域常用的数据集movielens-100k验证本发明在提取推荐系统关键用户并利用关键用户进行推荐的推荐效果,包括943个用户对1682个用户的10000条评分数据,将数据集分割为训练集和测试集,具体数据信息见表1。

本发明的仿真实验中关键用户候选序列的集合大小设定为1000,构建权重向量的参数设定为999,候选序列的维数设定为943,候选序列的邻居序列的数量设定为50,为每个目标用户推荐的物品的数量设定为20。

表1数据集信息表

2.仿真实验内容:

本发明的仿真实验是在输入movielens-100k的训练集数据的基础上,将进化多目标算法中优化的种群用本发明中提取的关键用户结果序列集合表示,将进化多目标算法中优化的两个目标函数用本发明中每个候选序列的准确率适应度和覆盖率适应度表示,计算每个候选序列的准确率适应度值和覆盖率适应度值,确定系统关键用户集合,利用系统关键用户为测试集所有目标用户推荐物品。计算测试集中所有目标用户推荐效果整体的准确率和覆盖率。

本发明的仿真实验的步骤如下:

第1步,输入movielens-100k训练集,利用输入的训练集构建一个943行1682列的用户物品交互数据矩阵,矩阵中的每个元素表示对应行号的用户是否对对应列号的物品有过评分行为,用1表示有评分行为,0表示没有评分行为。

第2步,对用户物品交互矩阵中的每一行求和,得到训练集943个用户中,每个用户有评分行为的物品的数量。

第3步,对用户物品交互矩阵中的每一列求和,得到训练集1682个物品中,对每个物品有评分行为的用户的数量。

第4步,生成1000个关键用户候选序列和一个存放关键用户结果序列的集合,每个序列都是一个943维的向量,向量的每一维随机取值为0或1,1表示对应维的用户被提取为关键用户,0表示对应维的用户未被提取为关键用户。

第5步,按照准确率适应度公式,分别计算1000个候选序列的准确率适应度值。准确率适应度值公式为:

其中,ph(s)表示第h个候选序列的准确率适应度值,ui表示第i个用户有评分行为的物品数,的取值为0或1,当时表示第h个候选序列中第i个用户被提取为系统关键用户,表示第h个候选序列中第i个用户未被提取为系统关键用户;

第6步,按照覆盖率适应度公式,分别计算1000个候选序列的覆盖率适应度值。覆盖率适应度值公式为:

其中,ch(s)表示第h个候选序列的覆盖率适应度值,αij表示用户物品交互数据矩阵中的元素,ij表示对第j个物品有评分行为的用户数;

第7步,对1000个候选序列的准确率适应度值降序排列,选取第一个准确率适应度值为准确率适应度参照值,对1000个候选序列的覆盖率适应度值降序排列,选择第一个覆盖率适应度值为覆盖率适应度参照值。

第8步,带入参数h=999,得到权重向量集合每个候选序列从权重向量集合中任选一个未被选取的权重向量,得到1000个候选序列对应的权重向量。计算1000个候选序列对应的权重向量之间的欧氏距离,为1000个候选序列分别选择权重向量欧氏距离最近的20个候选序列作为每个候选序列对应的邻居序列。

第9步,利用第5步中的准确率适应度公式和第6步中的覆盖率适应度公式,分别计算1000个候选序列的20个邻居序列的准确率适应度值和覆盖率适应度值。

第10步,利用均匀交叉方法,更新1000个候选序列。

第11步,利用第5步的准确率适应度公式和第6步的覆盖率适应度公式,计算1000个候选序列的准确率适应度值和覆盖率适应度值。

第12步,对1000个候选序列的准确率适应度值降序排列,选取第一个准确率适应度值为准确率适应度参照值,对1000个候选序列的覆盖率适应度值降序排列,选择第一个覆盖率适应度值为覆盖率适应度参照值。

第13步,利用切比雪夫聚合方法,更新1000个候选序列的所有邻居序列的准确率适应度值和覆盖率适应度值。

第14步,判断1000个候选序列与结果序列集合中所有结果序列的支配关系,将结果序列集合中被候选序列支配的结果序列移出,将不被任何结果序列支配的候选序列加入结果序列集合中。

第15步,计算所有结果序列的适应度值向量与适应度值参照向量的欧氏距离的和,作为接近度值,如果该值小于终止阈值,输出所有结果序列为提取的关键用户结果序列,否则,循环执行第10步到第15步。

第16步,根据工程具体要求,从关键用户结果集合中选取一个关键用户结果序列,投入到推荐过程中。

第17步,从943个测试集目标用户中任意选取一个目标用户。

第18步,为所选的目标用户有过评分行为的物品分别分配1个单位的资源量,作为起始阶段每个物品的资源量。

第19步,将起始阶段每个物品的资源量平均分配给每个关键用户,得到再分配阶段每个关键用户的资源量。

第20步,将再分配阶段每个关键用户的资源量平均分配给关键用户有评分行为的每个物品,得到结束阶段每个物品的资源量。

第21步,将结束阶段所有物品的资源量降序排序,选取前20个物品推荐给所选目标用户。

第22步,判断是否选取完测试集目标用户集合中的所有目标用户,若是,执行第23步,否则,循环执行第17步到第22步。

第23步,按照下式,计算测试集中每个目标用户的召回率,作为测试集中每个目标用户的准确率:

其中,ri表示测试集中目标用户i的准确率,di表示为目标用户i推荐的物品且测试集中目标用户i有评分行为的物品的数量,di表示测试集中目标用户i有评分行为的物品的数量。

对943个测试集用户的准确率求平均值,得到测试集目标用户整体的准确率。

第24步,按照下式,计算测试集中所有目标用户的覆盖率:

其中cov表示943个测试集目标用户的覆盖率,nd表示为测试集中所有目标用户推荐的物品的数量。

3.仿真实验结果分析:

本发明的仿真实验是利用本发明在movielens-100k训练集上提取系统关键用户,仿真实验的关键用户结果序列集合的适应度值分布如图2(a)和图2(b)所示。

图2(a)表示提取的关键用户规模占训练集所有用户数量的20%时,得到的关键用户结果序列集合的两个适应度值的分布图,其中,图2(a)的横坐标表示准确率适应度值,纵坐标表示覆盖率适应度值。图2(b)表示提取的关键用户规模占训练集中所有用户数量的60%时,得到的所有关键用户结果序列的两个适应度值分布图,其中,图2(b)的横坐标表示准确率适应度值,纵坐标表示覆盖率适应度值。

从图2(a)和图2(b)可以看出,本发明得到的关键用户结果序列集合在两个适应度值上得到了均匀的多目标优化解集paretofront,因此说明本发明得到的关键用户集合是准确且符合多目标优化解集均匀分布要求的。

本发明的仿真实验从提取的关键用户序列集合中选取三个关键用户序列示例与两个现有技术(基于用户最大度degree-based的关键用户提取方法、基于用户排序rank-based的关键用户提取方法)投入到推荐过程中得到的准确率和覆盖率进行对比,每个方法都重复运行10次求平均值,仿真实验的准确率和覆盖率的对比结果如图2(c)和图2(d)所示。

图2(c)表示不同关键用户提取规模下三种方法的准确率对比图。其中,图2(c)的横坐标表示训练集中提取的关键用户规模占所有用户的数量的比例,纵坐标表示准确率。图2(c)中以右三角标示的曲线表示基于用户最大度degree-based的关键用户提取方法的推荐准确率曲线,图2(c)中以五角星标示的曲线表示基于用户排序rank-based的关键用户提取方法的推荐准确率曲线,图2(c)中以正方形标示的曲线表示本发明示例1的关键用户提取方法的推荐准确率曲线,图2(c)中以菱形标示的曲线表示本发明示例2的关键用户提取方法的推荐准确率曲线,图2(c)中以圆形标示的曲线表示本发明示例3的关键用户提取方法的推荐覆盖率曲线。图2(d)表示不同关键用户提取规模下三种方法的覆盖率对比图。其中,图2(d)的横坐标表示训练集中提取的关键用户规模占所有用户的数量的比例,纵坐标表示覆盖率。图2(d)中以右三角标示的曲线表示基于用户最大度degree-based的关键用户提取方法的推荐覆盖率曲线,图2(d)中以五角星标示的曲线表示基于用户排序rank-based的关键用户提取方法的推荐覆盖率曲线,图2(d)中以正方形标示的曲线表示本发明示例1的关键用户提取方法的推荐覆盖率曲线,图2(d)中以菱形标示的曲线表示本发明示例2的关键用户提取方法的推荐覆盖率曲线,图2(d)中以圆形标示的曲线表示本发明示例3的关键用户提取方法的推荐覆盖率曲线。

从图2(c)和图2(d)可以看出,本发明三个关键用户结果序列示例投入到推荐过程中得到的准确率曲线均位于基于用户最大度degree-based的关键用户提取方法的准确率曲线上方,与基于用户排序rank-based的关键用户提取方法的准确率曲线基本重合,本发明三个关键用户结果序列示例投入到推荐过程中得到的覆盖率曲线均位于基于用户最大度degree-based的关键用户提取方法和基于用户排序rank-based的关键用户提取方法的覆盖率曲线的上方,说明本发明提取的系统关键用户在保证推荐准确率的同时,提高了推荐覆盖率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1