一种基于用户行为日志的海运报价推荐系统与方法与流程

文档序号:15385720发布日期:2018-09-08 00:32阅读:148来源:国知局

本发明涉及推荐系统领域,特别是涉及一种基于用户搜索日志的海运报价推荐系统与方法。



背景技术:

目前在大多海运报价查询系统中,用户通常采取从海运报价列表,或根据目的港等关键字搜索海运航线报价。随着海运规模的不断扩大,海运路线以及报价产品快速增长。由于用户对产品信息变化的不了解,面对大量报价信息时无法获得对自己真正有用的那部分信息。而海运报价推荐是根据用户的特征和历史查询记录,向用户推荐可能感兴趣的海运报价。个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,由系统发现用户的兴趣点,从而引导用户发现自己的信息需求。

目前已有许多成熟的推荐算法,例如基于人口统计学的推荐算法、基于用户或物品的协同过滤算法、基于内容的推荐算法等,但基于用户或物品的协同过滤算法存在用户“冷启动”问题,在系统开始时推荐质量差;基于内容的推荐算法对物品特征的提取要求很高,而且物品相似度的衡量标准只考虑到了物品本身,推荐结果有一定的片面性;基于人口统计学的推荐算法只是根据系统用户的基本信息发现用户的相似度,推荐结果比较单一,效果很难令人满意。而且海运报价具有很明显的地域性和时效性特征,使用传统的推荐算法推荐的海运报价产品可能存在报价已过期或者报价航线的起始港距离用户过远等问题。



技术实现要素:

本发明的目的在于提供一种基于用户搜索日志的海运报价推荐系统与方法。

本发明第一方面提供一种基于用户搜索日志的海运报价推荐系统,包括:用户交互模块,用于搜索和查看海运报价产品并对系统参数进行配置,同时用于记录用户的搜索日志;数据预处理模块,用于从用户交互模块中抽取用户个人信息、报价产品信息和用户搜索日志,提取用户特征向量、报价产品特征向量,并把搜索日志转化为用户偏好矩阵等;

推荐引擎模块,用于计算用户之间的相似度以及报价产品之间的相似度,根据相似度以及用户偏好矩阵预测用户对其它报价产品的偏好从而为用户推荐海运报价产品。

本发明第二方面提供一种基于用户搜索日志的海运报价推荐方法,包括:

1)根据用户注册信息提取用户关键属性,包括用户所在城市,用户公司的经营范围,用户公司的规模,生成用户特征向量:(用户id,城市,经营范围,规模)

2)把用户搜索报价的日志,转化为(用户id,报价id,偏好度,搜索日期)的格式,生成用户偏好矩阵,其中偏好度与用户搜索报价的次数与搜索类型相关

3)依据公式计算用户i与用户j之间的距离(距离越近代表相似度越高),其中,p代表用户特征种类集合,是含有特征f的用户特征向量i和j的相异度,通过权重αf控制不同特征f对相似度的影响。选择与目标用户i相似度最高的n个用户,从用户偏好矩阵中提取n个用户的报价偏好数据,并过滤报价已过期的偏好数据,作为推荐给用户i的候选报价集合。针对候选集合中的每条报价通过score=∑j∈r((1-d(i,j)/d_all)*rj预测用户i对目标报价的偏好,其中r是候选集合中同一报价的所有偏好列表,d_all是目标用户i与列表中用户的距离之和,rj是列表中用户j对目标报价的偏好。则与目标用户相似度越高且偏好值越大的报价预测偏好值越大。对预测偏好进行排序,选择预测偏好值大于α的报价或预测偏好值最大的n个报价作为目标用户的推荐结果

本发明第三方面提供一种基于用户搜索日志的海运报价推荐方法,包括:

1)把用户搜索报价的日志,转化为(用户id,报价id,偏好度,搜索日期)的格式,生成用户偏好矩阵,其中偏好度与用户搜索报价的次数与搜索类型相关

2)从用户偏好矩阵中提取与报价i和j相关的所有数据,根据公式sim(i,j)=((tj-tt)/(|tj-tt|))(λ·wij+(1-λ)·c(tt,tj))计算报价i和j之间的相似度。wij是jaccard公式或余弦相似度用于依据偏好矩阵数据计算i和j之间的相似度,c(tt,tj)是信息衰老函数,用于控制不同时效性的报价对相似度的影响,其中,tt表示当前日期,tj表示报价航线的截关日期,(tj-tt)/(|tj-tt|)用于控制过滤已失效的报价,若报价航线的截关日期tj在当前日期tt之前则sim(i,j)<0。选择与用户搜索过的报价相似度大于0的报价,根据公式预测用户u对报价i的偏好,其中,j代表用户u的实际偏好数据集,ruj代表用户u对报价j的实际偏好,是所有用户对报价i和j的偏好的平均值,sim(i,j)代表报价j与目标报价i之间的相似度。对预测偏好进行排序,选择预测偏好值大于α的报价或预测偏好值最大的n个报价作为目标用户的推荐结果

本发明第四方面提供一种基于用户搜索日志的海运报价推荐方法,包括:

1)根据海运报价信息提取报价关键属性,包括:起始港、目的港、中转港、码头、船公司、航线,生成报价特征向量:(起始港id,目的港id,中转港id,码头id,船公司id,航线id)

2)把用户搜索报价的日志,转化为(用户id,报价id,偏好度,搜索日期)的格式,生成用户偏好矩阵,其中偏好度与用户搜索报价的次数与搜索类型相关

3)首先根据公式计算不同报价特征向量i和j之间的相似度,其中n(i)表示向量i的特征值。然后根据公式预测目标用户u对未过期报价i的偏好值,其中,j代表用户u的实际偏好数据集,ruj代表用户u对报价j的实际偏好,sim(i,j)代表用户搜索过的报价j的特征向量与目标报价i的特征向量之间的相似度。对预测偏好进行排序,选择预测偏好值大于α的报价或预测偏好值最大的n个报价作为目标用户的推荐结果

本发明第五方面提供一种基于用户搜索日志的海运报价推荐方法,包括:

1)根据用户注册信息提取用户关键属性,包括用户所在城市,用户公司的经营范围,用户公司的规模,生成用户特征向量:(用户id,城市,经营范围,规模)

2)根据海运报价信息提取报价关键属性,包括:起始港、目的港、中转港、码头、船公司、航线,生成报价特征向量:(起始港id,目的港id,中转港id,码头id,船公司id,航线id)

3)把用户搜索报价的日志,转化为(用户id,报价id,偏好度,搜索日期)的格式,生成用户偏好矩阵,其中偏好度与用户搜索报价的次数与搜索类型相关

4)通过三种方式,生成中间推荐结果集:

a)依据公式计算用户i与用户j之间的距离(距离越近代表相似度越高),其中,p代表用户特征种类集合,是含有特征f的用户特征向量i和j的相异度,通过权重αf控制不同特征f对相似度的影响。选择与目标用户i相似度最高的n个用户,从用户偏好矩阵中提取n个用户的报价偏好数据,并过滤报价已过期的偏好数据,作为推荐给用户i的候选报价集合。针对候选集合中的每条报价通过score=∑j∈r((1-d(i,j)/d_all)*rj预测用户i对目标报价的偏好,其中r是候选集合中同一报价的所有偏好列表,d_all是目标用户i与列表中用户的距离之和,rj是列表中用户j对目标报价的偏好。则与目标用户相似度越高且偏好值越大的报价预测偏好值越大。对预测偏好进行排序,选择预测偏好值大于α的报价或预测偏好值最大的n个报价作为目标用户的推荐结果

b)从用户偏好矩阵中提取与报价i和j相关的所有数据,根据公式sim(i,j)=((tj-tt)/(|tj-tt|))(λ·wij+(1-λ)·c(tt,tj))计算报价i和j之间的相似度。wij是jaccard公式或余弦相似度用于依据偏好矩阵数据计算i和j之间的相似度,c(tt,tj)是信息衰老函数,用于控制不同时效性的报价对相似度的影响,其中,tt表示当前日期,tj表示报价航线的截关日期,(tj-tt)/(|tj-tt|)用于控制过滤已失效的报价,若报价航线的截关日期tj在当前日期tt之前则sim(i,j)<0。选择与用户搜索过的报价相似度大于0的报价,根据公式预测用户u对报价i的偏好,其中,j代表用户u的实际偏好数据集,ruj代表用户u对报价j的实际偏好,是所有用户对报价i和j的偏好的平均值,sim(i,j)代表报价j与目标报价i之间的相似度。对预测偏好进行排序,选择预测偏好值大于α的报价或预测偏好值最大的n个报价作为目标用户的推荐结果

c)首先根据公式计算不同报价特征向量i和j之间的相似度,其中n(i)表示向量i的特征值。然后根据公式预测目标用户u对未过期报价i的偏好值,其中,j代表用户u的实际偏好数据集,ruj代表用户u对报价j的实际偏好,sim(i,j)代表用户搜索过的报价j的特征向量与目标报价i的特征向量之间的相似度。对预测偏好进行排序,选择预测偏好值大于α的报价或预测偏好值最大的n个报价作为目标用户的推荐结果

5)根据公式norm(i,s)=(s/smax)*λi对4)中产生的三个推荐报价结果集中的预测偏好值进行标准化处理,得到所有推荐报价的标准化预测偏好值,其中norm(i,s)表示推荐结果集i中s预测偏好值的标准化结果,smax表示该推荐结果集的最大偏好值,λi表示该结果集的权重。对标准化的偏好值进行排序,选择偏好值最大的n个报价作为目标用户的最终推荐结果。并在下次推荐过程中根据用户反馈调整权重λi。

优选地,用户关键属性包括用户的所在城市、经营范围、规模。

优选地,报价关键属性包括起始港、目的港、中转港、码头、船公司、航线。

本发明与背景技术相比,具有的有益的效果是:

(1)本发明是提供了一种基于用户搜索日志的海运报价推荐系统与方法,能够帮助用户从大量的海运报价信息中快速发现适合自己的报价信息。

(2)本发明融合多种推荐算法,根据用户特征的相似性和报价特征的相似性为用户推荐报价,有效解决了推荐系统的“冷启动”问题,特别地加入了用户地域特征以及报价时效特征对推荐结果的影响,适应了海运报价产品地域性和时效性的特点,能够为用户推荐高质量的海运报价产品。

附图说明

图1是海运报价推荐系统的整体框架图;

图2是海运报价推荐算法的整体流程图;

图3是从搜索日志生成用户偏好的过程示意图;

图4是基于用户特征向量和偏好矩阵生成推荐结果示例图;

图5是基于用户偏好矩阵生成推荐结果示例图;

图6是基于报价特征向量和用户偏好矩阵生成推荐结果示例图;

图7是推荐结果权重调整示意图。

具体实施方式

采用本发明所提供的基于用户搜索日志的海运报价推荐系统和方法,可以实现为用户推荐高质量海运报价产品,方便用户对海运报价的检索,具体的实施步骤如下:

图1给出基于用户搜索日志的海运报价推荐系统的整体框架图,系统整体分为三个模块:用户交互模块,用于搜索和查看海运报价产品并对系统参数进行配置,同时系统会记录用户的搜索日志;数据预处理模块,用于从用户交互模块中抽取用户个人信息、报价产品信息和用户搜索日志,提取用户特征向量、报价产品特征向量,并把搜索日志转化为用户偏好矩阵等;推荐引擎模块,用于根据特征向量和偏好举证计算用户之间的相似度以及报价产品之间的相似度,根据相似度以及用户历史偏好数据预测用户对其它报价产品的偏好从而为用户推荐海运报价产品,同时根据用户交互模块中获取的用户反馈改善推荐结果。

具体实施流程如图2所示,其中重要的步骤为:

1)根据用户注册信息提取用户关键属性,包括用户所在城市,用户公司的经营范围,用户公司的规模,其中对公司规模进行重编码,微型企业对应1,小型企业对应2,中型企业对应3,大型企业对应4,形成用户特征向量:(用户id,城市,经营范围,规模),例如(1,宁波,农产品,3)表示id为1的用户所在城市为宁波市,经营农产品贸易,公司规模为中型企业。

2)一条海运报价信息通常包括装载码头、起运港、目的港、中转港、船公司、航程、船期、截关日期、货币、价格等属性,从中提取报价关键属性,包括:起始港、目的港、中转港、码头、船公司、航线,生成报价特征向量:(起始港id,目的港id,中转港id,码头id,船公司id,航线id)。

3)记录用户搜索日志,搜索日志格式为(用户id,搜索类型,搜索条件,搜索结果,搜索时间),根据搜索类型划分,搜索日志数据分为两种:普通查询(根据报价属性进行的条件搜索)和详情查询(查看单条报价具体详情),例如,一条普通查询的日志数据为(1,normal,{dischartging_port_id:25},{2,6,7},’2017-02-0910:20:00’),代表用户id为1的用户在2017年2月9日10点20分做了一次普通查询,搜索目的港id为25的报价信息,系统返回结果为报价id为2,6,7的三条报价信息;一条详情查询的日志数据为(1,detail,6,,’2017-02-0910:25:00’),代表用户id为1的用户在2017年2月9日10点25分做了一次报价详情查询,查看了报价id为6的报价信息。之后将搜索日志转化为用户偏好矩阵,数据转换过程如图3所示,具体流程包括:

第一步,读取用户的搜索日志数据,把每条搜索日志转换成(用户id,报价id,偏好度,搜索日期)的格式,其中若搜索类型为normal(普通查询)则偏好度置为1,若搜索类型为detail(详情查询)说明用户对此条报价更感兴趣,则偏好度置为2,例如搜索日志(1,normal,{dischartging_port_id:25},{2,6,7},’2017-02-0910:20:00’)转化后生成(1,2,1,’2017-02-09’),(1,6,1,’2017-02-09’),(1,7,1,’2017-02-09’)三条数据,搜索日志(1,detail,6,,’2017-02-0910:25:00’)转化后生成(1,6,2,’2017-02-09’)。

第二步,读取第一步生成的日志处理数据,对用户id,报价id相同的数据的偏好度进行累加,并提取最后搜索日期,生成最终的用户偏好矩阵数据(用户id,报价id,偏好度,搜索日期)。例如(1,6,1,’2017-02-09’)和(1,6,2,’2017-02-09’)累加后生成(1,6,3,’2017-02-09’)。

4)基于用户特征向量和用户偏好矩阵,生成推荐结果:

第一步,对于目标用户i,从用户相似度表中选择与i相似度最大的n个用户,用户间相似度通过如下方式计算:依据公式计算用户i与用户j之间的距离(距离越近代表相似度越高),其中,p代表用户特征种类集合,是含有特征f的用户特征向量i和j的相异度,αf是相异度的权重。若特征f是数值类属性,则其中maxf和minf分别表示特征f的最大值和最小值;xif代表用户i的特征f的值;若特征f是名称类或二值类属性,则当xif=xjf时,否则若特征f是序数型,对于用户i,先计算他的排名rif,根据公式xif=(rif-1)/(mf-1)得到重编码后的数据,其中mf表示最大的排名数值。再按照公式2来计算。例如存在两个用户i(1,宁波,木材,中型规模)和j(2,宁波,农产品,大型规模),设置α城市=0.5,α经营范围=0.25,α规模=0.25,由于规模属于序数型,xi规模=(3-1)/(4-1)=0.67,xj规模=(4-1)/(4-1)=1,则则用户i和j的距离d(i,j)=(0.5*0+0.25*1+0.25*0.33)/(0.5+0.25+0.25)=0.3325。

第二步,从用户偏好矩阵中提取n个用户的报价偏好数据,并过滤报价已过期的偏好数据,作为推荐给用户i的候选报价集合。针对候选集合中的每条报价通过score=∑j∈r((1-d(i,j)/d_all)*rj(公式3)预测用户i对目标报价的偏好,其中r是候选集合中同一报价的所有偏好列表,d_all是目标用户i与列表中用户的距离之和,rj是列表中用户对目标报价的偏好。对预测偏好进行排序,选择预测偏好值最大的n个报价作为目标用户的推荐结果。例如对于id为1的报价,存在{1,1,3,’2017-02-09’}和{2,1,1,’2017-03-19’}两条偏好数据,假设目标用户i与用户1和2的距离分别为0.3和0.5,d_all=1,则根据公式3计算的用户i对报价1的预测偏好值为(1-0.3)*3/1+(1-0.5)*1/1=2.6。示例图如图4所示。

5)基于用户偏好矩阵,生成推荐结果:

第一步,从基于用户偏好的报价相似度表中选择当前日期下与用户搜索过的报价相似度大于0的其他报价,报价相似度通过如下方式计算:从用户偏好矩阵中读取与报价i和j相关的所有数据,即对报价i和j产生过搜索行为的所有数据,根据如下公式计算报价之间的相似度:sim(i,j)=((tj-tt)/(|tj-tt|))(λ·wij+(1-λ)·c(tt,tj))(公式4),λ是融合参数,值在(0,1)之间,当λ越大用户的兴趣对报价相似度影响越大,相反报价的时效性对相似度影响更大;表示报价i和j之间的相似性,n(i)和n(j)代表搜索过报价i和j的用户,n(u)代表搜索过报价i和j的用户u搜索过的报价,1/log(1+|n(u)||)用于减小活跃用户对结果的影响,即用户u搜索过的报价越多,报价i和j的相似性越低,f(|tui-tuj|)=1/(1+α|tui-tuj|)中,α是时间衰减参数,tui是用户u访问报价i的搜索日期,则搜索日期相近的报价相似度更高,用户最近搜索的报价更可能推荐给目标用户;表示报价在tt时刻的影响力大小,tt表示当前日期,tj表示报价航线的截关日期,a是可设置的报价老化率参数,则越新的报价(截关日期距离当前日期最远的报价)影响力越大;并且若报价航线的截关日期tj在当前日期tt之前则sim(i,j)<0。例如,存在与报价i和j相关的偏好数据为(1,i,2,’2017-01-01’),(1,m,4,’2017-01-01’),(1,j,3,’2017-02-11’),(2,i,5,’2017-02-01’),(2,j,4,’2017-03-01’),(2,m,3,’2017-02-01’),则|n(1)|=|n(2)|=3,|n(i)|=|n(j)|=2,设置λ=1,α=0.5,则i与j的相似性假设报价i和j均为过期,则sim(i,j)=wij=0.6。

第二步,根据以下公式预测用户u对相似度大于0的其他报价i的偏好:其中,j代表用户u的实际偏好数据集,ruj代表用户u对报价j的实际偏好,是所有用户对报价i和j的偏好的平均值,sim(i,j)代表报价j与目标报价i之间的相似度。例如,假设用户1存在的偏好数据有:(1,m,4,’2017-01-01’),(1,j,3,’2017-02-11’),根据第一步计算得sim(i,m)=0.5,sim(i,j)=0.6,假设则p1i=(0.5·(4-3)+0.6·(3-4))/(0.5+0.6)+2=1.91。对预测偏好进行排序,选择预测偏好值最大的n个报价作为目标用户的推荐结果。示例图如图5所示。

6)基于报价特征向量和用户偏好矩阵,生成推荐结果:

第一步,对于新发布的报价i,提取报价特征向量,若报价特征向量表不存在此向量,则将此向量存入向量表中,并根据公式计算i与已存在报价特征向量之间的相似度,把结果存入报价特征相似度表中,其中n(i)表示向量i的特征值。例如对于新报价i(1,2,3,2,6,1),报价特征向量表中不存在此向量,则把此条报价特征向量插入特征向量表中,对于已存报价特征向量j(1,2,3,2,4,2),因为i和j有4个相同特征值,则i和j的相似度为把i和j在向量表中的主键(假设为2和1)加上相似度(0.667)作为一条记录(2,1,0.667)存入报价特征相似度表。

第二步,读取报价表中现存的有效报价,根据公式pui=∑j∈jsim(i,j)·ruj/∑j∈j|sim(i,j)|预测目标用户u对有效报价i的偏好值,其中,j是从偏好矩阵中选取的用户u的实际偏好数据集,ruj代表用户u对报价j的实际偏好,sim(i,j)代表报价j的特征向量与目标报价i的特征向量之间的相似度。例如,用户1存在两条报价偏好数据:{1,1,4,’2017-02-09’}和{1,2,2,’2017-03-19’},提取偏好数据中的报价id等于1和2的报价的特征向量,查找报价特征向量表和特征向量相似度表找到报价1,2和有效报价i的相似度,假设分别为0.7和0.5,则目标用户1对有效报价i的预测偏好值pui=(0.7*4+0.5*2)/(0.7+0.5)=3.167。最后对预测偏好进行排序,选择预测偏好值最大的n个报价作为目标用户的推荐结果。示例图如图6所示。

7)根据公式norm(i,s)=(s/smax)*λi对4)、5)、6)中产生的三个推荐报价结果集中的预测偏好值进行标准化处理,得到所有推荐报价的标准化预测偏好值,其中norm(i,s)表示推荐结果集i中s预测偏好值的标准化结果,smax表示该推荐结果集的最大偏好值,λi表示该结果集的权重,系统在初始化状态下给每个推荐结果集平均分配权值,即0.33。之后对标准化的偏好值进行排序,选择偏好值最大的n个报价作为目标用户的最终推荐结果。如图7所示根据用户反馈调整结果集权重,例如假设用户查看了4)中推荐结果集中的报价,则相应的权重λi增加20%,同样相应平均减少其他两个推荐结果集的权重。

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