技术领域
[0001] 本
发明属于web服务领域,主要实现一种基于协同过滤和QoS感知的服务选择框架。
背景技术
[0002] 面向服务的计算(SOC)为我们提供了一种将单一功能应用无缝聚合为大粒度增值服务的方法。如今,
服务组合受到了产业界的关注,并且应用到了各个领域,比如工作
流管理、金融、
电子商务等等。在互联网上,分布着大量的可选服务,它们都提供了相同的功能,但是在非功能特性和服务
质量上存在着差异,所以服务组合的问题逐渐转变为根据用户的服务质量(QoS)选择最佳的候选服务组合过程。
[0003] 近年来,有很多关于服务选择的研究,但是这些研究基于一个共同的前提,那就是用户对于所有的候选服务的QoS都是已知的。但是,这在真实的使用环境中并不现实。比如,因为地理
位置和网络环境的不同,不同用户对于同一服务的QoS可能差距很大。况且,一个用户很难保证使用过所有的候选服务,也就是说,对于某些服务,用户无法提供QoS信息。
发明内容
[0004] 本发明基于背景技术中的两点问题,提供一种对未知的QoS信息进行预测和基于完整的QoS信息,进行QoS感知的服务选择的感知的服务选择框架。
[0005] 本发明解决现有问题的技术方案是:一种基于协同过滤和QoS感知的服务选择框架,1)用户通过服务设计模
块自行组合服务,用户选择一种或多种服务的组合来实现等价功能,每种服务可能由一个或多个等价功能具体服务实现,基于QoS服务选择的从每组等价功能的具体服务中,选择候选服务来满足端到端功能需求,优化组合QoS;
2)目标用户初次调用候选服务,QoS选择系统为目标用户和目标服务提取
特征向量,通过相似度计算函数,得到目标用户和目标服务与
数据库中
训练数据的相似度,通过筛选函数,得到相似用户和相似服务,利用它们的历史QoS表征,预测目标用户对候选服务的QoS;
3)预测目标用户对候选服务的QoS,选择最佳服务组合推荐给用户,由
剪枝模块进行对候选具体服务的筛选。
[0006] 作为本发明的进一步改进,步骤2)目标用户和目标服务提取的特征向量计算相似度,从用户和服务两方面分别进行预测,然后根据系统权重进行组合。
[0007] 作 为 本 发 明 的 进 一 步 改 进,系 统 权 重 由 系 统 参 数 和预测
置信度两部分组成。
[0008] 作为本发明的进一步改进,步骤3)中的剪枝模块利用skyline
算法根据多维QoS为候选服务数据集选择支配服务,将支配服务输入服务选择模块,剪枝模块通过效用函数计算选择最佳服务。
[0009] 作为本发明的进一步改进,所述的相似度计算函数利用的是修正余弦算法(Adjusted Cosine)。所述的筛选函数使用混合Top-K(Hybrid Top-K)算法,所述的算法为:Input: u: 目标用户 ; T(u):其他用户的集合 ;
P: 相似度
阈值 ; K: 输出候选用户的最
大数据量
Output: S(u): 相似用户的集合
1): 遍历除目标用户外的所有其他用户集合,将所有于目标用户的相似度大于既设阈值P的用户加入到预选队列中;
2): 记录预选队列中用户的数量 ,并按照相似度由高到低的顺序,对预选队列进行排序;
3): if
此种情况下,说明相似度大于既设阈值的用户数量足够多,不少于K个,故将预选队列中的相似度由高到低排序,前K个用户插入相似用户集合 ,加入到S(u)中;
4): if 0 < < K
此种情况下,说明相似度大于既设阈值的用户数量没有达到设定的K个,为了避免相似度过低的用户信息对最后预测结果的干扰,只选取预选队列中的 个用户作为输出,加入到S(u)中;
5): if =0
此种情况下,目标用户所有的相似用户相似度都过低,这些数据对于预测结果的干扰过大,所以输出空集,即目标用户无相似用户;
6):return S(u)。
[0010] 作为本发明的进一步改进,所述的特征向量,包括基于用户的QoS特征向量和基于服务的QoS特征向量,所述的用户的QoS特征向量描述了对不同服务的QoS特征值,用户是固定的;所述的基于服务的QoS特征向量,描述了服务对不同用户的特征值,服务是固定的。
[0011] 本发明与
现有技术相比较,其有益效果是可以为用户提供更准确更高效的服务组合推荐,进一步的:(1)本发明中所采用的QoS预测方法,采用了基于用户和基于服务两种预测的混合,可以提供更准确的QoS预测效果,并且可以通过调整系统参数 ,针对不同特点的数据类型调整最优混合比例。
[0012] (2)本发明中提出的修正余弦算法(Adjusted Cosine)来计算相似度,相比于现有佩尔森相关系数(Pearson Correlation Coefficient)执行效率和相似度计算效果上有所提高。
[0013] (3)在筛选函数环节上,传统的top-K算法不利于精确地预测,没有考虑到选取结果的质量,相似度过低的用户数据如果作为预测过程的数据源,反而会影响实验结果的准确性。而本发明中提出混合Top-K(Hybrid Top-K)算法可以很好的解决这一问题。
附图说明
[0014] 图1 为基于QoS的动态服务选择局部示意图。
[0015] 图2 为基于协同过滤的服务选择框架的体系架构图。
具体实施方式
[0017] 参见图1-3,一种基于协同过滤和QoS感知的服务选择框架,本实施案例包括如下步骤:1)用户通过服务设计模块自行组合服务,用户选择一种或多种服务的组合来实现等价功能,每种服务可能由一个或多个等价功能具体服务实现,基于QoS服务选择的从每组等价功能的具体服务中,选择候选服务来满足端到端功能需求,优化组合QoS;
2)目标用户初次调用候选服务,QoS选择系统为目标用户和目标服务提取特征向量,通过相似度计算函数,得到目标用户和目标服务与数据库中训练数据的相似度,通过筛选函数,得到相似用户和相似服务,利用它们的历史QoS表征,预测目标用户对候选服务的QoS;
3)预测目标用户对候选服务的QoS,选择最佳服务组合推荐给用户,由剪枝模块进行对候选具体服务的筛选。
[0018] 其中,步骤2)目标用户和目标服务提取的特征向量计算相似度,从用户和服务两方面分别进行预测,然后根据系统权重进行组合。系统权重由系统参数 和预测置信度两部分组成。而特征向量,包括基于用户的QoS特征向量和基于服务的QoS特征向量,所述的用户的QoS特征向量描述了对不同服务的QoS特征值,用户是固定的;所述的基于服务的QoS特征向量,描述了服务对不同用户的特征值,服务是固定的。
[0019] 步骤3)中的剪枝模块利用skyline算法根据多维QoS为候选服务数据集选择支配服务,将支配服务输入服务选择模块,剪枝模块通过效用函数计算选择最佳服务。
[0020] 相似度计算函数利用的是修正余弦算法(Adjusted Cosine)。筛选函数使用混合Top-K(Hybrid Top-K)算法,所述的算法为:Input: u: 目标用户 ; T(u):其他用户的集合 ;
P: 相似度阈值 ; K: 输出候选用户的最大数据量
Output: S(u): 相似用户的集合
1): 遍历除目标用户外的所有其他用户集合,将所有于目标用户的相似度大于既设阈值P的用户加入到预选队列中;
2): 记录预选队列中用户的数量 ,并按照相似度由高到低的顺序,对预选队列进行排序;
3): if
此种情况下,说明相似度大于既设阈值的用户数量足够多,不少于K个,故将预选队列中的相似度由高到低排序,前K个用户插入相似用户集合 ,加入到S(u)中;
4): if 0 < < K
此种情况下,说明相似度大于既设阈值的用户数量没有达到设定的K个。为了避免相似度过低的用户信息对最后预测结果的干扰,只选取预选队列中的 个用户作为输出,加入到S(u)中;
5): if =0
此种情况下,目标用户所有的相似用户相似度都过低,这些数据对于预测结果的干扰过大,所以输出空集,即目标用户无相似用户;
6):return S(u)。
[0021] 本算法的优点在于引入阈值概念,能够准确并且迅速的选取候选相似用户,保证了相似用户的质量,进而提高预测算法的应用准确性。
[0022] 下面结合本发明的具体应用,进一步产生本发明。
[0023] 图1展示了基于协同过滤和QoS感知的服务选择框架的具体实施架构方案。
[0024] (1)建立历史用户对众多候选服务的QoS数据集,该数据集可用(U,S,QoS)向量表示,分别代表“用户IP、服务编号、用户QoS”,用户IP和服务编号都可以唯一确定一个用户和一个服务。该数据收集系统为整体服务选择框架提供训练数据。利用爬虫在服务
搜索引擎(如seekda.com等)可以获取可用服务的WSDL文件,将服务ID加入服务选择框架的单一具体服务列表。监视获取不同用户在调用这些不同服务的QoS,将“用户IP、服务编号、用户QoS”作为一个QoS信息组导入数据库,利用这些数据作为整个服务选择框架的数据集。
[0025] (2)用户可以通过服务设计过程实现服务组合。图2展示了基于QoS服务选择的概念框架,用户的
请求可能无法由现有单一服务满足,此时,用户可以选择组合服务来实现等价功能。组合服务可以由多个抽象服务组成,而每个抽象服务可以通过一个或多个功能相同的具体服务来实现。基于QoS服务选择的最终目标是从每组等功能的具体服务中,选择候选服务来满足端到端功能需求,并且能最大程度的优化组合后的QoS。
[0026] (3)根据用户和具体服务ID,使用修正余弦算法(Adjusted Cosine),计算数据集中的所有用户和目标用户的相似度,以及所有服务和目标用户的相似度。利用混合Top-K算法选择最佳候选相似用户和相似服务,将这些QoS信息组输入到QoS预测模块。
[0027] (4)QoS预测模块中,利用输入的QoS信息组分别计算基于用户的预测值和基于服务的预测值,并且生成每个预测结果的可信度。如果不存在相似用户,则使用基于服务的预测值作为预测结果;如果不存在相似服务,则使用基于用户的预测值作为预测结果;否则,根据预测可信度计算基于用户和基于服务的预测值各自的权重,并由此生成最终的QoS预测结果的计算结果作为预测值。在进行过缺失QoS预测过程后,使用所有的预测结果更新数据集。
[0028] 图3展示了QoS预测的具体流程。
[0029] 主要流程及算法如下:首先对需要用到的变量和公式进行一些定义。
[0030] 定义1. :用户 对于服务集合S的QoS向量。比如,S={ , , }, 对它们的QoS分别是{(1, 3), (0, 0), (1, 4)},则 。
[0031] 定义2. :用户集合U对于服务 的QoS向量。
[0032] 定义3. :用户 使用过的所有服务的集合。
[0033] 定义4. :所有使用过服务 的用户集合。
[0034] 定义5. :用户u对于服务s的QoS。
[0035] 定义6. S(u):用户u的所有相似用户。
[0036] 定义7. S(s):服务s的所有相似服务。
[0037] 定义8. :用户u对所有服务的QoS平均值。
[0038] 定义9. :所有用户对服务s的QoS平均值。
[0039] 定义10. :QoS预测值计算过程中,QoS平均值。
[0040] 具体步骤:a) 为每一个用户,根据他对于所有服务的QoS生成用户特征向量,如果QoS缺失,则向量中相应元素置为0;
b) 为每一个服务,根据所有用户对它的QoS生成服务特征向量,如果QoS缺失,则向量中相应元素置为0;
c) 根据用户特征向量,利用修正余弦算法(Adjusted Cosine),计算待预测用户和其他用户之间的相似度。
[0041] 用户之间的相似度计算:其中S =
d) 根据服务特征向量,利用修正余弦算法(Adjusted Cosine),计算待预测服务和其他服务之间的相似度。
[0042] 服务之间的相似度计算:其中U =
e) 使用混合Top-K算法,分别选取k个相似用户和相似服务。
[0043] f) 根据相似用户和相似服务的QoS分别计算基于用户的预测结果(user-based prediction) 和基于服务的预测结果(service-based prediction)值。
[0044] 基于用户的预测结果(user-based prediction):基于服务的预测结果(service-based prediction):
g) 根据基于用户的预测结果(user-based prediction),基于服务的预测结果(service-based prediction),以及各自的可信度计算最终的QoS预测结果。如果不存在相似用户,则使用 作为预测结果;如果不存在相似服务,则使用 作为预测结果;否则,使用混合计算结果作为预测值。
[0045] 基于用户的预测结果的可信度基于服务的预测结果的可信度
混合QoS预测值
其中 , , ,是可调整的系统参数。
[0046] (5)由于数据数量过于庞大,由剪枝模块进行对候选具体服务的筛选工作。这个模块利用skyline算法根据多维QoS为候选服务数据集选择支配服务。将支配服务输入服务选择模块,此模块通过效用函数计算选择最佳服务。
[0047] 在用户设计的组合服务中,利用上述方法为每一个抽象服务的候选具体服务集中选择最佳服务,将这些具体服务的组合推荐给用户。