CN110941771A - 一种电商平台中的商品并行动态推送方法 - Google Patents

一种电商平台中的商品并行动态推送方法 Download PDF

Info

Publication number
CN110941771A
CN110941771A CN201911341308.1A CN201911341308A CN110941771A CN 110941771 A CN110941771 A CN 110941771A CN 201911341308 A CN201911341308 A CN 201911341308A CN 110941771 A CN110941771 A CN 110941771A
Authority
CN
China
Prior art keywords
thread
commodity
matrix
slave
commodities
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911341308.1A
Other languages
English (en)
Other versions
CN110941771B (zh
Inventor
刘嘉辉
朱宝森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin University of Science and Technology
Original Assignee
Harbin University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin University of Science and Technology filed Critical Harbin University of Science and Technology
Priority to CN201911341308.1A priority Critical patent/CN110941771B/zh
Publication of CN110941771A publication Critical patent/CN110941771A/zh
Application granted granted Critical
Publication of CN110941771B publication Critical patent/CN110941771B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9536Search customisation based on social or collaborative filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques
    • G06F18/2321Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
    • G06F18/23213Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0251Targeted advertisements
    • G06Q30/0269Targeted advertisements based on user profile or attribute
    • G06Q30/0271Personalized advertisement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0631Item recommendations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Databases & Information Systems (AREA)
  • Strategic Management (AREA)
  • Development Economics (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Biology (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供了一种电商平台中的商品并行动态推送方法,首先,服务器采用消息传递接口(MPI)的分布式并行方式来构建客户矩阵、商品属性矩阵与评分矩阵:每个从进程并行构建分布式数据库中的客户分块矩阵,主进程将每一个从进程构建的分块矩阵合并成一个完整矩阵;其次,采用基于MPI并行的方式对客户进行聚类:主进程执行粒子群优化算法来获取客户聚类所需的最优簇数,从进程并行执行k均值聚类算法,在执行k均值聚类算法时,每一个从进程分配若干线程来计算客户向量与均值向量之间的欧几里得距离,并更新均值向量;然后,采用多线程的方式并行计算目标商品与剩余商品之间的相似性;最后,进行动态推送,产生推送列表。

Description

一种电商平台中的商品并行动态推送方法
技术领域
本发明涉及一种并行聚类、多线程计算及电子商务网站推送方法,尤其涉及一种电商平台中的商品并行动态推送方法,属于并行计算领域。
背景技术
互联网和Web技术的迅猛发展促进了以网络信息技术为应用基础的电子商务市场日益繁荣,人类传统的生产生活方式得到了翻天覆地的变化,方便快捷的购物体验使众多的消费者日益青睐网络购物,网络购物已经成为人们生活中不可或缺的重要组成部分。然而,随着电子商务网站商品种类和数量的日益增多,网络购物为人们提供丰富多彩的产品信息时所引发的信息超载问题导致客户进行商品选择时往往迷失在大量的商品信息空间中,严重制约了电子商务的进一步发展,客户对个性化信息服务的要求越来越高。如何锁定电子商务网站的目标客户并为其提供定制化、个性化和差异化的服务以提升客户满意度,提高网站交叉销售能力,成为电子商务网站的当务之急,为了满足客户需求,电子商务个性化推荐系统应运而生。
电子推荐系统又称为电子推送系统,电子商务个性化推送系统通过分析客户的行为,得出客户的兴趣偏好,自动向客户推送个性化产品,减少客户浏览时间,提高网络购物效率,是解决信息过载问题强有力的途径。近几年来,推送系统在国内外迅速崛起,广泛应用于电子商务、音乐视频等领域,具有代表性的有亚马逊、淘宝、京东、豆瓣等。电子商务网站中的推送案例列举如下:
案例,在某电子商务平台,已经有大量客户曾经购买过不同的商品,其中,客户A也在这个平台上购买过一些商品。现在,客户A继续浏览该平台,那么,这个平台就应该推送一些客户A可能感兴趣的商品。但是,在推送商品之前,该平台会在分布式的数据库中进行检索购买过该商品的客户以及评分,然后,根据客户A与他们偏好的相似性来推送商品,而且,所推送商品的价格还应该在客户A的合理消费水平之内。然而,针对海量的客户和海量的商品,需要在这些海量数据中快速筛选出符合客户A偏好的商品并推送给客户A,从而,实时地显示在网站上来满足客户的需求。
目前流行的推送方法主要有:基于内容的推送、基于关联规则的推送、协同过滤推送以及混合推送技术等。但是,所述的推送方法存在一个弊端:在海量客户和海量商品中进行筛选与推送时,会比较耗费时间,不能及时向客户推送商品。目前,已经存在采用Hadoop平台进行商品的推送,但是Hadoop平台需要多个数据节点、一个名称节点和一个二级名称节点,每一个节点都需要一台独立的计算机,维护比较困难,而且,Hadoop中的MapReduce操作还需要访问磁盘,这势必会造成I/O开销。所以,需要一种既充分利用处理器资源来加快推送筛选,又维护简单方便且减少I/O访问的推送方法。
电子商务网站中的服务器一般是分布式的计算机集群,而且,每一台计算机中都包含多个处理器核。由于客户、商品等数据具有海量的特点,电子商务平台通常将这些数据采用分布式的方式存储在数据库中。所以,当生成客户矩阵、商品属性矩阵以及客户-商品评分矩阵时,可以采用消息传递接口(Message Passing Interface,MPI)的方式来分布式地并行构建所述矩阵;对于商品之间相似性的计算,利用多线程的方式进行并行计算,从而减少筛选商品的时间,加快为客户进行商品的推送。
一种电商平台中的商品并行动态推送方法的基本思想是:首先,服务器采用MPI的分布式并行方式来构建客户矩阵、商品属性矩阵与客户-商品评分矩阵:每个从进程并行构建分布式数据库中的客户分块矩阵、商品属性分块矩阵与客户-商品评分分块矩阵,主进程将每一个从进程构建的分块矩阵合并成一个完整的客户矩阵、商品属性矩阵与客户-商品评分矩阵;其次,采用基于MPI并行的方式对客户进行聚类:主进程执行粒子群优化算法来获取客户聚类所需的最优簇数,从进程执行并行k均值聚类算法,在执行并行k均值聚类算法时,每一个从进程分配若干线程来计算客户向量与均值向量之间的欧几里得距离,并更新均值向量;然后,采用多线程的方式并行计算目标商品与剩余商品之间的相似性;最后,产生推送列表,进行动态推送。
发明内容
(一) 要解决的技术问题
为了实现电子商务网站中快速筛选商品来实时推送给客户,本发明对商品筛选过程进行了设计。首先,为了实现从分布式数据库中构建客户矩阵、商品属性矩阵与客户-商品评分矩阵,设计了利用MPI的分布式并行方式来构建所述矩阵,从进程并行构建分布式数据库实体的分块矩阵,主进程将每一个从进程构建的分块矩阵合并成一个完整矩阵;其次,为了从海量数据中筛选与目标客户有相似偏好的客户,设计了利用MPI与多线程的并行方式对客户进行聚类,将与目标客户有相似偏好的客户划分到同一个簇中,从而剔除无关的客户,减少计算代价,其中,对于k均值聚类算法,需要给出簇数,所以,主进程负责执行粒子群优化算法来计算出聚类所需要的最优簇数,从进程并行执行k均值聚类算法,在执行k均值聚类算法时,每一个从进程分配若干线程来计算客户向量与均值向量之间的欧几里得距离,并更新均值向量;然后,为了计算目标商品与剩余商品之间的相似度,由于商品数量巨大,所以,设计了多线程并行的方式来计算目标商品与剩余商品之间的相似度,分配若干个线程并添加到线程队列,若线程队列不空,则线程出队,每一个线程计算一个商品与目标商品之间的相似度,计算完毕之后,将线程再添加到线程队列,依次进行,直到所有商品计算完毕;最后,根据客户的平均消费水平,动态产生商品推送列表。
(二) 技术方案
为了从海量客户和海量商品中快速筛选出与目标客户有相似偏好的客户与商品列表来动态推送给目标客户,本发明提供了一种电商平台中的商品并行动态推送方法,包括:
(1) 利用MPI分布式并行的方式构建客户矩阵、商品属性矩阵以及客户-商品的评分矩阵;
(2) 利用MPI与多线程并行的方式对客户进行聚类,主进程执行粒子群优化算法获取最优的簇数,从进程采用多线程的方式执行并行k均值聚类算法;
(3) 利用多线程并行的方式来计算目标商品与剩余商品之间的相似度;
(4) 根据客户的平均消费水平,动态产生商品推送列表来推送给客户。
一种电商平台中的商品并行动态推送方法,通常情况下,在电子商务网站中,由于客户、商品以及客户-商品的评分三类实体数量巨大,所述数据库实体通常以分布式的形式存储在计算机的数据库中,所以,采用MPI的分布式并行方式来构建矩阵;
客户用一个向量来表示:U=(c_param_1,c_param_2,…,c_param_p),向量中的参数表示客户属性,如“客户姓名”、“客户性别”,参数需要进行数字化处理,如设定第一个参数为1,第二个参数为2,依次进行;
商品用一个向量来表示:G=(g_param_1,g_param_2,…,g_param_q),向量中的参数表示商品属性,如“商品编号”、“商品价格”,参数需要进行数字化处理,如设定第一个参数为1,第二个参数为2,依次进行;
在计算商品之间的相似性时,需要对数据库中的评分进行优化:新的评分=先前评分-客户对所有商品的评分均值,目标商品为目标客户评分最高的商品;
主进程构建矩阵的函数为MasterConstructMatrix(type),从进程构建矩阵的函数为SlaverConstructMatrix(type),在构建矩阵之前,接收传递的参数type,type表示构建矩阵的类型,“1”表示构建客户矩阵,“2”表示构建商品矩阵,“3”表示构建客户-商品评分矩阵;参数master_id为主服务器ID,slaver_id为从服务器ID,matrix为所构造的分块矩阵,具体如下:
主进程master构建矩阵,函数为MasterConstructMatrix(type),具体如下:
S_MasterConstructMatrix_1、初始化MPI环境,并获取服务器参数;
S_MasterConstructMatrix_2、启动分布式集群中的所有从进程来构建分块矩阵;
S_MasterConstructMatrix_3、利用MPI_Recv(master_id,slaver_id,matrix,通信状态)函数接收从进程所构建的分块矩阵,并组装成完整矩阵;
S_MasterConstructMatrix_4、主进程构建矩阵结束。
从进程slaver并行地构建分块矩阵,函数为SlaverConstructMatrix(type),具体如下:
S_SlaverConstructMatrix_1、通过查询所在的数据库,构建所述数据库实体的分块矩阵matrix;
S_SlaverConstructMatrix_2、利用MPI_Send(master_id,slaver_id,matrix)函数将所构建的分块矩阵发送给主进程;
S_SlaverConstructMatrix_3、从进程构建分块矩阵结束。
一种电商平台中的商品并行动态推送方法,电子商务网站的客户越来越多,导致了客户数量以及商品数量非常庞大。所以,采用客户聚类的方法获取包含目标客户的簇,簇中的每一个客户与目标客户的偏好接近,但是,针对海量客户,划分成的簇数难以判定。所以,采用粒子群优化算法对簇数进行优化计算。客户聚类采用MPI的并行方式,主进程负责执行粒子群优化算法,从进程执行并行k均值聚类算法;
主进程master执行粒子群优化算法来优化聚类中的簇数k,函数为MasterAirosol(),具体如下:
S_MasterAirosol_1、初始化MPI环境,并获取服务器参数,启动n个执行并行k均值聚类算法的从进程slaver_1,slaver_2,...,slaver_n;
S_MasterAirosol_2、随机生成m个簇数k1,k2,...,km,ki位于区间[0,N]上,N为客户矩阵行向量的个数,即客户数;
S_MasterAirosol_3、初始化粒子群:
S_MasterAirosol_3_1、每个ki由二进制向量进行表示,即ki=(b1,b2,...,bt);
S_MasterAirosol_3_2、位移xi,0=(b1,b2,...,bt);
S_MasterAirosol_3_3、速度vi,0=a*xi,a位于区间[0.1,0.2]上;
S_MasterAirosol_4、判断ki与kj是否相等,若不相等,则转到S_MasterAirosol_5,否则,转到S_MasterAirosol_10;
S_MasterAirosol_5、将所述的簇数利用MPI_Send(master_id,slaver_id,ki)函数均分给每一个从进程;
S_MasterAirosol_6、利用MPI_Recv(master_id,slaver_id,e,通信状态)函数接收从进程发送的聚类评价值e;
S_MasterAirosol_7、取出聚类评价值e的整数部分,截取低t位的比特作为粒子群的粒子适应值f1,f2,…,fk
S_MasterAirosol_8、根据粒子适应值更新每个粒子的历史最优值和粒子群最优值,并且更新每个粒子的速度和位移,位移只保留整数部分:
vid,k+1=w*vid,k+c1*z1*(pid,k-xid,k)+c2*z2*(pgd,k-xid,k),
xid,k+1=xid,k+r*vid,k+1
粒子第k次迭代搜索到的历史最优值为pid,k,第k次的最优值为pgd,k
w是惯性因子,当取值为1时,粒子群算法进行全局优化,从而避免陷入局部优化;
c1是自我学习因子,设置为2,c2是社会学习因子,设置为2;
z1和z2是[0,1]区间内均匀分布的随机数;
r是约束因子,设置为1;
S_MasterAirosol_9、转到S_MasterAirosol_4,继续迭代;
S_MasterAirosol_10、利用MPI_Recv(master_id,slaver_id,cluster,通信状态)函数接收包含目标客户的簇cluster;
S_MasterAirosol_11、利用MPI_Send(master_id,slaver_id,exit)函数向从进程发送退出消息;
S_MasterAirosol_12、主进程优化聚类簇数结束。
从进程进行聚类并将评价值、聚类中心和包含目标客户的簇发送给主进程,函数为SlaverKmeans(),具体如下:
S_SlaverKmeans_1、利用MPI_Recv(master_id,slaver_id,msg,通信状态)函数接收消息msg;
S_SlaverKmeans_2、解析消息是否为“退出”命令,若是,则转到S_SlaverKmeans_8,否则,转到S_SlaverKmeans_3;
S_SlaverKmeans_3、簇数k=msg;
S_SlaverKmeans_4、执行并行k均值聚类算法,需要计算评价值e和聚类中心;
S_SlaverKmeans_5、利用MPI_Send(master_id,slaver_id,e)函数将评价值e发送给主进程;
S_SlaverKmeans_6、利用MPI_Send(master_id,slaver_id,cluster)函数将包含目标客户的簇cluster发送给主进程;
S_SlaverKmeans_7、转到S_SlaverKmeans_1;
S_SlaverKmeans_8、从进程退出;
S_SlaverKmeans_9、从进程执行并行k均值聚类结束。
进一步地,由于客户数量比较大,所以,当用k均值聚类算法对客户进行聚类时采用多线程并行的方式来加速计算,并行k均值聚类函数为ParallelKmeans(),具体如下:
S_ParallelKmeans_1、初始化聚类均值向量a1,a2,…,ak:即将客户向量分成k个不同的簇,在每个簇中随机选取一个客户向量作为初始聚类均值向量;
S_ParallelKmeans_2、初始化聚类中的每一个簇:C1=C2=…=Ck=φ,φ表示空集;
S_ParallelKmeans_3、计算每一个客户向量与均值向量之间的欧几里得距离,并划分到相应的簇中:
S_ParallelKmeans_3_1、分配t个线程,并添加到线程队列:Queue=(thread_1,thread_2,…,thread_t);
S_ParallelKmeans_3_2、当线程队列不为空时,取出一个线程来计算客户向量Ui与均值向量a1,a2,…,ak之间的欧几里得距离:
dis(Ui,aj)=(||Ui-aj||2)1/2
得到dis(Ui,a1),dis(Ui,a2),…,dis(Ui,ak),获取最小值dis(Ui,aj),并将客户Ui划分到簇Cj中;
S_ParallelKmeans_3_3、线程完成计算任务后,将所述线程添加到线程队列中;
S_ParallelKmeans_3_4、将线程队列中的线程取出,计算剩余客户向量与均值向量之间的欧几里得距离并划分到相应簇中,依次进行,直到客户向量全部计算完毕;
S_ParallelKmeans_3_5、释放线程并销毁线程队列;
S_ParallelKmeans_4、更新每一个簇中的均值向量:
分配k个线程,每一个线程计算一个簇中的均值向量:
ai=(C1+C2+…+Ck)/||Ci||;
S_ParallelKmeans_5、计算聚类的评价值:
e=||C1-a1||2+||C1-a2||2+…+||C1-ak||2+…+||Ck-a1||2+||Ck-a2||2+…+||Ck-ak||2
S_ParallelKmeans_6、判断聚类评价值是否变化,若发生变化,则转到S_ParallelKmeans_2,否则,转到S_ParallelKmeans_7;
S_ParallelKmeans_7、并行k均值聚类算法结束。
一种电商平台中的商品并行动态推送方法,当计算目标商品与剩余商品之间的相似度时,由于商品数量巨大,单独计算目标商品与剩余商品之间的相似度会非常耗时,且效率也不高,所以,采用线程队列的多线程并行方式为每一个线程分配商品向量来执行计算相似度的任务,首先利用客户-商品的评分矩阵计算商品之间的评分相似度sim_g(I,J),客户-商品的评分矩阵是一个m*n阶稀疏矩阵,m为簇中的客户数量,所述簇包含了目标客户,n为商品数量;然后,利用商品向量计算商品之间的属性相似度sim_a(I,J);最后,为所述两种相似度设置一个动态的权值w,并计算商品之间的相似度;并行计算目标商品与剩余商品之间的相似度函数为ParallelSim(),具体如下:
S_ParallelSim_1、分配t个线程并添加到线程队列Queue中,即Queue=(thread_1,thread_2,…,thread_t);
S_ParallelSim_2、设定相似度权值w,w位于区间[0,1]上;
S_ParallelSim_3、线程thread_1,thread_2,…,thread_t出队,Queue=(empty);
S_ParallelSim_4、将商品I1,I2,…,It分配给相应的线程thread_1,thread_2,…,thread_t;
S_ParallelSim_5、线程thread_i计算目标商品J与分配到的商品I之间的评分相似度:
sim_g(I,J)=(R1,I-avg(RI))*(R1,J-avg(RJ))+…+(Rm,I-avg(RI))*(Rm,J-avg(RJ))/{[(R1,I-avg(RI))2+…+(Rm,I-avg(RI))2]*[(R1,J-avg(RJ))2+…+(Rm,J-avg(RJ))2]}1/2
avg(RI)=(R1,I+…+Rm,I)/m;
S_ParallelSim_6、线程thread_i利用欧几里得距离计算目标商品与分配到的商品之间的距离,然后,归一化处理得到商品的属性相似度:
O(I,J)=[(I1-J1)2+(I2-J2)2+…+(Iq-Jq)2]1/2
sim_a(I,J)=1/(1+O(I,J));
S_ParallelSim_7、线程thread_i计算商品之间的相似度:
sim(I,J)=w*sim_g(I,J)+(1-w)*sim_a(I,J),
商品相似度计算完毕之后,将线程thread_i添加到线程队列中,将剩余商品分配给线程队列中的线程,依次进行,直到所有商品与目标商品之间的相似度计算完毕;
S_ParallelSim_8、商品相似度计算完毕。
一种电商平台中的商品并行动态推送方法,当动态推送商品时,根据客户的消费水平,动态产生商品推送列表来推送给客户,函数为DynamicPush(),具体如下:
S_DynamicPush_1、设定商品相似度阈值,得到目标商品与剩余商品之间相似度大于或等于所述阈值的商品集I=(I1,I2,…,It);
S_DynamicPush_2、产生待推送列表,即计算目标客户对商品集中商品的预评分并按照从大到小的顺序排序,得到待推送列表list:
pre(U,J)=[sim(J,I1)*RU,I1+…+sim(J,In)*RU,In]/[sim(J,I1)+…+sim(J,In)];
S_DynamicPush_3、产生动态推送结果:
根据目标客户在给定时间内的消费情况,计算出平均消费值,然后,将待推送列表中售价高于平均消费值的商品过滤,通过Top-N方法产生预评分最高的前N个商品并添加到商品推送列表,推送给客户;
S_DynamicPush_4、动态推送结束。
(三) 有益效果
本发明的有益效果是:服务器采用MPI的分布式并行方式来构建客户矩阵、商品属性矩阵与客户-商品评分矩阵;采用基于MPI并行的方式对客户进行聚类:主进程执行粒子群优化算法来优化聚类簇数,从进程执行并行k均值聚类算法,在执行k均值聚类算法时,每一个从进程分配若干线程来计算客户向量与均值向量之间的欧几里得距离,并更新均值向量;采用多线程的方式并行计算目标商品与剩余商品之间的相似性;产生推送列表,进行动态推送。
附图说明
图1是一种电商平台中的商品并行动态推送方法的流程图。
具体实施方式
下面结合附图和实例对本发明的实施方式进一步详细描述。以下实例用于说明本发明,但不能用来限制发明的范围。
实例1:构建矩阵。
以构建评分矩阵为例,设主进程ID号master_id=0,从进程ID号slaver_id=1;
主进程master构建评分矩阵,函数为MasterConstructMatrix(type),具体如下:
S_MasterConstructMatrix_1、初始化MPI环境,并获取服务器参数;
S_MasterConstructMatrix_2、启动分布式集群中的所有从进程构建分块矩阵;
S_MasterConstructMatrix_3、利用MPI_Recv(0,1,matrix,&status)函数接收从进程所构建的分块矩阵,并组装成完整矩阵;
S_MasterConstructMatrix_4、主进程构建矩阵结束;
从进程slaver并行地构建分块矩阵,函数为SlaverConstructMatrix(type),具体如下:
S_SlaverConstructMatrix_1、通过查询所在的数据库,构建所述数据库实体的分块矩阵matrix;
S_SlaverConstructMatrix_2、利用MPI_Send(0,1,matrix)函数将所构建的分块矩阵发送给主进程;
S_SlaverConstructMatrix_3、从进程构建矩阵结束。
实例2:客户并行聚类。
设生成的簇数为k1=2,k2=3,k3=4,主进程ID号master_id=0,分配三个从进程,从进程的ID号依次为1,2,3;w=1,c1=c2=2,z1=z2=0.5,r=1;
设客户矩阵中的每一个行向量为:
U1=(4,0,0,5,1,0,0,3);U2=(5,5,4,0,0,2,0,0);
U3=(0,0,0,2,5,4,3,3);U4=(0,3,0,2,0,0,3,0);
U5=(3,2,0,2,0,0,4,0);U6=(4,0,0,0,1,0,0,2);
U7=(5,0,4,0,0,3,0,0);U8=(0,0,0,2,4,0,3,3);
U9=(0,2,0,0,0,0,3,0);U10=(3,2,0,0,0,0,4,0);
目标客户为U3,从进程以slaver_id=1为例,从进程分配的线程数为4;
主进程master执行粒子群优化算法来优化聚类的簇数k,函数为MasterAirosol(),具体如下:
S_MasterAirosol_1、初始化MPI环境,并获取服务器参数,启动执行并行k均值聚类算法的从进程slaver_1,slaver_2,slaver_3;
S_MasterAirosol_2、随机生成簇数k1=2,k2=3,k3=4;
S_MasterAirosol_3、初始化粒子群:
S_MasterAirosol_3_1、每个ki由二进制向量进行表示:k1=(0,1,0),k2=(0,1,1),k3=(1,0,0);
S_MasterAirosol_3_2、位移:x1,0=(0,1,0),x2,0=(0,1,1),x3,0=(1,0,0);
S_MasterAirosol_3_3、取a=0.15:v1,0=(0,0.15,0),v2,0=(0,0.15,0.15),v3,0=(0.15,0,0);
S_MasterAirosol_4、判断ki与kj是否相等,若不相等,则转到S_MasterAirosol_5,否则,转到S_MasterAirosol_10:
第一次迭代:k1≠k2≠k3,转到S_MasterAirosol_5;
第二次迭代:k1=k2=k3=2,转到S_MasterAirosol_10;
S_MasterAirosol_5、将所述的簇数均分给每一个从进程:
将k1=2利用MPI_Send(0,1,2)函数发送给从进程slaver_1;
将k2=3利用MPI_Send(0,2,3)函数发送给从进程slaver_2;
将k3=4利用MPI_Send(0,3,4)函数发送给从进程slaver_3;
S_MasterAirosol_6、利用MPI_Recv(master_id,slaver_id,e,&status)函数接收从进程发送的聚类评价值:e1=39.05,e2=28.96,e3=21.9;
S_MasterAirosol_7、取出聚类评价值e的整数部分,截取低t位的比特作为粒子群的粒子适应值f1=(1,1,1),f2=(1,0,0),f3=(1,0,1);
S_MasterAirosol_8、根据粒子适应值更新每个粒子的历史最优值和粒子群最优值,并且更新每个粒子的速度和位移,位移只保留整数部分:
p1,0=(0,1,0),p2,0=(0,1,1),p3,0=(1,0,0),pgd,0=(0,1,0);
v1,1=(0,0.15,0),v2,1=(0,0.15,-0.85),v3,1=(-0.85,1,0);
x1,1=(0,1,0),x2,1=(0,1,0),x3,1=(0,1,0);
S_MasterAirosol_9、转到S_MasterAirosol_4,继续迭代;
S_MasterAirosol_10、利用MPI_Recv(0,1,cluster,&status)函数接收包含目标客户的簇:cluster={U1,U3,U4,U8,U9};
S_MasterAirosol_11、利用MPI_Send(master_id,slaver_id,exit)函数向从进程发送退出消息;
S_MasterAirosol_12、主进程优化聚类簇数结束;
从进程slaver_1执行并行k均值聚类算法,函数为SlaverKmeans(),具体如下:
S_SlaverKmeans_1、利用MPI_Recv(0,1,msg,&status)函数接收消息msg;
S_SlaverKmeans_2、解析消息是否为“退出”命令,若是,则转到S_SlaverKmeans_8,否则,转到S_SlaverKmeans_3;
S_SlaverKmeans_3、簇数k=2;
S_SlaverKmeans_4、执行并行k均值聚类算法,需要计算评价值e和聚类中心;
S_SlaverKmeans_5、利用MPI_Send(0,2,e)函数将评价值e=39.05发送给主进程;
S_SlaverKmeans_6、利用MPI_Send(0,1,cluster)函数将包含目标客户的簇cluster={U1,U3,U4,U8,U9}发送给主进程;
S_SlaverKmeans_7、转到S_SlaverKmeans_1;
S_SlaverKmeans_8、从进程退出;
S_SlaverKmeans_9、从进程执行并行k均值聚类结束;
进一步地,当用k均值聚类算法对客户进行聚类时采用多线程并行的方式来加速计算,并行k均值聚类函数为ParallelKmeans(),具体如下:
S_ParallelKmeans_1、初始化聚类均值向量:
a1=U2=(5,5,4,0,0,2,0,0);
a2=U3=(0,0,0,2,5,4,3,3);
S_ParallelKmeans_2、初始化聚类中的每一个簇:C1=C2=φ,φ表示空集;
S_ParallelKmeans_3、计算每一个客户向量与均值向量之间的欧几里得距离,并划分到相应的簇中:
S_ParallelKmeans_3_1、分配4个线程,添加到线程队列:Queue=(thread_1,thread_2,thread_3,thread_4);
S_ParallelKmeans_3_2、当线程队列不为空时,取出一个线程来计算客户向量Ui与均值向量a1与a2之间的欧几里得距离:
第一次迭代:
thread_1:dis(U1,a1),dis(U1,a2);thread_2:dis(U2,a1),dis(U2,a2);
thread_3:dis(U3,a1),dis(U3,a2);thread_4:dis(U4,a1),dis(U4,a2);
线程队列Queue=(empty);
C1={U2},C2={U1,U3,U4};
第二次迭代:
thread_2:dis(U5,a1),dis(U5,a2);thread_3:dis(U6,a1),dis(U6,a2);
thread_4:dis(U7,a1),dis(U7,a2);thread_1:dis(U8,a1),dis(U8,a2);
线程队列Queue=(empty);
C1={U2,U5,U6,U7},C2={U1,U3,U4,U8};
第三次迭代:
thread_4:dis(U9,a1),dis(U9,a2);thread_2:dis(U10,a1),dis(U10,a2);
线程队列Queue=(thread_3,thread_1);
C1={U2,U5,U6,U7,U10},C2={U1,U3,U4,U8,U9};
S_ParallelKmeans_3_3、计算完毕,将所述线程添加到线程队列中:
第一次迭代后的线程队列:Queue=(thread_2,thread_3,thread_4,thread_1);
第二次迭代后的线程队列:Queue=(thread_4,thread_2,thread_3,thread_1);
第三次迭代后的线程队列:Queue=(thread_3,thread_1,thread_2,thread_4);
S_ParallelKmeans_3_4、将线程队列中的线程取出,计算剩余客户向量与均值向量之间的欧几里得距离并划分到相应簇中,依次进行,直到客户向量全部计算完毕;
S_ParallelKmeans_3_5、释放线程并销毁线程队列;
S_ParallelKmeans_4、更新每一个簇中的均值向量:
分配2个线程,每一个线程计算一个簇中的均值向量,更新后的均值向量如下:
thread_1:a1=(4,1.8,1.6,0.4,0.2,0.8,1.6,0.4);
thread_2:a2=(0.8,1,0,2.2,2,0.8,2.4,1.8);
S_ParallelKmeans_5、计算聚类的评价值e=39.05;
S_ParallelKmeans_6、判断聚类评价值是否变化,若发生变化,则转到S_ParallelKmeans_2,否则,转到S_ParallelKmeans_7;
S_ParallelKmeans_7、并行k均值聚类算法结束。
实例3:并行计算商品相似度。
设评分矩阵中每个客户对商品的评分向量为:
R1=(-0.33,1.17,0.83,0);
R2=(0,-0.25,0,0.25);
R3=(-1.25,0,1.25,0);
R4=(0.5,0,0,-0.5);
商品属性矩阵中的每一个商品向量为:
I1=(0,0,1,0);
I2=(1,0,1,1);
I3=(1,1,1,0);
I4=(0,0,0,1);
分配的线程数量为2,相似度权值为w=0.4,目标商品为I4
并行计算商品相似度的函数为ParallelSim(),具体如下:
S_ParallelSim_1、分配2个线程并添加到线程队列Queue中,即Queue=(thread_1,thread_2);
S_ParallelSim_2、设定相似度权值w=0.4;
S_ParallelSim_3、线程thread_1,thread_2出队,Queue=(empty);
S_ParallelSim_4、将商品I1,I2分配给相应的线程thread_1,thread_2;
S_ParallelSim_5、线程thread_i计算目标商品I4与分配到的商品Ii之间的评分相似度:
第一次计算:
thread_1:sim_g(I4,I1)=-0.46;thread_2:sim_g(I4,I2)=0.49;
第二次计算:
thread_1:sim_g(I4,I3)=0.22;
S_ParallelSim_6、线程thread_i利用欧几里得距离计算出与分配到的商品之间的距离,然后归一化处理得到商品的属性相似度:
第一次计算:
thread_1:sim_a(I4,I1)=0.41;thread_2:sim_a(I4,I2)=0.41;
第二次计算:
thread_1:sim_a(I4,I3)=0.33;
S_ParallelSim_7、线程thread_i计算商品之间的相似度:
第一次计算:
thread_1:sim(I4,I1)=0.062;thread_2:sim(I4,I2)=0.442;
第二次计算:
thread_1:sim(I4,I3)=0.286;
商品相似度计算完毕之后,将线程thread_i添加到线程队列中,将剩余商品分配给线程队列中的线程,依次进行,直到所有商品与目标商品之间的相似度计算完毕;
S_ParallelSim_8、商品相似度计算完毕。
实例4:动态产生商品推送列表。
设目标客户为U1,商品相似度阈值为0.2,评分向量与商品向量仍采用实例3中的评分向量与商品向量;
动态产生商品推送列表的函数为DynamicPush(),具体如下:
S_DynamicPush_1、设定商品相似度阈值0.2,得到目标商品与剩余商品之间相似度大于或等于所述阈值的商品集I=(I2,I3,I4);
S_DynamicPush_2、产生待推送列表,即计算目标客户对商品集中商品的预评分并按照从大到小的顺序排序,得到待推送列表list:
pre(U1,I2)=0.70,pre(U1,I3)=2.1,pre(U1,I4)=0.41,list=(I3,I2,I4);
S_DynamicPush_3、产生动态推送结果:
根据目标客户在给定时间内的消费情况,计算出平均消费值,然后,将待推送列表中售价高于平均消费值的商品过滤,通过Top-N方法产生预评分最高的前N个商品并添加到商品推送列表,推送给客户:
设客户U1在半年内的平均消费水平为100元,商品I2售价80元,商品I3售价120元,商品I4售价70元,则商品推送列表为(I2,I4);
S_DynamicPush_4、动态推送结束。
最后应说明的是:以上实例仅用以说明本发明的技术方法,而非对其限制;尽管参照前述实例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实例技术方案的精神和范围。

Claims (1)

1.一种电商平台中的商品并行动态推送方法,其特征在于,包括:
服务器利用MPI分布式并行的方式构建客户矩阵、商品属性矩阵以及客户-商品的评分矩阵;利用MPI与多线程并行的方式对客户进行聚类,主进程执行粒子群优化算法获取最优的簇数,从进程采用多线程的方式执行并行k均值聚类算法;利用多线程并行的方式来计算目标商品与剩余商品之间的相似度;根据客户的平均消费水平,动态产生商品推送列表来推送给客户;
当利用MPI分布式并行的方式构建客户矩阵、商品属性矩阵以及客户-商品的评分矩阵时,在电子商务网站中,客户、商品以及客户-商品的评分三类实体以分布式的形式存储在计算机的数据库中,所以,采用MPI的分布式并行方式来构建所属实体的矩阵;
客户使用向量来表示:U=(c_param_1,c_param_2,…,c_param_p),向量中的参数表示客户属性,参数需要进行数字化处理;
商品使用向量来表示:G=(g_param_1,g_param_2,…,g_param_q),向量中的参数表示商品属性,参数需要进行数字化处理;
在计算商品之间的相似性时,需要对数据库中的评分进行优化:新的评分=先前评分-客户对所有商品的评分均值,目标商品为目标客户评分最高的商品;
主进程构建矩阵的函数为MasterConstructMatrix(type),从进程构建矩阵的函数为SlaverConstructMatrix(type),在构建矩阵之前,接收传递的参数type,type表示构建矩阵的类型,“1”表示构建客户矩阵,“2”表示构建商品属性矩阵,“3”表示构建客户-商品评分矩阵;参数master_id为主服务器ID,slaver_id为从服务器ID,matrix为从进程构造的分块矩阵,具体如下:
主进程master构建矩阵,函数为MasterConstructMatrix(type):
S_MasterConstructMatrix_1、初始化MPI环境,并获取服务器参数;
S_MasterConstructMatrix_2、启动分布式集群中的所有从进程来构建分块矩阵;
S_MasterConstructMatrix_3、利用MPI_Recv(master_id,slaver_id,matrix,通信状态)函数接收从进程所构建的分块矩阵,并组装成完整矩阵;
S_MasterConstructMatrix_4、主进程构建矩阵结束;
从进程slaver并行地构建分块矩阵,函数为SlaverConstructMatrix(type),具体如下:
S_SlaverConstructMatrix_1、通过查询所在的数据库,构建所述数据库实体的分块矩阵matrix;
S_SlaverConstructMatrix_2、利用MPI_Send(master_id,slaver_id,matrix)函数将构建的分块矩阵发送给主进程;
S_SlaverConstructMatrix_3、从进程构建分块矩阵结束;
当利用MPI与多线程并行的方式对客户进行聚类时,主进程执行粒子群优化算法获取最优的簇数,并将所述簇数传递给从进程,从进程执行并行k均值聚类算法;
主进程master执行粒子群优化算法来优化聚类中的簇数k,函数为MasterAirosol(),具体如下:
S_MasterAirosol_1、初始化MPI环境,并获取服务器参数,启动n个执行并行k均值聚类算法的从进程slaver_1,slaver_2,...,slaver_n;
S_MasterAirosol_2、随机生成m个簇数k1,k2,...,km,ki位于区间[0,N]上,N为客户矩阵行向量的个数,即客户数;
S_MasterAirosol_3、初始化粒子群:
S_MasterAirosol_3_1、每个ki由二进制向量进行表示,即ki=(b1,b2,...,bt);
S_MasterAirosol_3_2、位移xi,0=(b1,b2,...,bt);
S_MasterAirosol_3_3、速度vi,0=a*xi,a位于区间[0.1,0.2]上;
S_MasterAirosol_4、判断ki与kj是否相等,若不相等,则转到S_MasterAirosol_5,否则,转到S_MasterAirosol_10;
S_MasterAirosol_5、将所述的簇数利用MPI_Send(master_id,slaver_id,ki)函数均分给每一个从进程;
S_MasterAirosol_6、利用MPI_Recv(master_id,slaver_id,e,通信状态)函数接收从进程发送的聚类评价值e;
S_MasterAirosol_7、取出聚类评价值e的整数部分,截取低t位的比特作为粒子群的粒子适应值f1,f2,…,fk
S_MasterAirosol_8、根据粒子适应值更新每个粒子的历史最优值和粒子群最优值,并且更新每个粒子的速度和位移,位移只保留整数部分:
vid,k+1=w*vid,k+c1*z1*(pid,k-xid,k)+c2*z2*(pgd,k-xid,k),
xid,k+1=xid,k+r*vid,k+1
粒子第k次迭代搜索到的历史最优值为pid,k,第k次的最优值为pgd,k
w是惯性因子,当取值为1时,粒子群算法进行全局优化,从而避免陷入局部优化;
c1是自我学习因子,设置为2,c2是社会学习因子,设置为2;
z1和z2是[0,1]区间内均匀分布的随机数;
r是约束因子,设置为1;
S_MasterAirosol_9、转到S_MasterAirosol_4,继续迭代;
S_MasterAirosol_10、利用MPI_Recv(master_id,slaver_id,cluster,通信状态)函数接收包含目标客户的簇cluster;
S_MasterAirosol_11、利用MPI_Send(master_id,slaver_id,exit)函数向从进程发送退出消息;
S_MasterAirosol_12、主进程优化聚类簇数结束;
从进程进行聚类并将评价值、聚类中心和包含目标客户的簇发送给主进程,函数为SlaverKmeans(),具体如下:
S_SlaverKmeans_1、利用MPI_Recv(master_id,slaver_id,msg,通信状态)函数接收消息msg;
S_SlaverKmeans_2、解析消息是否为“退出”命令,若是,则转到S_SlaverKmeans_8,否则,转到S_SlaverKmeans_3;
S_SlaverKmeans_3、簇数k=msg;
S_SlaverKmeans_4、执行并行k均值聚类算法,需要计算评价值e和聚类中心;
S_SlaverKmeans_5、利用MPI_Send(master_id,slaver_id,e)函数将评价值e发送给主进程;
S_SlaverKmeans_6、利用MPI_Send(master_id,slaver_id,cluster)函数将包含目标客户的簇cluster发送给主进程;
S_SlaverKmeans_7、转到S_SlaverKmeans_1;
S_SlaverKmeans_8、从进程退出;
S_SlaverKmeans_9、从进程执行并行k均值聚类结束;
进一步地,当用k均值聚类算法对客户进行聚类时采用多线程并行的方式来加速计算,并行k均值聚类函数为ParallelKmeans(),具体如下:
S_ParallelKmeans_1、初始化聚类均值向量a1,a2,…,ak:即将客户向量分成k个不同的簇,在每个簇中随机选取一个客户向量作为初始聚类均值向量;
S_ParallelKmeans_2、初始化聚类中的每一个簇:C1=C2=…=Ck=φ,φ表示空集;
S_ParallelKmeans_3、计算每一个客户向量与均值向量之间的欧几里得距离,并划分到相应的簇中:
S_ParallelKmeans_3_1、分配t个线程,并添加到线程队列:Queue=(thread_1,thread_2,…,thread_t);
S_ParallelKmeans_3_2、当线程队列不为空时,取出一个线程来计算客户向量Ui与均值向量a1,a2,…,ak之间的欧几里得距离:
dis(Ui,aj)=(||Ui-aj||2)1/2
得到dis(Ui,a1),dis(Ui,a2),…,dis(Ui,ak),获取最小值dis(Ui,aj),并将客户Ui划分到簇Cj中;
S_ParallelKmeans_3_3、线程完成计算任务后,将所述线程添加到线程队列中;
S_ParallelKmeans_3_4、将线程队列中的线程取出,计算剩余客户向量与均值向量之间的欧几里得距离并划分到相应簇中,依次进行,直到客户向量全部计算完毕;
S_ParallelKmeans_3_5、释放线程并销毁线程队列;
S_ParallelKmeans_4、更新每个簇中的均值向量:
分配k个线程,每个线程计算一个簇中的均值向量:
ai=(C1+C2+…+Ck)/||Ci||;
S_ParallelKmeans_5、计算聚类的评价值:
e=||C1-a1||2+||C1-a2||2+…+||C1-ak||2+…+||Ck-a1||2+||Ck-a2||2+…+||Ck-ak||2
S_ParallelKmeans_6、判断聚类评价值是否变化,若发生变化,则转到S_ParallelKmeans_2,否则,转到S_ParallelKmeans_7;
S_ParallelKmeans_7、并行k均值聚类算法结束;
当计算目标商品与剩余商品之间的相似度时,采用线程队列的多线程并行方式为每一个线程分配商品向量来执行计算相似度的任务,首先利用客户-商品的评分矩阵计算商品之间的评分相似度sim_g(I,J),客户-商品的评分矩阵是一个m*n阶稀疏矩阵,m为簇中的客户数量,所述簇包含了目标客户,n为商品数量;然后,利用商品向量计算商品之间的属性相似度sim_a(I,J);最后,为所述两种相似度设置一个动态的权值w,并计算商品之间的相似度;并行计算目标商品与剩余商品之间的相似度函数为ParallelSim(),具体如下:
S_ParallelSim_1、分配t个线程并添加到线程队列Queue中,即Queue=(thread_1,thread_2,…,thread_t);
S_ParallelSim_2、设定相似度权值w,w位于区间[0,1]上;
S_ParallelSim_3、线程thread_1,thread_2,…,thread_t出队,Queue=(empty);
S_ParallelSim_4、将商品I1,I2,…,It分配给相应的线程thread_1,thread_2,…,thread_t;
S_ParallelSim_5、线程thread_i计算目标商品J与分配到的商品I之间的评分相似度:
sim_g(I,J)=(R1,I-avg(RI))*(R1,J-avg(RJ))+…+(Rm,I-avg(RI))*(Rm,J-avg(RJ))/{[(R1,I-avg(RI))2+…+(Rm,I-avg(RI))2]*[(R1,J-avg(RJ))2+…+(Rm,J-avg(RJ))2]}1/2
avg(RI)=(R1,I+…+Rm,I)/m;
S_ParallelSim_6、线程thread_i利用欧几里得距离计算目标商品与分配到的商品之间的距离,然后,归一化处理得到商品的属性相似度:
O(I,J)=[(I1-J1)2+(I2-J2)2+…+(Iq-Jq)2]1/2
sim_a(I,J)=1/(1+O(I,J));
S_ParallelSim_7、线程thread_i计算商品之间的相似度:
sim(I,J)=w*sim_g(I,J)+(1-w)*sim_a(I,J),
商品相似度计算完毕之后,将线程thread_i添加到线程队列中,将剩余商品分配给线程队列中的线程,依次进行,直到所有商品与目标商品之间的相似度计算完毕;
S_ParallelSim_8、商品相似度计算完毕;
当动态推送商品时,根据客户的消费水平,动态产生商品推送列表来推送给客户,函数为DynamicPush(),具体如下:
S_DynamicPush_1、设定商品相似度阈值,得到目标商品与剩余商品之间相似度大于或等于所述阈值的商品集I=(I1,I2,…,It);
S_DynamicPush_2、产生待推送列表,即计算目标客户对商品集中商品的预评分并按照从大到小的顺序排序,得到待推送列表list:
pre(U,J)=[sim(J,I1)*RU,I1+…+sim(J,In)*RU,In]/[sim(J,I1)+…+sim(J,In)];
S_DynamicPush_3、产生动态推送结果:
根据目标客户在给定时间内的消费情况,计算出平均消费值,然后,将待推送列表中售价高于平均消费值的商品过滤,通过Top-N方法产生预评分最高的前N个商品并添加到商品推送列表,推送给客户;
S_DynamicPush_4、动态推送结束。
CN201911341308.1A 2019-12-24 2019-12-24 一种电商平台中的商品并行动态推送方法 Active CN110941771B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911341308.1A CN110941771B (zh) 2019-12-24 2019-12-24 一种电商平台中的商品并行动态推送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911341308.1A CN110941771B (zh) 2019-12-24 2019-12-24 一种电商平台中的商品并行动态推送方法

Publications (2)

Publication Number Publication Date
CN110941771A true CN110941771A (zh) 2020-03-31
CN110941771B CN110941771B (zh) 2022-08-23

Family

ID=69912294

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911341308.1A Active CN110941771B (zh) 2019-12-24 2019-12-24 一种电商平台中的商品并行动态推送方法

Country Status (1)

Country Link
CN (1) CN110941771B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113516524A (zh) * 2020-04-10 2021-10-19 北京沃东天骏信息技术有限公司 用于推送信息的方法和装置
CN116342229A (zh) * 2023-05-30 2023-06-27 日照金果粮油有限公司 一种跨境电商信息交易处理系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060139681A1 (en) * 2004-05-27 2006-06-29 Silverbrook Research Pty Ltd Use of variant and base keys with three or more entities
CN103049486A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 一种协同过滤距离的处理方法和系统
CN103530304A (zh) * 2013-05-10 2014-01-22 Tcl集团股份有限公司 基于自适应分布式计算的在线推荐方法、系统和移动终端
CN103971161A (zh) * 2014-05-09 2014-08-06 哈尔滨工程大学 基于柯西分布量子粒子群的混合推荐方法
CN104572880A (zh) * 2014-12-22 2015-04-29 中国科学院信息工程研究所 基于用户的协同过滤的并行实现方法及系统
CN107220841A (zh) * 2016-03-22 2017-09-29 上海市玻森数据科技有限公司 一种基于商业数据的聚类系统
CN107220365A (zh) * 2017-06-07 2017-09-29 四川大学 基于协同过滤与关联规则并行处理的精准推荐系统及方法
CN107577786A (zh) * 2017-09-15 2018-01-12 合肥工业大学 一种基于联合聚类的矩阵分解推荐方法
US20180276688A1 (en) * 2017-03-24 2018-09-27 International Business Machines Corporation System and method for a scalable recommender system using massively parallel processors
US20190155263A1 (en) * 2016-05-09 2019-05-23 Strong Force Iot Portfolio 2016, Llc Method and system of a noise pattern data marketplace in an industrial environment

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060139681A1 (en) * 2004-05-27 2006-06-29 Silverbrook Research Pty Ltd Use of variant and base keys with three or more entities
CN103049486A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 一种协同过滤距离的处理方法和系统
CN103530304A (zh) * 2013-05-10 2014-01-22 Tcl集团股份有限公司 基于自适应分布式计算的在线推荐方法、系统和移动终端
CN103971161A (zh) * 2014-05-09 2014-08-06 哈尔滨工程大学 基于柯西分布量子粒子群的混合推荐方法
CN104572880A (zh) * 2014-12-22 2015-04-29 中国科学院信息工程研究所 基于用户的协同过滤的并行实现方法及系统
CN107220841A (zh) * 2016-03-22 2017-09-29 上海市玻森数据科技有限公司 一种基于商业数据的聚类系统
US20190155263A1 (en) * 2016-05-09 2019-05-23 Strong Force Iot Portfolio 2016, Llc Method and system of a noise pattern data marketplace in an industrial environment
US20180276688A1 (en) * 2017-03-24 2018-09-27 International Business Machines Corporation System and method for a scalable recommender system using massively parallel processors
CN107220365A (zh) * 2017-06-07 2017-09-29 四川大学 基于协同过滤与关联规则并行处理的精准推荐系统及方法
CN107577786A (zh) * 2017-09-15 2018-01-12 合肥工业大学 一种基于联合聚类的矩阵分解推荐方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
AHMED A. M. JAMEL 等: "A Survey and Systematic Categorization of Parallel K-means and Fuzzy-c-Means Algorithms", 《COMPUTER SYSTEMS SCIENCE AND ENGINEERING》 *
SONIYA LALWANI 等: "Minimization of Makespan for Parallel Machines Using PSO to Enhance Caching of MSA-Based Multi-query Processes", 《SOFT COMPUTING FOR PROBLEM SOLVING》 *
叨叨克: "优化算法——粒子群算法(PSO)", 《HTTPS://BLOG.CSDN.NET/HNZHANGJQ/ARTICLE/DETAILS/82711771》 *
朱宝森: "基于MPI和四级流水的云存储中并行数据消冗策略的研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *
颜巍: "基于云平台的数据挖掘算法的研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113516524A (zh) * 2020-04-10 2021-10-19 北京沃东天骏信息技术有限公司 用于推送信息的方法和装置
CN116342229A (zh) * 2023-05-30 2023-06-27 日照金果粮油有限公司 一种跨境电商信息交易处理系统
CN116342229B (zh) * 2023-05-30 2023-08-08 日照金果粮油有限公司 一种跨境电商信息交易处理系统

Also Published As

Publication number Publication date
CN110941771B (zh) 2022-08-23

Similar Documents

Publication Publication Date Title
Guan et al. Matrix factorization with rating completion: An enhanced SVD model for collaborative filtering recommender systems
US11709908B2 (en) Economic optimization for product search relevancy
CN110162693B (zh) 一种信息推荐的方法以及服务器
US20180288177A1 (en) Methods and systems for activity-based recommendations
CN112232925A (zh) 一种融合知识图谱对商品进行个性化推荐的方法
US20140006166A1 (en) System and method for determining offers based on predictions of user interest
CN107545471B (zh) 一种基于高斯混合的大数据智能推荐方法
EP2452274A1 (en) Systems and methods for making recommendations using model-based collaborative filtering with user communities and items collections
CN115062732B (zh) 基于大数据用户标签信息的资源共享合作推荐方法及系统
CN110941771B (zh) 一种电商平台中的商品并行动态推送方法
CN110197404A (zh) 可降低流行度偏差的个性化长尾商品推荐方法和系统
CN108628882A (zh) 用于预判问题的方法和系统
Ben-Shimon et al. An ensemble method for top-N recommendations from the SVD
Almusallam et al. Towards an unsupervised feature selection method for effective dynamic features
US20160171365A1 (en) Consumer preferences forecasting and trends finding
CN115982463A (zh) 资源推荐方法、装置、设备及存储介质
Meira et al. An experimental analysis on scalable implementations of the alternating least squares algorithm
Liao et al. Multi-behavior RFM model based on improved SOM neural network algorithm for customer segmentation
CN116823410B (zh) 数据处理方法、对象处理方法、推荐方法及计算设备
CN112150271A (zh) 一种客户分群方法及系统
CN111259267A (zh) 一种基于稀疏性感知的分布式混合协同智能推荐方法
Gao et al. Deep learning with consumer preferences for recommender system
CN114330519A (zh) 数据确定方法、装置、电子设备及存储介质
Hang et al. A framework of business intelligence-driven data mining for e-business
CN110544129A (zh) 一种面向社交电商用户的个性化推荐方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant