面向LBS的基于马尔可夫预测算法的个性化推荐方法
技术领域
本发明属于互联网通信技术领域,具体涉及一种基于马尔可夫预测算法的个性化推荐方法。
背景技术
许多学科都涉及到对情境(Context)的研究,每个学科在对情境感知系统研究的时候,都会有自己对情境的定义。目前,情境并没有给出统一的定义。Schilit和Theimer定义情境为位置、用户和周围的人和物体,把情境看作是用户周围的人的身份、温度、位置、时间的组合。Bazire和Brézillon对各个领域的情境给出定义并进行了检验。Ryan把情境定义为用户的注意力集中点、方向、情绪状况、位置、日期、周围环境的人和物体。目前对情境的定义得到普遍认同的是Schilit等人在1994年提出的认为情境包含了所有可以使兴趣发生改变的实体,是对实体状态的反应,具有动态改变的特征。
在计算机科学领域也有自己对情境的定义,根据研究的内容给出了情境的七个要素:时间、地点、输入、需求、习惯、背景。随着移动互联网的发展,对于情境信息的研究显得至关重要,通过获取移动用户的兴趣点即所处的情境,通过研究分析,可以更好的向移动用户提供服务。Palmisano等人为顾客构建在不同购买情境下的独立配置文件,用于在不同购买情境下建立独立模型,方便预测特定情境下用户群的用户行为。
早在2002,Lai等人提出的资源管理系统就是位置情景信息在个性化推荐系统中的,该系统通过得到用户有效的位置信息,向用户提供个性化的服务。随后,推荐系统又将商场的位置的位置信息作为推荐的重要因素,结合用户消费的信息,包括购物的时间和日期、购物篮中的商品组合等,设计出一个向消费者实时推荐服务和物品的智能购物车系统。
近年来,随着社交网络、电子商务网站的兴起,人们的消费习惯正在慢慢地发生变化,为了满足用户日益增长个性化消费的需求,越来越多的人开始通过互联网获取推荐的服务信息并线下消费体验服务。
古凌岚在非专利文献1(古凌岚.基于情境的Web服务推荐方法[J].计算机工程与设计,2014,35(3):1115-1120)中提出了一解决Web服务组合过程的问题的方法。该基于情境的服务推荐算法,首先构建情境模型描述服务、用户评价信息、用户特征,之后收集必要的信息,建立并且更相信相应的服务缓存,采用聚类的方法处理相似情境的用户和服务,得到符合服务质量和满足功能的最初结果,最终将符合用户兴趣偏好的候选项目使用基于情境的推荐方法处理,推荐给用户,其中使用的服务推荐框架如附图1所示。
随着对协同过滤推荐系统研究的深入,Annie将位置情境信息综合到协同过滤推荐系统之中,而且又给出了计算两个不同情境a和情境b之间相似度的公式:
式中ru,i,ai——用户u在情境a对Itemi的评价;——用户u对全部Item评价的平均分;σai——代表情境a的方差值。因此该推荐系统首先要计算当前的位置情境a信息与待推荐的位置情境之间的相似度,之后根据相似度的计算结果将相关的推荐项目推送给用户。位置情境的相似度可以衡量一用户ua是否为目标用户ub的邻居用户,结合目前已有的理论知识和实际情况,真正对系统有参考价值的是邻居用户对项目的评分。
由此可见,位置、时间等一些基本的情境信息在个性化的推荐系统中的应用越来越广泛,成为推动移动电子商务推荐系统发展的重要因素之一。在国外基于情境信息应用在逐步的发展,而国内对基于情境信息的研究还不太成熟。伴随着移动互联网的发展,对于基于用户情境信息的研究,有着巨大的商业价值和科学研究价值。
用户兴趣的研究是推荐系统中构建规则的关键,而且多数推荐系统的推荐过程都是基于用户兴趣的,利用数据挖掘中常用的一些算法,为用户建立兴趣偏好。通过研究表明,用户的兴趣偏好与用户当时的情境是密不可分的,我们可以通过发掘用户的情境信息,建立用户的兴趣模型,得到用户的兴趣偏好特征。
发明内容
本发明具体通过如下技术方案实现:
一种面向LBS基于Markov预测的个性化推荐方法,包括以下步骤:
步骤A:数据预处理,将原始的网页数据解析为文本格式的数据,然后进行数据填充;
步骤B:使用用户的情境信息来表示用户的兴趣点,从而对用户兴趣点的预测转化为对用户情境的预测;
步骤C:利用Markov预测算法对用户兴趣点进行预测:利用对用户兴趣点的评分对情境进行分类,记录用户情境转移情况,并根据用户的情境转移情况形成一个时间观察序列,进而使用Markov预测算法预测用户下一个时刻的用户的情境信息;
步骤D:融合用户情境的地理位置信息,计算用户兴趣点的相似度,根据用户兴趣点的相似度进一步选择最近邻居集,得到更加精确的推荐列表。
本发明的个性化推荐方法使用Slope One算法进行数据填充,解决稀疏性问题,将Markov预测法与协同过滤推荐相结合利用对用户兴趣点的评分对情境进行分类,记录用户情境转移情况,并根据用户的情境转移情况形成一个时间观察序列,进而使用Markov预测法预测用户下一个时刻的用户的情境信息,在实际生活中,情境的地理位置对用户兴趣点的转移有着重要的影响,因此在使用协同过滤推荐相关技术计算用户情境的相似度的过程中,也充分结合地理位置对相似度的影响,从而大幅度提高了向用户推荐情景的质量,由此可见本发明改进的推荐算法相对于传统的推荐算法有着很大的优势,有助于提高推荐的质量。
附图说明
图1是基于情境的Web服务推荐模型示意图;
图2是基于Markov预测的个性化推荐方法的流程图;
图3是数据解析主要步骤;
图4是文本格式数据示意图;
图5是本发明所采用的加权处理的Slope One算法示意图;
图6是用户兴趣点预测流程图;
图7是基于Markov的用户兴趣点的预测算法示意图。
具体实施方式
下面结合附图说明及具体实施方式对本发明进一步说明。
随着移动终端的普及和移动互联网的快速发展,用户的情境信息越来越容易被采集,对用户情境的研究正在逐步的应用到我们的实际生活当中。本发明通过分析用户情境信息并针对预测用户兴趣点的问题提出了一种基于马尔可夫预测的个性化推荐方法。
基于Markov预测的个性化推荐方法的基本思想是根据用户兴趣点的转移信息特征,预测用户下一时刻的兴趣点,从而向用户推荐与兴趣点相似的兴趣点。由于用户兴趣点的转移具有一定的特征规律,而且用户当前时刻的兴趣点与用户下一时刻的兴趣点有着重要的联系,即可以将用户的兴趣点转移的信息可以看作为一个时间序列,本发明使用Markov预测法来对用户的兴趣点进行预测。根据预测的兴趣点,计算用户兴趣点邻近兴趣点,最后将邻近的兴趣点推进给用户。该方法的具体流程如附图2所示。
数据预处理是指在使用数据进行实验之前,需要采用一系列方法将原始的数据集转换成实验要求的数据格式。本发明的数据预处理主要包括两个步骤:数据解析和数据填充。
数据解析的主要步骤如附图3所示。数据解析的第一步需要原始的网页数据转换成XML格式的数据,其中原始网页数据就是传统的HTML格式的数据形式,XML格式的数据是以树状结构进行存储的,从根节点开始,向下依次展开,具体格式如下:
<shop>
<shop_id>5210900</shop_id>
<comment>257条评论</comment>
<average_consume>27元</average_consume>
<taste>8.5</taste>
<environment>8.4</environment>
<service>8.4</service>
<telephone>0755-21515526</telephone>
</shop>
该步骤的具体的实现是使用开源的爬虫工具获取网页的信息的文本信息并以XML文件的形式保存在本地硬盘。XML格式数据转换成文本信息则需要根据数据特征以及研究内容,编写相应的代码进行解析。本发明使用Python脚本语言进行编码处理,得到具体的文本格式数据,如附图4所示。
通过解析之后得到文本格式数据,发现数据中许多变量的值为空,也就是常见的数据稀疏性问题,因此需要对数据进行填充处理,以提高推荐质量。在对数据进行填充处理之前,首先介绍一下数据稀疏性问题。
随着电子商务平台的不断壮大,其平台拥有的用户和商品数量也显著增加。对于用户来说不可能对所有的项目都有相关的评价信息,这就造成用户项目(User-Item)评分矩阵特别稀疏,见表1。
表3-1稀疏的User-Item评分矩阵
其中,表1中的数据就存在数据稀疏性问题,如果利用该矩阵计算最近邻近项目或者最近邻近用户集,得到的结果就会有较大的偏差,从而导致推荐的效果很差。例如,UserA和用户User B的兴趣相似,User B和User C的兴趣相似,然而用户User A和用户User C对相同的项目评价较少,按照传统的推荐算法得到的结果就是用户User A和User C的相关联的程度较低,从而导致推荐质量很低。
通常可以使用项目和用户之间实际的相关的数目与可能相关数目的比例来衡量矩阵的稀疏性。目前,解决数据稀疏性的问题的方法可以分为两类:(1)不改变稀疏的条件下,尽可能提高算法的精度;(2)利用可行的技术减小数据的稀疏问题,如基于奇异值分解技术等。
本发明解决数据稀疏问题的方法是使用改进的Slope One算法,通过对数据的填充减小数据集的稀疏性。其中Slope One算法是由Lemire D提出的,该算法是一种简单易用的协同过滤推荐算法,构建一元线性模型,f(x)=x+b简单的形式,获得最小化误差的平方和,具体计算公式为:
上式中wi是Useri对Itemw的评分;vi是Useri对Itemv的评分。
式(1)得到b的值相当于对项目i和项目j评分差值的平均分。得到b值之后,可以利用式(2)进行预测用户对项目j的评分。
wi=b+wj (2)
综上分析,可以预测见表2中User 3对Item 2的评分。根据式(1)和(2),得到User3对Item 2的评分w2=3。
表2用户User–项目Item评分矩阵1
由此可见,Slope One算法有着易于理解,简单的特点。然而该算法存在明显的缺点,没有考虑得到的项目评分差值的权重,从式(1)可以看出对评分差值权重的处理方法使用平均值,而在实际的应用系统中,这种做法得到的结果误差很大。可以使用Slope One算法预测表3中对User 2对Item 3的评分,其中,已知对Item1和Item 2都打过分的用户数目count1和对Item2和Item3都打过分的用户数目count2,其中count1=20,count2=300。计算得到的结果与实际结果偏差值为3,从而导致推荐结果较差。
表3用户User–项目Item评分矩阵2
为了解决这类问题,可以使用加权Slope One算法,根据用户的评分数量对得到的项目评分差值进行加权平均处理。首先计算出项目之间的平均差值,见式(3)。
式中ui是用户u对i的评分;I是对项目和项目j评分用户集;number(u)是集合的数目。
得到项目之间的平均偏差之后,根据评价项目的用户数目确定每个平均偏差的可信度。最终加权处理对平均偏差,就可以计算出用户u对项目j的预测评分。具体的计算方法见式(4)。
式中number(i,j)是集合的数目;ui是用户u对i的评分;I是对Itemi和Itemj评分用户集。
从本质上讲,式(2)与(4)预测项目评分的的本质区别就是使用了权重值。如果式(2)中用户X和用户Y之间的偏好是不同的,这种情况下使用用户Y对项目的评分值来预测用户X对项目的评分值,结果就会造成很大的误差,式(4)充分考虑了项目之间平均差值的可信度,得到的结果更加合理。
因此,本发明提出一种改进Slope One算法,即增加权重值,而不是使用平均值。具体的应用需要根据实验数据的实际情况,其中加权处理的Slope One算法的步骤如附图5所示。
Markov过程是指在事物的状态转移过程中,每一次事物状态的变化只和事物的前一个状态相关,与其他时刻的无关。其实也可以将这种过程成为状态转移的无后效性,所以该过程研究的状态也具有无后效性。通常使用符号表示:设{X(t),t∈T}对任意的n个不相同的t1,t2,…,tn∈T,且t1<t2<…<tn,P(X(tn)≤xn|X(tn-1)=xn-1,…,X(t1)=x1)=P(X(tn)≤xn|X(tn-1)=xn-1)。其中,Markov过程中所研究的时间是无限连续,任何两个相邻的时间的值可以被任意切分。
一般情况下,假设一个事物有N种状态,E(E1,E2,…,En)。无论在什么情况下,任何事物在某一时刻仅可以处于某一状态,但是下一时刻可以转向任意的状态,包括从自身的状态变化为自身的状态。通常使用式(5)来表示事物状态转移概率:
P(Ei→Ej)=P(Ej/Ei)=Pij (5)
使用式(6)表示事物的状态转移概率矩阵:
矩阵具有如下两个特征:
(1)0≤Pij≤1(i,j=1,2,…,N)
过去的状态对事物发展过程中当前状态转移到未来某一个时刻的状态的概率没有影响,将这个性质称为无后效性。事物以前的状态对事物未来状态转变的无后效,就是Markov Chain中的无后效性。根据它们自身的特点,可以发现两者有着非常紧密的关联,预测事物未来的发展,Markov只需要近段时间内或当前的动态就可以做到,而Markov预测法预测事物下一时刻的发展状态,就是利用Markov Chain实现的。
其中,在最后一步计算状态转移的过程中,根据贝叶斯(Bayes)条件概率公式可以得到式(7):
进而可以利用式(7)推导出依次计算事物状态概率的递推式(8):
式中P是事物的初始状态。
用户的兴趣偏好与用户当时的情境是密不可分的,我们可以通过发掘用户的情境信息,建立用户的兴趣模型,得到用户的兴趣偏好特征。因此本发明中使用用户的情境信息来表示用户的兴趣点,从而对用户兴趣点的预测转化为对用户情境的预测。用户的情境信息包括位置、时间等。
用户兴趣点的转移也具有一定的规律性。通过记录用户一段时间内的兴趣转移信息及用户情境状态的变化信息,转换成对应的时间序列,利用Markov预测算法对用户兴趣点进行预测。具体工作流程见附图6。
其中,预测用户兴趣点一共可以分为如下四步。
(1)采集实验数据
收集用户近段时间的用户兴趣点转移的信息:把用户某段时间内的活动可以看作一个时间序列,需要记录用户在特点的时间段所处的情境。
(2)处理实验数据
得到用户该段时间内用户兴趣点转移的矩阵信息。并统计用户在对应时间段的所在就餐情境的次数,计算出用户在某段时间区间内出现在某一个兴趣点出现的总数。
(3)计算用户状态转移概率
统计出每个状态出现的次数,以及统计各个状态之间转移的次数,再根据公式(5)计算用户状态转移概率,由此可以得到用户状态转移概率矩阵P。
(4)计算出状态概率
根据递推公式(8)可以计算出状态概率π。
预测一周的就餐情况需要计算出未来7天内的状态概率。当我们知道用户下一个时刻的兴趣点的信息,就可以根据预测的兴趣点的,向用户推荐相似的相似兴趣点,从而提供推荐结果的质量。
综上所述,基于Markov的用户兴趣点的预测算法的具体实现步骤见附图7。
通常用来计算用户相似度的方法有一下几种,欧式距离、余弦相似性、修正余弦相似度、皮尔森相关系数等等。
用户兴趣点的相似度与用户所处的情境信息有着紧密的联系,本发明通过改进余弦相似度,根据情境的具体属性融合到余弦相似度的计算公式中可以得到式(9)。
式中α,β为权重值,取值0到1;context为用户兴趣点的相关信息,包括:时间、位置、用户输入、用户需求、用户操作习惯、用户背景,其中,时间和位置应该是最重要的情境信息。
本发明使用改进的Slope One算法进行数据填充,解决稀疏性问题,将Markov预测法与协同过滤推荐相结合。首先,基于Markov预测的协同过滤推荐算法,利用对用户兴趣点的评分对情境进行分类,记录用户情境转移情况,并根据用户的情境转移情况形成一个时间观察序列,进而使用Markov预测法预测用户下一个时刻的用户的情境信息,在实际生活中,情境的地理位置对用户兴趣点的转移有着重要的影响,因此在使用协同过滤推荐相关技术计算用户情境的相似度的过程中,也充分结合地理位置对相似度的影响,从而大幅度提高了向用户推荐情景的质量,由此可见本发明改进的推荐算法相对于传统的推荐算法有着很大的优势,有助于提高推荐的质量。
本发明的主要贡献在于:
(1)利用情境信息来表示用户的兴趣点,并对情境的信息进行相关研究和分类。在推荐过程中为了解决数据稀疏性问题,根据Slope One算法的思想,提出一种对数据填充方法,最后设计对比实验,实验结果验证了该方法的合理性;
(2)使用Markov预测法对用户兴趣点的情境信息进行预测,以及在计算用户情境信息的综合评分过程中,研究了情境属性信息对综合评分的影响,通过设计对比实验,最后验证了情境属性信息对用户情境信息评分的影响程度;
(3)提出了一种融合用户情境的地理位置信息,计算用户兴趣点的相似度的方法。根据用户兴趣点的相似度进一步选择最近邻居集,得到更加精确的推荐列表。实验结果显示改进后算法得到的平均绝对误差和预测准确度比传统方法更加准确。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。