本发明涉及信息服务技术领域,具体地,涉及一种基于可信度模型的节点推荐方法及系统。
背景技术:
随着互联网技术的发展,各种服务端中需要对网络节点进行可信度计算,并向用户提供节点的可信度等级,然而现有的技术方案中的可信度等级结果并不可靠,往往容易被网络节点的交互历史数据所干扰。
经过检索,发现如下2项中国已授权的发明专利:
现有技术1:专利号为zl201210201114.3--基于信用等级与违约损失率匹配的信用评级系统与方法;
现有技术2:专利号为zl201210279363.4--一种基于用户诚实度的动态的web服务信任评估方法;
现有技术1提出的系统由数据分析模块、系统维护模块、数据查询模块和报告制作模块构成,报告制作模块具有保存信用评级结果、打印及预览功能。满足“信用等级越高、违约损失率越低”的信用本质属性,使商业银行等债权人在清楚不同信用等级对应的违约率的情况下,可以避免对盈亏平衡点以下等级的客户进行贷款,减少贷款损失。本方法的信用评级调整结果,不但像现有研究和实践那样给出了客户清偿能力的信用等级排序,而且给出了每一个信用等级的违约率和违约损失,比现有的银行信用评级系统揭示了更多、公众更需要了解的信息。
现有技术2提出的方法首先根据用户对服务的要求,自动挖掘用户偏好;根据用户偏好划分相似用户群,在偏好相似用户群中进行评价一致性聚类,区分诚实用户与恶意用户,计算偏好相似用户群的用户诚实度,根据用户诚实度的变化,动态调整主观评价在综合信任计算中的权重,从而降低恶意评价对web服务信任评估的影响,提高信任评估的准确性,更好地指导用户进行可信服务的选择。
本发明所要解决的问题与现有技术1和现有技术2近似,属于相同的技术领域,但是现有技术的方法不能够被运用至其他网络节点,其中的主要原因是,不能够建立精确的算法来处理存在交互的操作行为;且没有引入误差限值,从而使得可信度等级的结果不可靠。
本发明提供的基于可信度模型的节点推荐方法及系统能够有效地解决上述的问题。
技术实现要素:
针对现有技术中的缺陷,本发明的目的是提供一种基于可信度模型的节点推荐方法及系统。
根据本发明提供的基于可信度模型的节点推荐方法,包括如下步骤:
步骤a1:统计第一类节点与第二类节点的数量,并将第一类节点与第二类节点之间的交互历史分别存储至对应的二维矩阵中;
步骤a2:根据矩阵算法和迭代算法分别得到第一类节点与第二类节点的可信度等级;
步骤a3:根据各个第一类节点的可信度等级,向第二类节点推荐若干第一类节点作为可信任节点;或者,根据各个第二类节点的可信度等级,向第一类节点推荐若干第二类节点作为可信任节点。
优选地,所述步骤a1包括:
步骤a1.1:分别统计第一类节点与第二类节点的数量,将第一类节点的总数记为m,第二类节点的总数记为n;
则用vi,j表示第一类节点中的第j个节点关于第二类节点中的第i个节点的交互历史,其中j=1,2,3…m;i=1,2,3…n;
则用uj,i表示第二类节点中的第i个节点关于第一类节点中的第j个节点的交互历史,其中j=1,2,3…m;i=1,2,3…n;
步骤a1.2:将第一类节点与第二类节点之间的交互历史分别存储至对应的二维矩阵中,得到两个二维矩阵v和u,其中:
优选地,所述步骤a2包括:
步骤a2.1:通过矩阵算法得到与二维矩阵v和u,即第一类节点与第二类节点之间的交互历史相关的两个核心矩阵a和b,其中,核心矩阵a为由二维矩阵v和二维矩阵u中的数值经过矩阵相乘运算得到的一个n行n列的二维矩阵,核心矩阵b为由二维矩阵u和二维矩阵v中的数值经过矩阵相乘运算得到一个m行m列的二维矩阵;
步骤a2.2:通过迭代算法,并设置迭代误差值,分别得到第一类节点与第二类节点的可信度等级;具体地,
第一类节点的可信度等级:
步骤a1、设定迭代起始值t,t表示m×1的可信度等级向量;
步骤a2、进行迭代运算,将核心矩阵b中的数值乘以t;
步骤a3、进行归一化处理;
步骤a4、计算迭代后的误差δ(n);
步骤a5、判断误差δ(n)是否小于设定的误差门限e,n表示迭代次数,如果小于误差门限e则停止迭代运算,输出m个第一类节点的可信度等级;否则,返回步骤a2,并令t的值等于第n-1次时步骤a3得到的归一化值,继续进行迭代运算;
第二类节点的可信度等级:
步骤b1、设定迭代起始值s,s表示n×1的可信度等级向量;
步骤b2、进行迭代运算,将核心矩阵b中的数值乘以t;
步骤b3、进行归一化处理;
步骤b4、计算迭代后的误差δ(m);
步骤b5、判断误差δ(m)是否小于设定的误差门限e,m表示迭代次数,如果小于误差门限e则停止迭代运算,输出n个第二类节点的可信度等级;否则,返回步骤b2,并令s的值等于第m-1次时步骤b3得到的归一化值,继续进行迭代运算。
优选地,当第一类节点中的第j个节点关于第二类节点中的第i个节点不存在交互历史时,则令vi,j的值为0;当第二类节点中的第i个节点关于第一类节点中的第j个节点不存在交互历史时,则令uj,i的值为0。
优选地,所述核心矩阵a和b的计算方式如下:
ak,n表示核心矩阵a的第k行第n列的元素值,具体计算公式如下:
bl,m表示核心矩阵b中的第l行第m列的元素值,具体计算公式如下:
根据本发明提供的基于可信度模型的节点推荐系统,包括:
储存模块:用于统计第一类节点与第二类节点的数量,并将第一类节点与第二类节点之间的交互历史以二维矩阵的方式进行存储;
可信度等级建立模块:用于根据矩阵算法和迭代算法分别得到第一类节点与第二类节点的可信度等级;
可信度等级推荐模块:用于根据第一类节点的可信度等级,向第二类节点推荐若干第一类节点作为可信任节点;或者根据第二类节点的可信度等级,向给第一类节点推荐若干第二类节点作为可信任节点。
优选地,所述储存模块包括:
第一储存子模块:用于分别统计第一类节点与第二类节点的数量,将第一类节点的总数记为m,第二类节点的总数记为n;
则用vi,j表示第一类节点中的第j个节点关于第二类节点中的第i个节点的交互历史,其中j=1,2,3…m;i=1,2,3…n;
则用uj,i表示第二类节点中的第i个节点关于第一类节点中的第j个节点的交互历史,其中j=1,2,3…m;i=1,2,3…n;
第二储存子模块:用于将第一类节点与第二类节点之间的交互历史分别存储至对应的二维矩阵中,得到两个二维矩阵v和u,其中:
优选地,所述可信度等级建立模块包括:
第一可信度等级建立子模块:用于通过矩阵算法得到与二维矩阵v和u,即第一类节点与第二类节点之间的交互历史相关的两个核心矩阵a和b,其中,核心矩阵a为由二维矩阵v和二维矩阵u中的数值经过矩阵相乘运算得到的一个n行n列的二维矩阵,核心矩阵b为由二维矩阵u和二维矩阵v中的数值经过矩阵相乘运算得到一个m行m列的二维矩阵;
第二可信度等级建立子模块:用于通过迭代算法,并设置迭代误差值,分别得到第一类节点与第二类节点的可信度等级;具体地,
第一类节点的可信度等级:
步骤a1、设定迭代起始值t,t表示m×1的可信度等级向量;
步骤a2、进行迭代运算,将核心矩阵b中的数值乘以t;
步骤a3、进行归一化处理;
步骤a4、计算迭代后的误差δ(n);
步骤a5、判断误差δ(n)是否小于设定的误差门限e,n表示迭代次数,如果小于误差门限e则停止迭代运算,输出m个第一类节点的可信度等级;否则,返回步骤a2,并令t的值等于第n-1次时步骤a3得到的归一化值,继续进行迭代运算;
第二类节点的可信度等级:
步骤b1、设定迭代起始值s,s表示n×1的可信度等级向量;
步骤b2、进行迭代运算,将核心矩阵b中的数值乘以t;
步骤b3、进行归一化处理;
步骤b4、计算迭代后的误差δ(m);
步骤b5、判断误差δ(m)是否小于设定的误差门限e,m表示迭代次数,如果小于误差门限e则停止迭代运算,输出n个第二类节点的可信度等级;否则,返回步骤b2,并令s的值等于第m-1次时步骤b3得到的归一化值,继续进行迭代运算。
优选地,当第一类节点中的第j个节点关于第二类节点中的第i个节点不存在交互历史时,则令vi,j的值为0;当第二类节点中的第i个节点关于第一类节点中的第j个节点不存在交互历史时,则令uj,i的值为0。
优选地,所述核心矩阵a和b的计算方式如下:
ak,n表示核心矩阵a的第k行第n列的元素值,具体计算公式如下:
bl,m表示核心矩阵b中的第l行第m列的元素值,具体计算公式如下:
与现有技术相比,本发明具有如下的有益效果:
1、本发明以网络节点的交互历史数据,引入两类节点的概念,利用矩阵算法将两类节点之间的交互历史转换成核心矩阵,通过迭代算法获得包含节点自身信用度的可信度等级,并设置了误差门限制,有效控制可信度等级的误差,使得结果更加精确。
2、本发明提供的基于可信度模型的节点推荐方法,计算简单,易于推广,适用于网络交易、市场评价排序、企业可信度排序以及教学师生信息的管理;且能够设计定制自定义的推荐服务。
3、本发明提供的基于可信度模型的节点推荐方法能够删选网络虚假信息,进一步提升数据信息的可信度,保证网络安全。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明提供的基于可信度模型的节点推荐方法的流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
根据本发明提供的基于可信度模型的节点推荐方法,如图1所示,包括如下步骤:
步骤a1:统计第一类节点与第二类节点的数量,并将第一类节点与第二类节点之间的交互历史分别存储至对应的二维矩阵中;
步骤a2:根据矩阵算法和迭代算法分别得到第一类节点与第二类节点的可信度等级;
步骤a3:根据各个第一类节点的可信度等级,向第二类节点推荐若干第一类节点作为可信任节点;或者,根据各个第二类节点的可信度等级,向第一类节点推荐若干第二类节点作为可信任节点。
所述步骤a1包括:
步骤a1.1:分别统计第一类节点与第二类节点的数量,将第一类节点的总数记为m,第二类节点的总数记为n;
则用vi,j表示第一类节点中的第j个节点关于第二类节点中的第i个节点的交互历史,其中j=1,2,3…m;i=1,2,3…n;
则用uj,i表示第二类节点中的第i个节点关于第一类节点中的第j个节点的交互历史,其中j=1,2,3…m;i=1,2,3…n;
步骤a1.2:将第一类节点与第二类节点之间的交互历史分别存储至对应的二维矩阵中,得到两个二维矩阵v和u,其中:
所述步骤a2包括:
步骤a2.1:通过矩阵算法得到与二维矩阵v和u,即第一类节点与第二类节点之间的交互历史相关的两个核心矩阵a和b,其中,核心矩阵a为由二维矩阵v和二维矩阵u中的数值经过矩阵相乘运算得到的一个n行n列的二维矩阵,核心矩阵b为由二维矩阵u和二维矩阵v中的数值经过矩阵相乘运算得到一个m行m列的二维矩阵;
步骤a2.2:通过迭代算法,并设置迭代误差值,分别得到第一类节点与第二类节点的可信度等级;具体地,
第一类节点的可信度等级:
步骤a1、设定迭代起始值t,t表示m×1的可信度等级向量;
步骤a2、进行迭代运算,将核心矩阵b中的数值乘以t;
步骤a3、进行归一化处理;
步骤a4、计算迭代后的误差δ(n);
步骤a5、判断误差δ(n)是否小于设定的误差门限e,n表示迭代次数,如果小于误差门限e则停止迭代运算,输出m个第一类节点的可信度等级;否则,返回步骤a2,并令t的值等于第n-1次时步骤a3得到的归一化值,继续进行迭代运算;
更进一步地,t=[t1t2t3,...,tm]t表示第一类节点的可信度等级排序向量。
第二类节点的可信度等级:
步骤b1、设定迭代起始值s,s表示n×1的可信度等级向量;
步骤b2、进行迭代运算,将核心矩阵b中的数值乘以t;
步骤b3、进行归一化处理;
步骤b4、计算迭代后的误差δ(m);
步骤b5、判断误差δ(m)是否小于设定的误差门限e,m表示迭代次数,如果小于误差门限e则停止迭代运算,输出n个第二类节点的可信度等级;否则,返回步骤b2,并令s的值等于第m-1次时步骤b3得到的归一化值,继续进行迭代运算;
更进一步地,s=[s1s2s3,...,sn]t表示第二类节点的可信度等级排序向量。
当第一类节点中的第j个节点关于第二类节点中的第i个节点不存在交互历史时,则令vi,j的值为0;当第二类节点中的第i个节点关于第一类节点中的第j个节点不存在交互历史时,则令uj,i的值为0。
所述核心矩阵a和b的计算方式如下:
ak,n表示核心矩阵a的第k行第n列的元素值,具体计算公式如下:
bl,m表示核心矩阵b中的第l行第m列的元素值,具体计算公式如下:
如果将第一类节点自身的可信度等级向量t做为与第二类节点交互时的权重值,对整个二维矩阵v进行加权累加处理,应该得到第二类节点的可信度等级向量s;反之亦然:如果将第二类节点自身的可信度等级向量s做为与第一类节点交互时的权重值,对整个u进行加权累加处理,应该得到第一类节点自身的可信度等级向量t;即同时满足下式:
s=c1vt(1)
t=c2us(2)
其中,c1和c2表示两个常数。简言之,需要解的数学问题是:已知v、u,求解s和t。
解法:从数学上,将公式(1)带入公式(2),可得:
s=c1c2vus
可见s是n阶方阵“vu”的特征向量,
同样,将公式(2)带入公式(1),可得:
t=c1c2uvt
其中,t是m阶方阵“uv”的特征向量,
由此可以看出,只要求解n阶方阵“vu”和m阶方阵“uv”的特征值和特征向量即可;并且需要的解
解特征向量的算法有很多种,例如可以用乘幂法来迭代求解。乘幂法的数学原理是:若求某个n阶方阵a的特征值和特征向量,任取一个长为n、非零初始列向量r(0),经过矩阵a和列向量r的反复乘积运算,构造如下的列向量序列:
r(0)
r(1)=ar(0)
r(2)=ar(1)(5)
...
r(k+1)=ar(k)
其中,k表示迭代运算的次数,当k增大时,列向量序列r(k)将收敛到矩阵a绝对值最大的特征值所对应的特征向量。当r(k)与r(k+1)的误差很小时,即可完成特征向量的求解。
具体算法如下,令方阵“vu”或“uv”为a,a的矩阵的阶数为n,取:
经过下式运算:
k=0;
loopwhileδ>e
r(k+1)=ar(k)
δ=||r(k+1)-r(k)||
k=k+1;
end
特征向量≈r(k+1)
上式中,对每次得到的列向量r(k)进行归一化操作,即:
其中,“||||”表示列向量的1范数,即列向量中所有元素的绝对值之和。
在第k+1次循环中计算r(k+1)和前次结果r(k)之差向量的范数δ,判断其是否小于设定容忍的误差门限e,如果不是小于,则继续下一次迭代运算;如果是小于,则停止迭代运算,输出r(k+1)作为矩阵a的特征向量,即得到的等级值。
如果矩阵a是“vu”,则等级值代表的是s;如果矩阵a是“uv”则等级值代表的是t。经过两次相同的算法运算,就得到了对服务方与被服务方评价评价的排序s和t。
另外,通过设定误差门限e,能够得到足够精度的评价排序结果。要求精度越高,运算量也越大。比如:可以取e=0.001,即误差在千分之一。
迭代算法:
假设是第一次进行迭代计算,即还没有经过迭代运算,关于n个第二类节点的排序初始值,取n长度、内容相同的初始向量存储在某一行存储单元s内:
其中,每一个存储的数据都相同,都是
如果不是第一次进行迭代计算,而是进行第m次迭代计算,则同样将第m-1次迭代计算的结果:
将核心矩阵a乘以第二类节点的可信度等级向量s,即
其中:
…
进行归一化处理:
为节省存储空间起见,将第m次迭代后的
计算迭代后的误差δ(m):
误差δ(m)表示的是第m次迭代后得到的s(m)和第m-1次迭代后得到的s(m-1)的差距,由下式得到:
判断是否停止迭代运算:
如果第m迭代后的误差δ(m)小于设定的误差门限e,即可停止迭代。如果误差δ(m)不小于e,则返回步骤1.2继续进行迭代计算,一直到满足误差δ(m)小于e为止。
设定误差门限e=0.001,即误差在千分之一,则表示第m次迭代后s更新(或改变)部分的绝对值仅占s绝对值千分之一。
输出n个第二类节点的可信度等级。
满足停止迭代的条件后,得到的
同理,计算得到第一类节点的可信度等级,假设是第一次进行迭代计算,即还没有经过迭代运算,关于m个第一类节点的排序初始值,取m长度、内容相同的初始向量存储在某一行存储单元t内:
其中每一个存储的数据都相同,都是
如果不是第一次进行迭代计算,而是进行第n次迭代计算,则同样将第n-1次迭代计算的结果:
迭代计算:
将核心矩阵b乘以第一类节点的可信度等级向量t,即
其中:
…
进行归一化处理:
为节省存储空间起见,将第n次迭代后的
计算迭代后的误差δ(n):
误差δ(n)表示的是第n次迭代后得到的t(n)和第n-1次得到的t(n-1)的差距,由下式得到:
判断是否停止迭代:
如果第n迭代后的误差δ(n)小于设定的误差门限e,即可停止迭代。如果误差δ(n)不小于e,则返回步骤2.2,一直到满足误差δ(n)小于e为止。
设定误差门限e=0.001,即误差在千分之一,则表示第n次迭代后t更新(或改变)部分的绝对值仅占t绝对值千分之一。
输出m个第一类节点的评价排序值。
满足迭代的停止条件后,得到的
根据本发明提供的基于可信度模型的节点推荐系统,包括:
储存模块:用于统计第一类节点与第二类节点的数量,并将第一类节点与第二类节点之间的交互历史以二维矩阵的方式进行存储;
可信度等级建立模块:用于根据矩阵算法和迭代算法分别得到第一类节点与第二类节点的可信度等级;
可信度等级推荐模块:用于根据第一类节点的可信度等级,向第二类节点推荐若干第一类节点作为可信任节点;或者根据第二类节点的可信度等级,向给第一类节点推荐若干第二类节点作为可信任节点。
实施例1:
在p2p联网中,尤其适行对两类网络节点的交互历史进行跟踪记录,并生成精确的可信度等级,根据用户的需求,设计自定义的节点次序推荐,满足互联网数据的优化,提高数据选择效率。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。