发明内容
有鉴于此,本发明的目的是提供一种基于马尔科夫链的图书推荐方法,能根据用户的动态行为,向用户进行图书的个性化推荐。
为了达到上述目的,本发明提供了一种基于马尔科夫链的图书推荐方法,所述方法包括有:
步骤一、查询用户的阅读历史数据,并基于朴素贝叶斯算法,计算用户的初始状态概率向量:P=(P(C0|X),P(C1|X)),其中,C0、C1分别是用户对图书的喜欢、不喜欢状态,X是用户当前阅读图书的标签向量,P(C0|X)、P(C1|X)分别是用户对图书的喜欢、不喜欢状态概率;
步骤二、查询用户的当前阅读图书和所有未阅读图书,并根据所有用户对该用户的当前阅读图书和未阅读图书的喜欢和不喜欢状态,分别计算该用户当前阅读图书到每个未阅读图书的转移概率矩阵;
步骤三、根据用户的初始状态概率向量、和用户当前阅读图书到未阅读图书的转移概率矩阵,分别计算用户从当前阅读图书转移到每个未阅读图书的状态概率向量,所述状态概率向量包括有用户对未阅读图书的喜欢状态概率,并据此向用户推荐未阅读图书,
所述步骤一中,P(Cj|X)的计算公式如下,j=0表示喜欢,j=1表示不喜欢:其中,P(X|Cj)是用户喜欢或不喜欢图书的情况下对应图书标签的概率,P(Cj)是用户喜欢或不喜欢一本图书的先验概率,P(X)是一个根据图书自身属性信息而定义的常量。
与现有技术相比,本发明的有益效果是:本发明能够综合运用用户的动态历史数据,及时获取用户最近的阅读喜好,并向用户提供个性化图书推荐;本发明基于马尔科夫链,对历史数据要求不多,可以被普遍应用,具有较高的实用性;采用图书的标签代替图书来计算用户对图书的喜欢概率,数据的稀疏性明显下降,从而提高了运算的效率和准确度。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图和实施例对本发明作进一步的详细描述。
本发明基于马尔科夫链预测模型,首先利用个体用户的阅读历史数据,分别对每个用户建立对应的朴素贝叶斯预测模型,计算得到用户对图书属于喜欢或不喜欢状态的概率,即得到马尔科夫链的初始状态概率向量;再结合所有用户的阅读历史数据,利用所有用户阅读图书的喜好状态,计算得到图书喜好状态之间的转移概率矩阵,形成马尔科夫链中的转移概率矩阵;最后综合以上两部分信息,构成一个完整的马尔科夫链预测模型,计算得到基于马尔科夫链的个性化图书推荐列表,使得用户的图书推荐结果更加准确。如图1所示,本发明一种基于马尔科夫链的图书推荐方法包括有:
步骤一、查询用户的阅读历史数据,并基于朴素贝叶斯算法,计算用户的初始状态概率向量:P=(P(C0|X),P(C1|X)),其中,C0、C1分别是用户对图书的喜欢、不喜欢状态,X是用户当前阅读图书的标签向量,P(C0|X)、P(C1|X)分别是用户对图书的喜欢、不喜欢状态概率;
步骤二、查询用户的当前阅读图书和所有未阅读图书,并根据所有用户对该用户的当前阅读图书和未阅读图书的喜欢和不喜欢状态,分别计算该用户当前阅读图书到每个未阅读图书的转移概率矩阵;
步骤三、根据用户的初始状态概率向量、和用户当前阅读图书到未阅读图书的转移概率矩阵,分别计算用户从当前阅读图书转移到每个未阅读图书的状态概率向量,所述状态概率向量包括有用户对未阅读图书的喜欢状态概率,并据此向用户推荐未阅读图书。
所述步骤一中,用户对图书的状态包括两类:喜欢和不喜欢。图书的内容可以利用图书的标签很好的表示出来,每本图书所包含的标签是由图书编辑根据图书内容、从标签库中选取若干个能代表图书内容特征的关键词。因此,可以选用用户的阅读历史数据中阅读过的所有图书的标签为预测因子,将用户对图书的喜欢/或不喜欢状态作为分类预测的类别,并利用朴素贝叶斯算法计算得到用户的初始状态概率向量。上述P(Cj|X)(即P(C0|X)、P(C1|X),j=0或1)的计算公式如下:其中,P(X|Cj)是用户喜欢(j=0)或不喜欢(j=1)图书的情况下对应图书标签的概率,P(Cj)是用户喜欢(j=0)或不喜欢(j=1)一本图书的先验概率,P(X)是一个根据图书自身属性信息而定义的常量,其值并不影响最后的计算结果。
如果直接计算用户对所阅读图书的喜欢概率,数据会非常稀疏,导致运算的效率低下和准确度下降,而采用图书的标签代替图书来计算用户对图书的喜欢概率,数据的稀疏性会明显下降。所述P(X|Cj)的计算公式是:其中,n是用户的当前阅读图书包含的标签总数,xk是用户的当前阅读图书所包含的标签k,P(xk|Cj)是用户喜欢(j=0)或不喜欢(j=1)标签k的概率,其值为:Tj是用户阅读过,并且喜欢(j=0)或不喜欢(j=1)的所有图书包含的标签总数,是用户阅读过,并且喜欢(j=0)或不喜欢(j=1)的所有图书包含的标签k的总数。
所述P(Cj)的计算公式是:其中,Sj是用户喜欢(j=0)或不喜欢(j=1)的图书总数,S是用户阅读过的图书总数。
由于所以在实际的计算中,不必计算P(X),只要根据用户的阅读历史数据来计算P(C0|X)和P(C1|X)的比例,并根据即可计算出P(C0|X)和P(C1|X)的具体数值。
图2是图书的喜欢或不喜欢状态迁移过程示意图,可以看出,用户的当前阅读图书u到未阅读图书v的转移概率矩阵Quv是一个2×2的矩阵, 其中,q00是从喜欢图书u到喜欢图书v的状态转移概率,q01是从喜欢图书u到不喜欢图书v的状态转移概率,q10是从不喜欢图书u到喜欢图书v的状态转移概率,q11是从不喜欢图书u到不喜欢图书v的状态转移概率。上述qit的计算公式如下:其中,U是连续读过图书u和v的用户总数,i/或t的取值可以是0或1,分别表示对图书u/或v的喜欢或不喜欢状态,即当i=0时,表示对图书u是喜欢状态,当i=1时,表示对图书u是不喜欢状态,当t=0时,表示对图书v是喜欢状态,当t=1时,表示对图书v是不喜欢状态,Uit是在连续读过图书u和v的用户中,由对图书u的状态i直接转移到对图书v的状态t的用户总数。由于经过多次转移的转移概率有所衰减,为了简化实际计算,我们不考虑非连续阅读图书u和v这种情况导致的转移变化,而仅考虑直接转移的情况,即连续阅读图书u和v。
所述步骤三中,用户从当前阅读图书u转移到未阅读图书v的状态概率向量Puv的计算公式如下:Puv=P×Quv,其中,Puv=(Puv(C0|X),Puv(C1|X)),Puv(C0|X)是用户对未阅读图书v的喜欢状态概率,Puv(C1|X)是用户对未阅读图书v的不喜欢状态概率。按照用户对未阅读图书的喜欢状态概率值的大小,对所有未阅读图书进行排序,并从中挑选出喜欢状态概率值最大的若干本图书向用户推荐。
为了阐述的更清楚,下面举例对本发明作进一步详细解释:
1、假设用户集合为:{u0,u1,u2,u3,u4,u5,u6,u7};图书集合为:{b0,b1,b2,b3,b4};标签集合为:{x0,x1,x2,x3};时间序列集合为:{t0,t1,t2},其中t2是当前时刻;用户对图书的喜欢状态集合为:{c0,c1},其中c0表示喜欢状态,c1表示不喜欢状态。表1为所有用户阅读历史数据的时间序列数据,即在不同时刻所阅读的不同图书;表2为图书和标签的对应关系,其中1表示图书包含该标签,0表示图书不包含该标签。
表1用户阅读历史数据的时间序列数据
|
t0 |
t1 |
t2 |
u0 |
b0 |
b1 |
b2 |
u1 |
b2 |
b4 |
b0 |
u2 |
b0 |
b1 |
b4 |
u3 |
b0 |
b2 |
b1 |
u4 |
b3 |
b2 |
b1 |
u5 |
b2 |
b0 |
b1 |
u6 |
b0 |
b1 |
b3 |
u7 |
b2 |
b0 |
b1 |
表2图书与标签对应关系
|
x0 |
x1 |
x2 |
x3 |
b0 |
1 |
1 |
0 |
0 |
b1 |
1 |
0 |
1 |
1 |
b2 |
1 |
0 |
0 |
1 |
b3 |
0 |
1 |
1 |
0 |
b4 |
1 |
1 |
1 |
0 |
2、计算用户的初始状态概率向量
通过表1和表2可以看出,用户u1阅读的图书集合为:{b2,b4,b0},假设其对b2、b4、b0的状态分别为:c0、c1、c0,用户u1在当前时刻(t2)的当前阅读图书是b0,b0包含有2个标签:x0、x1,则用户u1阅读过、并且喜欢的所有图书包含的标签总数T0为4,用户u1阅读过、并且喜欢的所有图书包含的标签x0的总数是2,用户u1阅读过、并且喜欢的所有图书包含的标签x1的总数是1,因此: 同理,
用户u1喜欢的图书总数S0=2,用户u1不喜欢的图书总数S1=1,用户u1阅读过的图书总数S=3,因此,
用户u1对图书的喜欢状态概率 用户u1对图书的喜欢状态概率 由于 所以 即用户u1的初始状态概率向量:
3、计算用户的当前阅读图书到每个未阅读图书的转移概率矩阵
用户u1在当前时刻t2的当前阅读图书是b0,未阅读图书是:b1、b3。
同时读过图书b0和b1的用户集合是:{u0,u2,u3,u5,u6,u7},其中由于u3不是连续读过图书b0和b1,因此连续读过图书b0和b1的用户集合为{u0,u2,u5,u6,u7}。假设用户u0同时喜欢图书b0和b1;u2同时不喜欢图书b0和b1;u5喜欢图书b0,不喜欢b1;u6不喜欢图书b0,喜欢b1;u7同时喜欢图书b0和b1。则q00=2/5,q01=1/5,q10=1/5,q11=1/5。即用户u1的当前阅读图书b0到未阅读图书b1的转移概率矩阵 同理,还可以计算得到用户u1的当前阅读图书b0到未阅读图书b3的转移概率矩阵Q03。
4、计算用户从当前阅读图书转移到每个未阅读图书的状态概率向量
用户u1从当前阅读图书b0转移到未阅读图书b1的状态概率向量 其中,用户u1对未阅读图书b1的喜欢状态概率同理,还可以计算出用户u1对未阅读图书b3的喜欢状态概率P03(C0|X),对P01(C0|X)、P03(C0|X)进行比较排序,从而将喜欢状态概率最大的图书向用户推荐。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。