随着互联网信息技术的不断发展,使得我们处于一个信息大爆炸的时代。电子商务的不断深入发展,用户的消费活动一方面在内容和形式上日趋多样化,这就使得偏好具有时变性,进而使得用户偏好很难被及时准确地把握。此外,随着电子商务中新产品的不断更新换代,没有被购买或者没有被浏览过的新商品有很多,这就使得传统的推荐方法在推荐的时候所依赖的信息变少,进而难以对这些新商品做出更好的推荐。因此,充分利用现有信息分析出更深层次的用户偏好,就成为适应电子商务新发展,为用户提供高质量推荐服务的关键。有鉴于此,本文就基于贝叶斯网络的用户兴趣个性化推荐进行研究分析。
贝叶斯网络是一种基于概率推理的数学模型,同时也被人们称之为信念网络、概率网络或者因果网络。所谓的概率推理,就是通过一些变量的信息来获得其它变量的概率信息的过程。
假定有随机变量集合,表示的取值。表达式表示一个联合概率,即变量的值分别是时的概率。从理论上来讲,给定一个随机变量集合的完全联合概率函数,就能计算所有的边缘概率和更低阶的联合概率。但是当有一个很大的随机变量集合时,指定所有的联合概率或更低阶联合概率的任务就难于处理了(NP难题)。幸运的是,在大多数应用中,联合概率都满足一定的条件,这些条件可以简化运算量,使得对它们的指定和计算变得可行。
可以按照一个条件概率链表达一个联合概率,其一般形式为。通常将其称为链规则,贝叶斯网络采用图形化的网络结构直观地表达变量的联合概率分布及其条件独立性,这对概率推理是非常有用的,因为用贝叶斯网络表示的条件独立性能大量地节约概率推理计算。
一个贝叶斯网络是一个有向无环图(即DAG),由代表变量节点及连接这些节点的有向边构成。用符号B(G,P)表示一个贝叶斯网络,B(G,P)由两部分构成:
(l)一个具有N个节点的有向无环图,图中的节点代表随机变量,节点间的有向边代表示节点间的相互关联关系。节点变量可以是任何问题的抽象用以代表属性、状态、客体、命题或其它的实体,如测试值、观测现象等。
节点之间的有向边(弧)反映了变量间的依赖关系,指向节点X的所有节点称为X的父节点。尽管从节点X指向节点Y的弧频繁地被用来表示X引起了Y,但在贝叶斯网络里这不是对弧的唯一解释。例如,Y可能只与X有关联,但是它不是由X引起的。因此,虽然贝叶斯网络可以表示因果关系,但它们并不局限于表示因果关系。除了被称为贝叶斯网络外,它还有另一些术语通常认为有向边表达了一种因果关系,所以贝叶斯网络有时叫做因果网。重要的是,有向图蕴涵了条件独立性假设,贝叶斯网络规定图中的任一节点条件独立于由的父节点给定的非后代节点构成的任何节点子集,即如果用A()表示非后代节点构成的任何节点子集,用表示变量的父节点集,(或)表示的配置情况,表示某一具体的配置。对每一个将有一个子集使得与在给定的前提下是条件独立的。那么,对任意的X将有。
因此,有这里变量集对应着贝叶斯网络的父节点。
(2)一个与每个节点相关的条件概率表(CPT)可以用来描述,它表达了节点同其父节点的相关关系——条件概率。没有任何父节点的节点概率为其先验概率。因为有了节点及其相互关系、条件概率表,所以贝叶斯网络可以表达网络中所有节点(变量)的联合概率分布。
推理是通过计算回答查询的过程,贝叶斯网络推理是应用BN进行问题求解的过程。在贝叶斯网络中,概率论和图论实际上是不可分隔的整体,所以,具体说来,贝叶斯网络的推理就是利用贝叶斯网络的图论结构和知识进行概率推理,在推理中处理的是概率,依据的是网络结构和条件概率表。
三种推理模式的直观表达如下图2-1所示。
图2-1 贝叶斯网络推理模式
虽然贝叶斯网络是被用作一种处理专家系统中,不确定性的推理工具而被提出的,但是近几年来,它越来越多地被用在了数据分析中,以提示和刻画数据中所蕴含的规律。由此我们可看出,贝叶斯网络不是一个静态的结构,而是一个不断更新变化的结构,同时这也是贝叶斯网络学习功能的体现。贝叶斯网络学习指的是通过分析数据而获得贝叶斯网络的过程,即是要寻找一种网络,能按某种测度最好地与实例数据集拟合。就一般意义而言,寻找一种网络包括寻找一种有向无环图(DAG)结构和获得与DAG中每个节点相关的条件概率表(CPT)。前者称为网络结构学习,后者称为网络参数学习。由于通过网络结构与数据集可以确定参数,因此结构学习是学习贝叶斯网络的核心,有效的结构学习方法和算法是构建最优网络结构的基础。
所谓的参数学习,就是指已经知道的网络结构,确定网络参数的问题,即假设已知变量间的定性关系,通过数据分析提示或修正变量间的定量关系的过程。参数学习有两种基本方法:最大似然估计和贝叶斯估计,其中最常用的是EM算法。结构学习是指同时提示变量间的定性和定量关系的问题,既要确定网络结构,又要确定网络参数。
总的来说,贝叶斯网络结构的发现途径主要有以下两种:一种是基于打分-搜索的学习方法,打分-搜索方法过程简单规范,通过启发搜索的方法建造网络模型并用得分来评价它。首先要定义一个评分函数,该评分描述了每个可能结构对观察到的数据的拟合度,评分方法有许多,如贝叶斯评分、基于墒的评分以及最小描述长度(MDL)的评分,其次现有的学习方法大多采用标准的启发式技术,如贪婪爬山法和模拟退火法。学习的目的就是发现评分最大的结构,这个过程将持续进行到找不到得分更高的结构为止。它涉及到模型选择和模型优化两方面的内容,模型选择要回答用什么样的准则来评判不同模型结构之优劣,而模型优化则是要把最优模型结构找出来。另一种是基于依赖分析的学习方法,它通过使用条件独立性检验来估计数据间条件独立的性质,然后建立网络来展现所观察的依赖和独立关系,找到网络的依赖结构。依赖分析方法可追溯到Chow-Liu Tree Constructing Algorithm,而最为有效的方法是Cheng Jie在其它依赖分析方法的基础上建立的提供节点顺序和不提供节点顺序时的两种贝叶斯网络结构学习方法。依赖分析方法过程比较复杂,一般用于稀疏网络,但在一些假设下学习效率较高,而且能够获得全局最优结构。
关于用户模型的定义有很多,比如:Jaineson认为用户模型是对一个特定用户各方面属性的明确描述。Elaine[2]认为用户模型是对与用户相关的各种各样知识的描述。本文认为,用户兴趣模型是对与决定用户兴趣相关的特征的可计算性描述。
对用户兴趣建模就是将用户不可计算的、模糊的兴趣爱好特征用一定的形式加以表示,以方便用户兴趣特征的数量化。对用户兴趣模型的表示方法直接关系到用户建模技术和模型更新算法的选择。从现有研究中归纳出对用户兴趣模型的表示方法有:基于评分的表示法、基于内容的表示法、基于知识的表示法等。
(1)基于评分的表示法
基于评分的表示法是指通过一定方法获取用户对推荐项目的兴趣程度,从而记录用户感兴趣的项目以描述用户的兴趣特征。
对用户兴趣程度的评分信息的获取主要是通过用户的反馈信息,包括显性反馈信息及隐性反馈信息。显性反馈信息主要是指将某项目推荐给用户之后,用户给出的感兴趣或不感兴趣的态度、或对项目的评分信息等可直接获取的信息;隐性反馈信息是指将某项目推荐给用户之后,关于用户是否接受推荐、用户对推荐项目的使用行为记录等反馈信息,这种信息需要通过web挖掘、Agent等技术对用户历史行为记录、用户交互行为记录进行分析和处理,已获取用户的兴趣信息,从而构建用户兴趣模型。显性获取评分信息的方法直接、明确、可靠性高,但需要用户的过多参与;隐性获取评分信息的方法则不会干扰用户的正常访问,但容易引入噪声信息,构建的模型可靠性不高。
(2)基于内容的表示法
基于内容的表示法是指将用户的兴趣内容用一定方法加以记录,从而对用户兴趣特征加以描述。基于内容的表示法又分为:关键词表示法、加权关键词表示法、主题表示法、信息粒度表示法等。
关键词表示法是将用户的兴趣内容分成一组关键词,通过关键词列表构成的向量加以描述。如用户兴趣内容关键词有:K1、K2、…、Kn,于是将用户兴趣模型表示为:(K1,K2,…,Kn)。加权关键词表示法是在关键词表示法的基础上加入对兴趣关键词权重的表示,从而可以描述用户对每个兴趣内容的兴趣程度。如用户兴趣内容关键词有:K1、K2、…、Kn,权重分别为W1、W2、…、Wn,于是将用户兴趣模型表示为:((K1,W1),(K2,W2),…,(Kn, Wn))。加权关键词表示法通过对关键词权重设置阀值从而控制关键词的个数,个性化服务系统如Anatagonomy、Personal Web Watcher、ELFI、Letizia、SELECT、Syskill&Webert 等采用的便是这种用户模型表示方法。主题表示法是指通过记录用户感兴趣的特定主题及领域来描述用户兴趣内容。
(3)基于本体论的表示法
基于本体论的表示法将用户兴趣描述为用户兴趣概念词及各概念词之间的关系所组成的概念网络,其中相关关系包括相等关系、包含关系等,关系的紧密程度用概念相关度来度量。基于本体论的表示法通过本体概念的引入有效克服了基于关键词、主题词等表示方法结构松散的弊端,使得对用户兴趣描述的维度从平面上升到立体,建立了不同兴趣概念之间的相关关系,模型具有一定的推理能力,使得系统对用户需要的理解更加智能化。
(1)按用户兴趣模型中兴趣信息的获取方式,可以将用户建模方法分为:
①显式建模。显式建模是指系统显性地要求用户在注册或进行信息维护时提供其兴趣特征从而获取用户特征信息以建立用户兴趣模型的方式。这种方式对于用户兴趣信息的获取具有直接、明确、透明的特点,获取的信息可靠性高,但是这种要求用户过多参与的行为奔引起用户的反感,导致用户体验的降低,进而造成用户的流失。且由于用户的兴趣可能随着时间而迁移,因此需要经常性的向用户进行询问请求,用户兴趣模型的灵活性低。
②隐式建模。隐式建模是指系统通过获取用户的访问行为记录,并使用一定的技术对其进行分析从而挖掘用户的兴趣特征信息,以建立用户兴趣模型的方法。隐式建模的方法能够避免过多要求用户参与导致用户体验降低的缺陷,但是由于透明度低,所获取并记录的用户兴趣特征无法得到用户的直接认同,从而有可能导致用户兴趣模型质量不高,精确度低。
(2)按用户兴趣模型的更新方式,可以将用户建模方法分为:
①静态用户建模。静态用户建模是指所建立的模型中对用户兴趣特征的描述维度为固定不变的方式。一般通过分析典型用户的需求及兴趣特征,将这类用户需求和兴趣特征植入系统中,并构建某种用户模板来描述系统运行期间每个用户的兴趣特征。这种建模方式通常需要定期对用户模型进行更新,生成静态的用户特征模型,以适应用户兴趣的变化及更新。
②动态用户建模。动态用户建模是指系统在运行期间通过一定的更新机制和更新算法不断响应用户兴趣的变化,以建立实时用户兴趣模型的建模方式。一旦有信息用户兴趣内容加入到系统中来,则实时响应内容的变化。这种建模方式使得系统对用户兴趣的描述更加精准、及时。
研究人员发现用户在浏览网页并进行相关业务操作后,会留下用户在网络上的历史行为信息,比如用户个人信息、浏览页面路径、对网页信息的评分、检索记录和购买行为记录等。个性化推荐通过分析用户的这些历史行为信息,推断出用户的兴趣特点,并主动从网络中筛选其可能关注的信息进行推送。从上述分析中可以了解到,个性化推荐的主要流程可以分为三大模块:用户兴趣偏好分析、推荐对象特征分析、计算并产生推荐。通用的个性化推荐模型流程图如图2-2所示。
图2-2 个性化推荐模型流程图
其中用户兴趣偏好分析部分通过采集并分析用户的标签属性、评分历史记录和浏览历史记录等,建立用户兴趣模型,描述用户的兴趣和偏好;推荐对象特征分析部分对推荐对象的属性信息进行建模,构建对象特征模型;推荐算法模块主要是对用户兴趣和偏好以及待推荐对象属性进行分析处理,利用推荐算法对用户兴趣和待推荐对象属性进行匹配,寻找合适的对象推荐给用户。
推荐系统的主要算法分两类,一个是基于内容的推荐算法,另外一个是协同过滤的推荐算法。
(1)基于内容的推荐算法
基于内容的推荐算法通过分析用户属性文件和待推荐对象的特征描述,选择与用户属性类似程度最高的对象进行推荐。计算用户与推荐对象之间相似性的方法有余弦距离计算法等,如公式2-1所示。
(2-1)
其中用户属性i和待推荐对象属性j在m维矩阵中分别表示为向量i,j。
由上述分析可知,该方法的优势包括:a)原理简单,结果直观,不要求对领域知识的了解;b)不使用历史数据,利于隐私保护;C)只需要用户属性及对象属性文件,新用户和冷门对象的推荐效果较好;d)特征提取和分类方法相对成熟,能够为该方法提供支持。但这种方法过于依赖用户属性和对象属性,因此也存在许多缺陷,比如:a)视频和音频资源的特征提取能力尚不成熟,难以提取复杂对象的质量特征;b)由于用户属性和对象属性很少变动,导致系统多次推荐的结果相似,用户很难持续产生兴趣。推荐对象和用户属性较为固定,导致多次推荐的结果类似;C)推荐对象属性可能被人为操纵以进行推荐攻击;d)不同语言描述的模型之间难以兼容。
(2)协同过滤的推荐算法
协同过滤的推荐算法原理是向用户推荐与其兴趣相似用户所喜欢的项目。它的基本假设是过去与用户兴趣相似的用户,将来兴趣还是保持相似。协同过滤算法主要有两种:基于用户的协同过滤和基于项目的协同过滤。本文主要釆用基于用户的协同过滤方法,实现的方法分三步:第一步是找出与用户相似的邻居;第二步是根据相似邻居对项目的评分加权预测出用户对未评分项目的评分;第三步,为TopN推荐阶段,它将第二步产生的评分降序排列,选出前N个项目依次推荐给用户。
度量用户间相似度的方法有余弦相似度,调整余弦相似度和皮尔逊相似度。余弦相似性是基于向量的夹角,基于向量的用户相似性公式为公式(2-2):
(2-2)
其中,和分别表示用户和的评分矩阵。但公式(2-2)中没有考虑到不同用户的不同的评分偏好的问题,改进的方法为调整的余弦相似性算法:
(2-3)
其中,表示用户u对所有项目的平均评级。考虑了不同用户的评级偏好问题。还有一种常用的皮尔逊相似度如公式(2-4)所示,需要注意的是,此处的指的是用户u所有评级的均值,不仅限于与用户v的重叠项目。
(2-4)
在计算出用户的相似用户之后,根据公式(2-5)计算出用户u对项目i的预测评分。其中是指用户u与用户j之间的相似度。
(2-5)
我们都知道,在推荐系统中应用比较广泛的是协同过滤方法,也就是发现相似性的方法,无论是发现相似的用户,还是发现相似的商品。这种系统是根据用户的信息或行为来发现与其购买习性或喜好相似的其他用户,然后将发掘出的相似用户的信息(如购买行为)来提供给被服务用户,或者是根据用户的选择信息,发现用户偏好的商品类型,然后将与用户偏好同类的商品推荐给用户。
在本论文中,我们以商业礼品网站为例,建立基于贝叶斯网络的个性化推荐应用,主要分为三个步骤:一是根据训练数据集(用户群的购买行为)建立起购买网络模型;二是将被推荐用户的信息作为网络模型的输入,通过贝叶斯网络的推理算法,找出出现概率高于一定阀值的商品;最后根据用户提前设置的偏好或挖掘出的用户偏好,将推荐商品加权排序,推荐给用户。推荐体系整体框架如下图3-1所示:
图3-1 推荐体系整体框架
基于贝叶斯网的推荐模型,是对用户群购买行为的编码,贝叶斯网本身的特性决定了其在解决不确定性问题的优势。因此,以此模型为用户推荐,就可能为用户推荐出各种具有潜在关联性的商品。
我们选取一组用户群的购买记录(如购买数量高于一定值)作为训练数据,来训练贝叶斯网。其中购买记录中出现的所有商品是贝叶斯网络的节点V,节点V的取值只有两种:0和1,分别对应用户购买和不购买此商品。一个用户的购买记录可以表示为,其中表示用户i购买的第k件商品。
用户历史购物网络结构的建立,主要依据Cheng提出的TPDA算法,参数学习采用m-估计算法。条件独立性测试采用信息论中的互信公式,如果两点之间的测试值高于一定阀值,那么我们可以认为其是互信的,也就是具有相关性的。
两点之间互信(独立相关性)公式:
(3-1)
两点之间在给定证据集C的情形下条件互信(条件独立性)公式:
(3-2)
我们用D表示训练数据集,表示信息互信度的阀值,G=(V,E)表示网络结构。具体学习过程如下所示:
1)初始化网络结构(Drafting)
初始化,令V={attributes in D},E={},L={
将L按降序排列,然后对于L中的每对节点
如果X和Y之间不存在邻接路径(两者之间没有路径相连),那么将弧
2)网络的扩展(Thickening)
对于对L中剩余的每个节点对
如果结果是否定的,那么就说明当前网络结构是有错误的,两点之间有信息流通,应还有连接,将
如果结果是肯定的,那么就说明网络结构是正确的,两点之间的连接已经全部包含在内,不需要再添加边。
这里我们定义给定网络结构(V, E),通过寻找切割阻断集来确定两点间边的存在性的方法为:。
方法的流程为:
Ngbr(X)表示X的相邻节点,AdjPath(X,Y)表示X与Y之间的连接路径。
第一步,令,表示X相邻节点中位于X与Y连接路径上的节点;同理,我们可以计算。
第二步,移除SX中所有已知是X的子节点的节点,同样处理SY。
3)冗余边的去除(Thinning)
对于每对存在环路的节点,也就是两节点除了直接连接的边外,还有其它路径相连,那么:
首先,假设移除两节点间直接相连的边,得到E'=E-
然后,对这两个去除直接连接边的节点进行是否应有边存在的测试,:
如果返回结果是否定的,也就是不存在这个边时,但是网络结构仍然可以正确通信,那么去除连接边,令E=E';
如果返回肯定结果,那么证明这个节点应该存在,恢复节点的相连。
4)连接边方向的确定(Orienting)
根据前面Cutset记录集记录的信息进行方向确定。
第一,对任何三个节点X,Y和Z,有X和Y,Y和Z直接连接在一起,而X和Z没有直接相连:
如果,并且YC或者,则令X和Z作为Y的父节点,即X→Y←Z。
第二,对任何节点集V中的三个节点X, Y, Z
如果有X是Y的父节点;Y和Z相连,X和Z不相连,并且边
第三,对于剩余没有定向的边
由用户购买记录数据训练而成的贝叶斯网络,不包含隐藏变量,且变量的概率分布是离散的,因而网络的参数(条件概率分布表)可以较容易的推算得出。
对于节点Vi的每个取值的条件概率,应用公式:
计算,其中i表示变量的取值,表示网络中的父节点集合取值组合分类为第j种,由于我们构建的网络中节点变量的取值只有0和1两种可能,分别对应购买和不购买该商品的行为。因此,i的取值为0或1,j的取值数为2,为节点的父节点数。的含义即是节点在父节点组合取值为第j种时,节点取值为i的概率。
我们以近似代替,的取值,通过遍历用户购买记录可以求出。即应用m-估计公式:
(3-3)
其中,N函数表示,括号内事务出现的次数。
通过遍历用户购买事务表,可以计算每个的取值,从而完成用户购物的贝叶斯网络模型的参数学习任务。
基于贝叶斯网的推理过程,就是为用户选择推荐商品的过程,推理的目标是在给定用户购买序的情形下,推算出接下来最可能的购买结果。由于对大规模的贝叶斯网络进行推理,需要相当的计算量(任意网络推理是NP难的),为了减少计算难度,我们采用近似推理的随机抽样算法。随机抽样算法会通过随机抽样实例化某些节点的取值,然后用这些取值结果进行网络推理。
采用EM迭代,算法描述如下:
Inference(BN,E)
BN代表贝叶斯网络,对应全体用户购买模型;E为给定节点集,对应用户已经购买商品。算法目标是输出一个推荐商品集合R,其中商品在给定E下有较大出现概率。
Begin:
初试化,令表示迭代次数变量m=0,未出现在证据集中商品节点随机取值。
do{
1.对每个没有出现在证据集的商品,计算:
(3-4)
2.随机采样确定变量的值
(3-5)
3.估算在给定证据节点下非证据节点的条件概率
(3-6)
4.根据两次估计误差判断是否满足精度要求
(3-7)
如果满足精度要求,那么证明样本取值估计收敛稳定,跳出采样循环,否则,令m=m+l,继续从步骤1开始循环迭代。
}
返回,满足的商品的集合R。
Netica 是一种强力,简单易用的构造贝叶斯网络并学习参数的工具。我们可以选择以它为工具,构造贝叶斯网络模型。
为验证试验结果,我们模拟生成了100个客户的购物事务,每个客户包含商品项为15个,得到1500个购买项,涉及约50件商品。将这些数据分为两部分,90%用来训练网络,剩余10%用来测试,将用来测试的每个客户的购买记录分为两个部分,一部分为证据节点集作为网络的输入,另一部实际购买节点集作为衡量推荐结果的集合,。集合R表示在购买证据节点集作为输入时,网络的输出集合。使用:
(3-8)
来进行推荐效果度量,其中:
(3-9)
表示正确推荐数目与实际购买数目的比值。
(3-10)
表示正确推荐数目与网络总共推荐数目的比值。
推荐效果明显,F1取值最好可达到0.55,平均取值约为0.40。验证的算法的有效性。
下表为10个客户购买集测试的F1推荐取值。
表3-1 推荐效果测试值
测试集 | U1 | U2 | U3 | U4 | U5 | U6 | U7 | U8 | U9 | U10 |
F1 | .40 | .52 | .38 | .55 | .30 | .36 | .25 | .46 | .44 | .51 |
综上所述,本文主要围绕基于贝叶斯网络的用户兴趣个性化推荐进行了研究分析。文章首先对贝叶斯网络、用户兴趣模型以及个性化推荐技术进行了详细的论述分析,然后在此基础上提出了一种应用于个性化推荐的贝叶斯网络商品模型,并通过实验数据进行测试,证明了算法的可使用性。此外,虽然应用研究取得了 阶段性的效果,但本文所采用的算法在对商品分类和推荐的过程中,具体参数选择还有待优化,还需要寻找更多的学习样例,并多次进行测试总结,在这几个面,本文还需要做进一步的努力。