一种用于需求群组融合的改进聚类算法

文档序号:31026881发布日期:2022-08-06 01:00阅读:97来源:国知局

1.本发明涉及针对用户需求的群组融合方法,属于互联网和软件工程领域。


背景技术:

2.服务计算在商业活动和科学应用等领域发挥着日益重要的作用,随着服务计算的不断发展,物理世界中越来越多的服务涉及到服务计算。通过互联网,服务的形式从线上的web服务逐渐扩展到线下的旅游、购物、餐饮等多个行业领域,也由此产生了大量的服务需求。不同的用户需求也不尽相同,但服务提供商由于成本等各种限制只能满足部分用户的需求,昂贵的单个服务的定制成本又使得用户望而却步,由此导致现阶段某些用户的需求得不到满足,用户体验大打折扣,服务提供商的利益也受到影响。
3.研究一种将用户需求融合成组的方法能够有效解决上述有需求却得不到响应的问题,使得服务商能够根据大量的用户需求来提供尽可能满足更多用户的服务,从而提高用户的服务体验,并且也能够带来更高的经济效益,最终达到双方共赢的结果。事实上,尽管不同用户的需求彼此千差万别,但随着需求基数增长到一定程度时,大量的需求中总能够找到一些需求的共性,利用这共性,可以将这些需求聚类为一个需求群组,用于给特定的用户提供该组融合后的服务。对此,本专利提出了一种用于将不同需求融合成组的改进聚类算法。


技术实现要素:

4.本发明要解决的问题是:对于不完全相同且具有一定数量规模的需求,为每个需求设定满意度阈值用来模拟用户所能接受需求融合的最大程度,将它们基于相似度聚类成组,并且保证融合后组内的各个需求都能够达到各自的满意度阈值,给出一种需求融合成组的改进聚类方法。方法包括需求模型描述、相似度计算、群组构建以及群组属性融合四个核心步骤。该方法的步骤流程图如图1所示。具体如下:
5.1.需求模型描述
6.对于具体的需求而言,一般从该需求在不同属性上的预期值、该需求对不同属性的权重以及该需求的具体数量三个方面来描述。
7.(1)需求模型在不同属性上的预期值描述
8.为了描述某个具体的需求在不同属性上的预期值,作为服务的提供方,需要首先以某种形式给出某个需求所提供的属性个数。譬如,作为销售服装的服务提供商,需要首先告知用户所选择的衣服具有哪些可供选择的需求,例如有颜色、尺码、品牌、价格这些可供选择的需求,用n表示该需求所拥有的属性个数,在这个例子中n就设置为4。接着针对这四个具体的属性,服务的提供者也需要给出各个属性的值域,譬如衣服的颜色有红色、蓝色、白色、黑色四种取值,那么对于属性一,也就是颜色这个属性,它的值域就为4,用户只能在其值域内选择具体的需求,此时就可以用数组的形式来表示该需求对于此属性的选择,例如数组[1,2]表示该需求对于颜色这个属性选择了红色和蓝色两种颜色。实际情况中,对于
某个属性而言,用户所给出的需求描述大多是若干个预期值或是一个范围区间,譬如对于颜色这个属性,用户的需求是[2-4],显然该区间是颜色这个属性的全体值域集合的一个子集,并且该属性上的期望值也必须是全体值域集合的子集,因为用户所给的需求不能超过服务提供商所给的值域。综上而言,需求模型中对各属性的预期值都可以使用各个属性值域集合的子集的形式来描述。
[0009]
(2)需求模型在不同属性上的权重描述
[0010]
用户需求所给出的不同属性上的权重表示了该需求对不同属性的偏好程度,这是由于服务商提供的属性繁多,用户需求对不同的属性有着不同的看重程度,在需求模型中以量化的形式来表示用户对于各个属性的看重程度,以数组的形式表示该需求的权重值,数组长度与需求种类个数相等,数组取值范围[0-1]且数组各项值总和为1。譬如上文中对于挑选衣服而言,用户对颜色、品牌、价格三种属性给出的需求权重为[0.3,0.6,0.1],这就表示该需求最看重衣服的品牌,其次是颜色,最不看重的是价格。这样在随后进行的分组里就会将需求的偏好作为聚类分组的依据,尽量保证有相同偏好的需求能够聚成一类。
[0011]
(3)需求模型在具体定制数量上的描述
[0012]
需求的定制数量代表了完全相同的需求的个数,用一个整数来描述需求模型的该属性。
[0013]
综上所述,使用一个三元组<vi,wi,qi>来表示第i种需求,具体分为以下三个方面:
[0014]
(1)首先,定义n表示服务中可供选择的属性个数,m表示共有m种需求,vrj(j=1,..n)表示需求中第j个属性的值域集合,rj表示第j个属性的最大取值,所以有vrj=[1,2,...,rj],(1≤x≤n)表示第j个属性有rj种取值。由此便可以用二维数组vi来表示第i种需求的属性取值,v
ij
就表示第i种需求对于第j个属性上的预期值,这是一个一维数组,可以看作是一个集合,且必定是vrj的子集,即有
[0015]
(2)wi表示第i种需求的属性权重集合,这是一个一维数组,数组长度等于需求属性的个数n,w
ij
表示第i种需求中对于第j个属性的权重,有0≤w
ij
≤1,(1≤i≤m,1≤j≤n),并且有
[0016]
(3)qi表示第i种需求的总个数,即完全相同的此需求的个数,qi是一个整数。
[0017]
需求模型的描述示意图如图2所示。
[0018]
2.相似度计算
[0019]
为了将不同种类的需求聚类成一个组,需要计算它们之间的相似度,不同种类的需求之间的相似度与它们在每个属性上的取值有关。对于任意两种需求,分别计算它们在各个属性上的相似度,在对结果进行加权求和,最终得到两种需求的完整相似度。两种需求在单个属性上的相似度计算公式由式(1)给出。
[0020]
sim
i-j,p
=sim
j-i,p
=|v
ip
∩v
jp
|/|v
ip
∪v
jp
|,p=1,..n,i,j=1,..m
ꢀꢀꢀꢀꢀ
(1)
[0021]
在实际情况下,计算两种需求的整体相似度时,由于不同需求对于不同的属性偏好程度不尽相同,因此该相似度具有不对成的性质,即a种需求对b种需求的相似度与b种需求对a种需求的相似度可能是不一样的。例如,a需求和b需求都想买同样颜色的商品,a需求觉得商品的价格没那么重要,即对于价格属性的权重相对较低;而b需求觉得商品的价格十分重要,即对于价格属性的权重很高,那么就会出现a需求觉得b需求与它十分相似,应当分
成一组需求,而b需求就会觉得a需求与之并不相似,不应当分到一组里。由此可见,用户之间的相似度与用户对不同属性的权重有着很大的关系,因此在计算两种需求之间的相似度时,需要考虑到需求对各属性的权重来获得更加可靠的相似度值。a需求对于b需求的相似度计算公式由公式(2)给出,该相似度的值由他们每个属性的相似度与b需求对各个属性的权重加权求和得出。
[0022][0023]
3.群组构建
[0024]
在计算出不同需求之间的两两相似度之后,下面进行需求的群组构建。需求成组的条件有许多种,本发明让用户或者说需求能够设置满意度阈值,该值代表用户对需求聚类融合后的结果的最大容忍度。这是由于实际情况下,例如用户需求选择了多个属性并接受将其需求进行融合调整,但是用户也有其必须要满足的需求属性,因此不能够任意地将用户的需求进行改变以成组,必须至少要达到用户的最低期望。
[0025]
本发明以需求成组后组内所有需求都能够达到其满意度阈值以及需求之间应当尽可能相似为基础和前提,采取最大平均成组满意度为衡量指标和优化目标,实现一种高效且令用户更加满意的群组构建方法。所谓平均组满意度,就是指成组后所有的需求群组的用户满意度与组数相平均后尽可能大,这在实际情况中表现为尽可能多的用户在使用本方法后能够实现自己的需求并且对结果相对满意。根据上述思想,给出本方法的群组构建步骤:
[0026]
假设有m种不同的需求,各需求的属性包括vi,wi,qi,其含义已在上文给出,另有m个满意度阈值与需求一一对应。在此我们先假设同一种需求的满意度阈值相等方便计算,实际情况中将需求相同但是满意度阈值不同的需求当作不同的需求进行计算即可。另外通过实验可以得到:所选需求种类多并且满意度阈值小的需求更容易被融合到一起并且最终的满意度也不会低。
[0027]
步骤1:根据式(1)、(2)计算所有需求两两之间的相似度得到一个不对称的相似度矩阵。
[0028]
步骤2:统计各个需求选择的属性个数numi和满意度阈值sati,将各个需求按照numi/sati的值降序排列,优先选择值较大的需求作为组的核心需求进行群组构建。
[0029]
步骤3:依据步骤2所找到的核心需求成组得到组a,并以之为中心继续寻找需求尝试成组。
[0030]
步骤4:将与步骤2得到的需求之外的并且未成组的需求按照与该需求的相似度递减的顺序排列。
[0031]
步骤5:从步骤4排序得到的序列中按序逐个取出需求加入组a,随后判断该需求进组后组内的成员是否能够达到各自的满意度阈值。如果不能,则将新加入的需求从组内移出,该状态称为进组失败。由于该方法是以平均组满意度阈值为目标,因此当遇到进组失败的需求后将立即终止剩余需求继续进组的操作。并且规定单个需求不算作成组状态,即当进行步骤五之后如果进组失败且该组内只有一种需求,改组解散,若组内需求种类大于1种,则跳转至步骤6。如果需求进组成功,则跳转至步骤5。
[0032]
步骤6:以当前选择的需求为组内核心需求的分组过程结束。当步骤2的序列未遍历完成时,跳转至步骤2。
[0033]
在上述步骤5中,涉及到了判断新进需求是否进组成功的过程,下面展开说明。对于某个已经形成的组而言,组内的成员应当都达到了各自的满意度阈值,一个新的需求想要进组时,应当保证进入组后组内的成员仍然达到各自满意度阈值,并且由于选择进组需求的顺序是按照相似度递减而排的,因此当新进组需求入组后导致组内其他需求达不到满意度阈值的时候,新进组的需求需要退组而不是组内原本的成员退组。式(3)、(4)给出了需求进组后满意度的计算方法。si表示了第i类需求进组后所达到的总满意度,当且仅当组内所有成员都有si≥sati的时候,该需求才能够进组成功。
[0034][0035][0036]
式(3)中,gvj表示当前群组的第j个组属性,该属性是由组内的各个需求的具体属性融合得到,下文会进行详解。在此,使用ti来表示当前欲进组需求i在第j个属性上的需求能否被组属性所满足。式(4)通过已被满足的属性的权重之和来表示当前需求的总满意度,以其作为判断能否入组的依据。关于式(3)中所提到的群组属性gv,当一个组出现时,我们需要将其内部的各个需求的各项参数指标进行融合调整,来得到整个组的各项指标,将其作为一个大的需求提供给服务商,服务商才能够根据该大需求来提供相应的服务,以此来实现该发明的目的。下面基于步骤5进一步介绍群组属性计算的方法步骤:
[0037]
步骤5.1:当组内暂时仅有一个需求时,该组的各项属性与该需求完全一致;当组内需求个数两个及以上时,假设组属性为gv,组需求个数为gqt,组属性权重为gw,新加入的需求属性为v,需求个数为qt,属性权重为w,满意度阈值为sati,属性种类个数为n。
[0038]
步骤5.2:从1到n遍历gv和v,在每个属性上取两个集合的交集,即gvj=gvj∩vj,j∈[1,n]。当时,跳转至步骤5.3。
[0039]
步骤5.3:群组中的需求个数多的需求种类在群组中所占的比重应当相对而言比较重要,因此我们按照各需求的qt值将它们降序排列。首先将gv置为属性全集,即包含所有可选择的属性,按照排列顺序每个属性依次取交集直至交集为空的上一个交集结果作为该组的gv。
[0040]
步骤5.4:得到gv后根据式(3)和式(4)依次计算各个需求在组里的满意度,当存在需求满意度si达不到满意度阈值sati即si<sati的时候,表示新加进来的需求无法进组,此时将其从组中删除。
[0041]
4.群组属性融合
[0042]
至此,所有需求的群组构建工作完成。此时要做的就是将构成的群组进行属性的融合,即上文所说的将群组变为一个大的需求,从而向服务提供方提出需求,解决前文所说的个人需求难以被满足的问题,同时服务提供方仅需根据这一个大的需求提供服务就能够解决更多用户的需求问题,节约了成本,也让用户满意。该需求能够表达组内所有的需求并且保证每个需求都达到满意度阈值,并且该群组的融合需要遵循以下几个原则:首先,融合后的组需求数量gqt需要等于组内各个需求数量之和;其次,在融合具体属性的时候,应当充分考虑各需求的数量,数量多的需求在考虑时所占的比重要更大;接着,融合包括权重的融合调整,即融合后群组就相当于一个需求,需要有对于各个属性的权重,且权重范围依然是[0,1];最后,由于本发明是以平均组满意度为优化目标,因此需要分别计算每个组的组
满意度,最后除以组数得到平均组满意度来衡量算法的优劣。具体步骤如下:
[0043]
步骤1:设组内有k种需求,每个需求有n个属性,v
ij
表示第i种需求的第j个属性的取值集合,qti表示第i种需求的需求个数,将组内所有的需求按照qt顺序降序排列。
[0044]
步骤2:先将所有组属性设为全集,即gv=e,依据步骤1的排序结果,对各个属性进行取交集运算,即gvj=gvj∩vj,直至取到交集为空的上一个集合。此时的gv就作为该组的需求属性。
[0045]
步骤3:计算群组的总需求个数gqt,从1到n依次对每个需求个数相加,即gqt=gqt+qti。
[0046]
步骤3:计算群组的权重gw。依次遍历各个需求对同一属性的权重,w
ij
表示i需求对于j属性的权重值。从1到n遍历各个属性,再从1到k遍历各个需求,双层循环遍历,得到gwj=gwj+w
ij
*qti/gqt。
[0047]
步骤4:计算组满意度gsat。令gsat=0,设i从1到k,j从1到n,先计算每个需求的满意度sati,每次循环令sati=0,当时,sati=sati+w
ij
,一个需求的所有属性遍历完成后,gsat=gsat+sati*qti,表示需求个数对于权重的影响。进行k次1到n的循环后,最终得到的gsat是组内所有成员的满意度之后,因此需要与总个数相除来得到真正的组满意度,即gsat=gsat/gqt。
[0048]
步骤5:计算平均组满意度。假设最后成组的个数为gnum,依据得到的组满意度,将所有组满意度相加再除以组个数得到最后的平均组满意度。即所有组满意度相加再除以组个数得到最后的平均组满意度。即
[0049]
至此,该发明的核心算法部分已经完成。依据该方法,我们可以从大规模的需求中,依据各需求之间的相似度为各个需求提供分组,并尽可能地使得分组之后的平均组满意度高,在满足用户需求的同时兼顾了用户体验。
附图说明
[0050]
图1为摘要流程图
[0051]
图2为需求模型描述的示意图
具体实施方式
[0052]
为了更加生动地体现本发明的内容和效果,下面给出一个实例进行具体说明。
[0053]
在本实例中,设定每个需求都有三种属性可供选择,并且每个属性的值域都是[1,2,3,4,5],各需求的属性权重和满意度阈值随机生成。现有10种需求需要融合成组,它们各自的具体属性情况如下表所示。
[0054][0055]
为了实现最大平均组满意度的优化目标,首先计算出每个需求的属性个数比上该需求的满意度,按照该值降序排列,依据上面的数据能够得到一个序列(6,1,5,9,4,3,2,8,10)。接着计算各需求之间的两两相似度。依照序列顺序,首先从第6个需求开始进行群组构建,以第六个需求为核心需求创建群组1,接着依据相似程度来构建组。通过计算,与需求6相似度最高的需求为需求9,尝试将需求9进组,通过成组条件的判断能够得到需求9进组成功,此时组1内有需求(6,9)。按照与需求6的相似度递减排序序列继续进行成组,接下来选择的需求是需求2,尝试将需求2入组,通过成组条件的判断能够得到需求2进组成功,此时组1内有需求(6,9,2)。接着选择需求3,通过成组条件的判断发现需求3进组失败,此时终止该组的成组构建,最终组1结果就是(6,9,2)。接着从一开始的序列中继续依次选择当前列表中的第一个未成组的需求来继续构建组,重复上述步骤最终将会得到3组分组结果。
[0056]
最后对构造完毕的组进行各项属性的计算,最终成组情况如下表所示。
[0057][0058]
最后通过计算能够得到平均组满意度为0.9999。由此可见,本发明的方法能够将不同种类的用户需求以相似度为基础,以平均组满意度为目标尽可能地构建成组,通过结果能够反映出平均组满意度的这个目标基本能够达到。前述对本发明的相关描述并非想将本发明限定为所公开的精确形式。对实例进行精确描述的目的在于更好的解释本发明的实现原理及实际应用,使得相关领域的技术人员能够更好的实现本发明,并利用根据本不同的实例方案进行不同的改变和抉择。
[0059]
综上所述,本发明提供了一种针对需求的成组聚类融合方法,最终聚类融合所构建的群组以最大平均组满意度为目标,并且具备一定的相似度,并且本发明能够将融合后的组属性进行融合,这在实际情况中表示为将不同用户的需求融合成一个总需求,该需求能够满足组内所有需求成员的属性需求,并且符合每个用户的满意度阈值。相较于使用本方法前,服务商提供的服务不可能满足所有用户的需求,因此会导致用户对其服务不满意,从而流失用户;应用本方法后,从服务提供商的角度来看,服务提供商能够根据成组后的需求更好地提供服务,从而实现一种服务能够满足尽可能多的用户;从用户角度而言,用户的需求能够更容易得到响应,从而有效解决了服务需求与服务提供不平衡的问题,为服务计算模式的发展提供了更好的发展空间。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1