一种基于兴趣度度量的序列模式挖掘方法与流程

文档序号:12121777阅读:337来源:国知局
一种基于兴趣度度量的序列模式挖掘方法与流程
本发明涉及数据挖掘
技术领域
,特别是一种基于兴趣度度量的序列模式挖掘方法,可用于发现人们潜在的感兴趣的序列模式。
背景技术
:序列模式挖掘是数据挖掘领域中一个重要研究方向,其主要是在有序的数据库中发掘有趣的序列模式(子序列)。序列数据库是指数据库中的数据有顺序的排列。序列模式挖掘在数据挖掘中占有重要的地位,可以广泛应用于分析序列数据库中隐藏的有价值的信息,例如分析网站点击流,蛋白质序列,医学数据,生物数据,在线学习数据等。传统的序列模式挖掘方法基本都是研究如何高效快速地发现频繁序列,以改变数据的存储格式,提高算法的搜索效率为主,它们大多数都以绝对或相对频度为依据。然而,在实际应用中,出现频度高的序列模式未必是有趣的;反之,有趣的序列模式未必出现频度就一定高。此外,由于许多模式的频度在真实数据中可以简单解释为偶然性,则频度指标(如支持度)会导致其他问题的出现。例如,当序列足够长的时候,任何独立事件的序列(然后并不有趣的)将会变得频繁;而且对于序列模式,项的顺序是决定这个模式是否有趣的关键,那么当两个序列具有相同的项,但项的顺序不同时,如果它们的频度也相同,就难以判断哪一种更加有趣。这些问题大大地降低了序列模式的挖掘效率,使得结果模式中混有没有价值的模式,需要用户自己通过实际情况区分,增加了用户的工作量,降低了算法的实用性。可见,仅仅依赖频度,难以发现合适的序列模式结果。目前已有的公认的序列模式挖掘算法包括:GSP,SPADE,SPAM,PrefixSpan以及它们的改进算法,均以频度指标为依据挖掘序列模式,虽然在时间效率等方面不断改进,但本质上难以突破前述限制。技术实现要素:本发明要解决的技术问题为:使用兴趣度度量作为序列模式挖掘结果的评判依据,减少算法输入参数的数量,提高数据挖掘的效率。本发明采取的技术方案具体为:一种基于兴趣度度量的序列模式挖掘方法,包括以下步骤:步骤一,设定结果集合Top-K所包含的序列模式数量k值,和待挖掘的原始序列数据集D;步骤二,读入原始序列数据集内容,按照原始序列数据集中项目元素的支持度排序,生成项目元素集合IQ;步骤三,以IQ作为备选元素集,对项目元素集合IQ中的各元素进行1次以上扩展,每次扩展分别生成已扩展数据序列;所述已扩展数据序列中包括至少2个分别包含于IQ中的数据元素;步骤四,计算各已扩展数据序列的兴趣度度量值,根据各已扩展数据序列的兴趣度度量值和k值,更新结果集合Top-K中的序列;步骤五,输出Top-K结果序列集合的内容。本发明在应用时,仅仅需要用户提供目标结果的最大数量,降低了用户要了解应用背景的要求,方便了用户对算法的使用。在给定k值以后,本发明算法能够挖掘出Top-K条结果序列模式,同时,序列模式结果可按照兴趣度度量值由大到小顺序排列,便于用户采纳使用。优选的,本发明步骤一中,按照原始序列数据集中项目元素的支持度从大到小排序,生成项目元素集合IQ。项目元素的支持度计算为现有技术,按照支持度大小排序可提高数据挖掘的效率。本发明中,步骤三包括:初始化循环变量i,依次令i=i+1,每次循环分别从IQ中取出第i位置的项目元素itemi,形成一个元素个数为1的待扩展序列项集IR;直至IQ中的所有元素皆已被取出;将IQ与每次循环得到的待扩展序列项集IR作为输入参数,利用扩展算法对IR进行扩展。进一步的,本发明上述扩展算法包括步骤:(1)基本数据信息输入:(1.1)读入当前待扩展序列项集IR=<itemi>;(1.2)读入当前的备选项集IQ={item1,item2,…,itemn};(2)初始化局部变量:(2.1)初始化新的备选项集IQNew为空;(2.2)初始化兴趣度阈值minsup=0;(3)从备选项集IQ中逐个选取各备选项目,将其作为后缀元素放入待扩展序列项集IR中,形成新的序列项集IRNew,利用兴趣度算法对IRNew计算兴趣度并与当前兴趣度阈值minsup比较,如果大于minsup,则将当前IRNew中的数据序列更新到Top-K中,包括以下步骤:(3.1)初始化循环变量j=1,从备选项集IQ中取出项目元素itemj,并作为后缀元素添加到项集IR中,形成IRNew=<itemi,itemj>;(3.2)将扩展后的项集IRNew=<itemi,itemj>作为输入参数,利用兴趣度算法,计算项集IRNew=<itemi,itemj>的兴趣度;(3.3)如果IRNew=<itemi,itemj>的兴趣度大于当前兴趣度阈值minsup,则执行步骤(3.3.1),否则执行步骤(3.4);(3.3.1)将<itemi,itemj>更新到Top-K结果集合中;(3.3.2)将当前Top-K里面所有的元素进行按兴趣度度量值从大到小排序;(3.3.3)如果结果集合中的元素数量大于k,则仅仅保留前k个项目,同时将此时Top-K中最小的兴趣度数值赋予minsup做为当前最小支持度兴趣度阈值;(3.3.4)将IRNew=<itemi,itemj>作为输入参数,利用兴趣度算法,计算IRNew的上界值UBval;计算上界值可用于挑选出能够继续往后进行扩展的序列。(3.3.5)将项目元素itemj与当前IRNew的UBval值添加到新的备选项集IQNew集合中得到IQNew={itemj};(3.4)检查项目itemj是否是备选项集IQ={item1,item2,…,itemn}中的最后元素,如果不是,则令j=j+1,转至步骤(3.1);当j>n,此时的IQNew中为所有能够继续放在新的备选项集里面,并且之后可以用于作为后缀添加的项,所述新的备选相集即IQNew={item1,item2,…,itemm},m小于等于n,执行步骤(4);(4)将新的IQNew={item1,item2,…,itemm}按照对应的上界值UBval进行从大到小排序;(5)获取初始待扩展序列IR={itemi},将排序后的IQNew={item1,item2,…,itemm}中的元素逐个作为后缀元素添加至IR得到新的待扩展序列IRCandidate;之前的都是准备工作,目的是将拥有高兴趣度的序列先进行扩展。将新的待扩展序列项集IRCandidate与新的备选项集IQNew={item1,item2,…,itemm}做为输入参数,转至步骤(3),以递归调用扩展算法本身,包括以下步骤:(5.1)从排序后的备选项集IQNew中依次取出第ix个项目元素itemix,并追加到初始的序列项集IR中,则新的待扩展序列IRCandidate={itemi,itemix};(5.2)从新的备选项集IQNew中取出当前项itemk,将其作为后缀添加进新的待扩展序列IRCandidate中得到IRCandidateNew={itemi,itemix,itemk},将扩展后的项集IRCandidateNew={itemi,itemix,itemk}作为输入参数,利用兴趣度算法,计算项集IRCandidateNew的兴趣度;(5.3)根据{itemi,itemix,itemk}的兴趣度度量值与兴趣度阈值的比较结果更新Top-K结果序列;具体参照步骤(3.3);(5.4)检查项目itemk是否是备选项集IQNew中的最后元素,如果不是,则使得k=k+1,然后转至步骤(5.2);否则,执行步骤(6);(6)执行这一步说明备选项集IQNew中取出当前项itemk的循环结束,此时检查项目itemix是否是IQNew的最后元素,如果不是,则令ix=ix+1,然后转至步骤(5.1),例如取出第ix+1项itemix+1,追加到初始的序列项集IR中,形成新的待扩展序列IRCandidate={itemi,itemix+1}。之后继续(5.2)。如果不是则跳出循环,进行步骤(7);(7)本段程序正常结束,退出。本发明步骤四中,利用兴趣度算法计算已扩展数据序列的兴趣度度量值,所述兴趣算法包括以下步骤:(1)读入待计算兴趣度的序列S;(2)初始化局部变量:(2.1)计算原始样本库中,序列项集S在所有序列中出现的次数,即S的样本支持度sup(S);(2.2)初始化兴趣度Interest的值为0;(3)计算序列S的期望支持度ExpSupport(S),包括步骤:(3.1)将序列项集S中的元素进行分割,形成二元分区SLeft和SRight;对于分割后形成集合PartitionSet,其中的元素由多组组成元素不同的{SLeft,SRight}构成;每次分割总是得到二元分区,例如,如果是S=<a,b,c>,那么分割后得到三种可能,PartitionSet为{[SLeft=<a>SRight=<b,c>],[SLeft=<b>SRight=<a,c>],[SLeft=<c>SRight=<a,b>]}。(3.2)针对集合PartitionSet中的每一组的二元分区,在不改变分区元素顺序的条件下进行组合,得到多种组合后的项集S’的集合CompositionSet,计算CompositionSet中每一种项集S’中各元素序列的支持度,对每一种项集S’中元素序列的支持度求取平均值sup(S’);具体组合流程,举例如下:(3.2.1)例如取出PartitionSet中的二元分区[a,<b,c>],将SLeft和SRight在不改变分区元素顺序的条件下进行组合,原S=<a,b,c>,分区<b,c>的顺序不变,b在c前面,得到3种S’的情况{<a,b,c>,<b,a,c>,<b,c,a>};二元分区[b,<a,c>],原S=<a,b,c>,分区<a,c>的顺序不变,a在c前面,得到3种S’的情况{<b,a,c>,<a,b,c>,<a,c,b>};二元分区[c,<a,b>],原S=<a,b,c>,分区<a,b>的顺序不变,a在b前面,得到3种S’的情况{<c,a,b>,<a,c,b>,<a,b,c>}。(3.2.2)进行组合后,得到三种项集S’的集合CompositionsSet:第一种{<a,b,c>,<b,a,c>,<b,c,a>},第二种{<b,a,c>,<a,b,c>,<a,c,b>},第三种{<c,a,b>,<a,c,b>,<a,b,c>}。之后分别计算三种集合CompositionsSet中每个项集S’的支持度sup(S’),例如第一种,就是sup<a,b,c>,sup<b,a,c>,sup<b,c,a>(3.2.3)计算三种集合CompositionsSet中所有项集S’的支持度的均值,例如第一种mean{sup<a,b,c>,sup<b,a,c>,sup<b,c,a>};(3.2.4)检查条件:当前元素集合{SLeft,SRight}是否为集合PartitionSet的最后一个元素。如果{SLeft,SRight}不是最后一个元素,表示PartitionSet还有元素没有处理,则继续执行(3.2.1)进行分区组合;否则说明像例子中的三种情况全部做完,执行(3.3);(3.3)计算期望支持度ExpSupport(S),即所有二元分区组合后所得到的支持度均值的最大值;例子中就是ExpSupport(a,b,c)=max([a<b,c>]mean(sup<a,b,c>,sup<b,a,c>,sup<b,c,a>),[b<a,c>]mean(sup<b,a,c>,sup<a,b,c>,sup<a,c,b>),[c<a,b>]mean(sup<c,a,b>,sup<a,c,b>,sup<a,b,c>),)(4)计算兴趣度度量值Interest=sup(S)-ExpSupport(S);(5)将序列项集S的兴趣度Interest作为兴趣度算法的结果返回;(6)本段程序正常结束,退出。进一步的,本发明兴趣度算法还包括计算序列S的超集兴趣度上界值UBval,包括以下步骤:(1)定义序列S的任意扩展序列为记为S*,其兴趣度度量值为leverage=sup(S*)-ExpSupport(S*);解释上界值:序列S任意后缀扩展(添加一个项作为S的后缀),记为S*,它的兴趣度度量值为leverage=sup(S*)-ExpSupport(S*)。求该式的上界值时,由于①sup(S*)要取得最大;②Expsupport(S*)要取得最大,而项集超集的支持度不大于项集本身支持度,即sup(S*)≤sup(S),而Expsupport(S*)≥0,所以leverage(S*)≤sup(S)-0=sup(S)。这样就能在步骤三中(3.3.4)中,过滤掉一些S小于minsup不能够放入Top-K中的序列,那么接下来对S的扩展即S的超集就都不符合大于minsup的要求,就不用继续往下扩展,所以(3.3.5)中的IQNew只有能够继续做为后缀进行扩展的项,起到了剪枝的作用,提高程序效率。(2)得出序列S的上界值UBval=sup(S);(3)将序列项集S的上界值作为UBval结果返回;(4)本段程序正常结束,退出。为了提高程序挖掘的效率,本发明步骤三将IQ与每次循环得到的待扩展序列项集IR作为输入参数,利用扩展算法对IR进行扩展之前,还包括辅助程序,辅助程序包括以下步骤:(1)对于元素集合IQ中的每个元素进行扩展,将符合要求的项集更新到Top-K中,提前预充满Top-K项集,具体流程如下:(1.1)用n表示元素集合IQ中的元素个数,根据公式n*(n-1)/k是否大于10来进行,如果大于10,那么进行步骤(2),如果小于10,那么进行步骤(3)。(2)每个序列用2个项来预充满Top-K:(2.1)初始化循环变量i=1,循环地依次令i=i+1,每次循环分别从元素集合IQ中取出项itemi,形成待扩展序列项集IR=<itemi>;直至i>n则结束循环;(2.2)对于每个待扩展序列项集IR=<itemi>,初始化循环变量j=1,循环地依次令j=j+1,每次循环分别从元素集合IQ中取出项itemj,加入待扩展序列项集中IR=<itemi,itemj>;直至j>n则循环结束;(2.3)对每个扩展后的序列项集IR=<itemi,itemj>计算兴趣度度量值,若兴趣度量值大于当前的兴趣度阈值minsup,将序列<itemi,itemj>放入Top-K中;然后转至步骤(4);(3)每个序列用3个项来预充满Top-K:(3.1)初始化循环变量i=1,循环地依次令i=i+1,每次循环分别从元素集合IQ中取出项itemi,形成待扩展序列项集IR=<itemi>;直至i>n则结束循环;(3.2)对于每个待扩展序列项集IR=<itemi>,初始化循环变量j=1,循环地依次令j=j+1,每次循环分别从元素集合IQ中取出项itemj,加入待扩展序列项集中得到IR=<itemi,itemj>;直至j>n则循环结束;(3.3)对于每个待扩展序列项集IR=<itemi,itemj>,初始化循环变量k=1,循环地依次令k=k+1,每次循环分别从元素集合IQ中取出项itemk,加入当前待扩展序列项集中得到IR=<itemi,itemj,itemk>;直至k>n则循环结束;(3.4)对于扩展后的每个序列项集IR=<itemi,itemj,itemk>计算兴趣度度量值interest,若兴趣度量值大于当前的兴趣度阈值minsup,则将序列<itemi,itemj,itemk>放入Top-K中;然后转至步骤(4);(4)输出Top-K中的内容。辅助程序的作用是:将其放在扩展程序前面执行,可预先进行简单的扩展,并进行计算兴趣度度量值,将大于最小支持度的先预冲进Top-K,这样在之后的主程序扩展中,得到的序列发现Top-K中没有就不用继续往下扩展,即提高了扩展效率和数据挖掘效率。在主程序进行扩展算法之前已运行过辅助程序的基础上,扩展算法中,步骤(3.1)还包括:将形成的扩展后序列IRNew=<itemi,itemj>与当前Top-K中的序列内容进行比较,判断序列<itemi,itemj>是否已存在于Top-K中,若存在则转至步骤(3.2),若不存在,则令j=j+1,形成新的扩展序列IRNew=<itemi,itemj>,然后转至步骤(3.2)。有益效果本发明提出一种序列的期望支持度,认为期望支持度与实际观察支持度的差值越大,则认为序列越有趣,然后使用兴趣度度量作为序列模式挖掘结果的评判依据,提高了挖掘结果的实用性;在算法实用过程中,仅仅需要用户指定所需结果的数量,减少了算法输入参数的数量,方便用户使用;算法得到的结果频繁序列按照兴趣度度量由大到小自动排序,减少了用户对结果的选择过程,提高了算法的实用性和适用性。附图说明图1所示为本发明方法的总流程示意图;图2所示为本发明主干程序流程图;图3所示为本发明扩展算法流程图;图4所示为本发明序列模式兴趣度算法流程图。具体实施方式以下结合附图和具体实施例进一步描述。参考图1,本发明基于兴趣度度量的序列模式挖掘方法,包括以下步骤:一种基于兴趣度度量的序列模式挖掘方法,包括以下步骤:步骤一,设定结果集合Top-K所包含的序列模式数量k值,和待挖掘的原始序列数据集D;步骤二,读入原始序列数据集内容,按照原始序列数据集中项目元素的支持度排序,生成项目元素集合IQ;步骤三,以IQ作为备选元素集,对项目元素集合IQ中的各元素进行1次以上扩展,每次扩展分别生成已扩展数据序列;所述已扩展数据序列中包括至少2个分别包含于IQ中的数据元素;步骤四,计算各已扩展数据序列的兴趣度度量值,根据各已扩展数据序列的兴趣度度量值和k值,更新结果集合Top-K中的序列;步骤五,输出Top-K结果序列集合的内容。本发明在应用时,仅仅需要用户提供目标结果的最大数量,降低了用户要了解应用背景的要求,方便了用户对算法的使用。在给定k值以后,本发明算法能够挖掘出Top-K条结果序列模式,同时,序列模式结果可按照兴趣度度量值由大到小顺序排列,便于用户采纳使用。实施例◆主程序参考图2,本发明方法的主体结构流程为:(1)基本数据信息输入:(1.1)用户指定结果序列模式集合中序列元素的最大数量k;(1.2)用户指定需要进行挖掘的序列数据集D;(2)数据预处理:(2.1)初始化Top-K结果序列集合为空;(2.2)读入序列数据集D中的数据元素;(2.3)将序列数据集D中出现的元素,按照元素的支持度从大到小排列,形成元素集合IQ;(3)执行Bootstrap辅助程序,对Top-K集合进行预充;(4)以IQ作为备选元素集,对项目元素集合IQ中的各元素进行1次以上扩展,每次扩展分别生成已扩展数据序列,根据兴趣度度量值和k值,将已扩展数据序列更新到Top-K结果序列集合中;步骤包括:(4.1)从元素集合IQ中取出第i位置的项目itemi,形成待扩展序列项集IR=<itemi>;将元素集合IQ作为备选元素集;(4.2)将待扩展序列项集IR和备选项集IQ作为参数,调用图3所示的扩展算法,对待扩展序列项集IR进行扩展,以及利用图4所示的兴趣度算法计算扩展后序列的兴趣度度量值;将计算出的兴趣度度量值与当前minsup值进行对比,若大于minsup值,则将相应序列更新入Top-K中,更新Top-K结果序列的内容;每次更新Top-K内容时,分别将Top-K中的序列按照兴趣度度量值从大到小排列,仅保留前k个序列;并将此时Top-K中序列的最小的兴趣度度量值赋予minsup作为当前兴趣度阈值;(4.3)检测IQ中的所有项目是否皆执行过步骤(4.1)和步骤(4.2),若存在未执行的项目,则重复步骤(4.1)至(4.2),否则执行步骤(5);(5)输出Top-K结果序列集合中的数据。◆Bootstrap辅助程序Bootstrap辅助程序的作用是:将其放在扩展程序前面执行,可预先进行简单的扩展,并进行计算兴趣度度量量,将大于最小支持度的先预冲进Top-K,这样在之后的主程序扩展中,得到的序列发现Top-K中没有就不用继续往下扩展,即提高了扩展效率和数据挖掘效率。Bootstrap辅助程序的具体步骤为:(1)初始化兴趣度阈值minsup;(2)对于元素集合IQ中的每个元素进行扩展,将符合要求的项集更新到Top-K中,提前预充满Top-K项集,具体流程如下:(2.1)用n表示元素集合IQ中的元素个数,由于n*(n-1)是n个要素两两组合的所有可能情况,那么如果这个值本身就很大了,Bootstrap程序就会需要很长时间,就不做三项结合的情况了。所以根据公式n*(n-1)/k是否大于10来决定是两项组合还是三项组合。如果大于10,那么进行步骤(3),如果小于10,那么进行步骤(4)。(3)每个序列用2个项来预充满Top-K:(3.1)初始化循环变量i=1,循环地依次令i=i+1,每次循环分别从元素集合IQ中取出项itemi,形成待扩展序列项集IR=<itemi>;直至i>n则结束循环;(3.2)对于每个待扩展序列项集IR=<itemi>,初始化循环变量j=1,循环地依次令j=j+1,每次循环分别从元素集合IQ中取出项itemj,加入待扩展序列项集中IR=<itemi,itemj>;直至j>n则循环结束;(3.3)对每个扩展后的序列项集IR=<itemi,itemj>计算兴趣度度量值,若兴趣度量值大于当前的兴趣度阈值minsup,将序列<itemi,itemj>放入Top-K中;然后转至步骤(5);(4)每个序列用3个项来预充满Top-K:(4.1)初始化循环变量i=1,循环地依次令i=i+1,每次循环分别从元素集合IQ中取出项itemi,形成待扩展序列项集IR=<itemi>;直至i>n则结束循环;(4.2)对于每个待扩展序列项集IR=<itemi>,初始化循环变量j=1,循环地依次令j=j+1,每次循环分别从元素集合IQ中取出项itemj,加入待扩展序列项集中得到IR=<itemi,itemj>;直至j>n则循环结束;(4.3)对于每个待扩展序列项集IR=<itemi,itemj>,初始化循环变量k=1,循环地依次令k=k+1,每次循环分别从元素集合IQ中取出项itemk,加入当前待扩展序列项集中得到IR=<itemi,itemj,itemk>;直至k>n则循环结束;(4.4)对于扩展后的每个序列项集IR=<itemi,itemj,itemk>计算兴趣度度量值interest,若兴趣度量值大于当前的兴趣度阈值minsup,则将序列<itemi,itemj,itemk>放入Top-K中;然后转至步骤(5);(5)输出Top-K中的内容。◆扩展算法参考图3所示,本发明步骤三包含对元素集合IQ中元素的扩展和兴趣度计算,简称为扩展算法,其执行过程中调用图4所示的兴趣度算法。具体步骤包括:(1)基本数据信息输入:(1.1)读入当前待扩展序列项集IR=<itemi>;(1.2)读入当前的备选项集IQ={item1,item2,…,itemn};(2)初始化局部变量:(2.1)初始化新的备选项集IQNew为空;(2.2)初始化兴趣度阈值minsup=0;(3)从备选项集IQ中逐个选取各备选项目,将其作为后缀元素放入待扩展序列项集IR中,形成新的序列项集IRNew,利用兴趣度算法对IRNew计算兴趣度并与当前兴趣度阈值minsup比较,如果大于minsup,则将当前IRNew中的数据序列更新到Top-K中,包括以下步骤:(3.1)初始化循环变量j=1,从备选项集IQ中取出项目元素itemj,并作为后缀元素添加到项集IR中,形成IRNew=<itemi,itemj>;在主程序进行扩展算法之前已运行过辅助程序的基础上,此时Top-K中已经预充有大于初始兴趣度阈值的所有数据序列,此时将IRNew=<itemi,itemj>序列与Top-K中已有的数据序列进行比较,判断IRNew=<itemi,itemj>是否已经存在于Top-K中,若存在则进行步骤(3.2),计算兴趣度度量值进而根据兴趣度度量值更新Top-K序列结果,若不存在则对此序列不再进行其它处理,并令j=j+1,形成新的IRNew=<itemi,itemj>,然后转至步骤(3.2)。(3.2)将扩展后的项集IRNew=<itemi,itemj>作为输入参数,利用兴趣度算法,计算项集IRNew=<itemi,itemj>的兴趣度;(3.3)如果IRNew=<itemi,itemj>的兴趣度大于当前兴趣度阈值minsup,则执行步骤(3.3.1),否则执行步骤(3.4);(3.3.1)将<itemi,itemj>更新到Top-K结果集合中;(3.3.2)将当前Top-K里面所有的元素进行按兴趣度度量值从大到小排序;(3.3.3)如果结果集合中的元素数量大于k,则仅仅保留前k个项目,同时将此时Top-K中最小的兴趣度数值赋予minsup做为当前最小支持度兴趣度阈值;(3.3.4)将IRNew=<itemi,itemj>作为输入参数,利用兴趣度算法,计算IRNew的上界值UBval;计算上界值可用于挑选出能够继续往后进行扩展的序列。(3.3.5)将项目元素itemj与当前IRNew的UBval值添加到新的备选项集IQNew集合中得到IQNew={itemj};(3.4)检查项目itemj是否是备选项集IQ={item1,item2,…,itemn}中的最后元素,如果不是,则令j=j+1,转至步骤(3.1);当j>n,此时的IQNew中为所有能够继续放在新的备选项集里面,且之后可以用作后缀添加的项,IQNew={item1,item2,…,itemm},m小于等于n,执行步骤(4);(4)将新的IQNew={item1,item2,…,itemm}按照对应的上界值UBval进行从大到小排序;(5)获取初始待扩展序列IR={itemi},将排序后的IQNew={item1,item2,…,itemm}中的元素逐个作为后缀元素添加至IR得到新的待扩展序列IRCandidate;之前的都是准备工作,目的是将拥有高兴趣度的序列先进行扩展。将新的待扩展序列项集IRCandidate与新的备选项集IQNew={item1,item2,…,itemm}做为输入参数,转至步骤(3),以递归调用扩展算法本身,包括以下步骤:(5.1)从排序后的备选项集IQNew中依次取出第ix个项目元素itemix,并追加到初始的序列项集IR中,则新的待扩展序列IRCandidate={itemi,itemix};(5.2)从新的备选项集IQNew中取出当前项itemk,将其作为后缀添加进新的待扩展序列IRCandidate中得到IRCandidateNew={itemi,itemix,itemk},将扩展后的项集IRCandidateNew={itemi,itemix,itemk}作为输入参数,利用兴趣度算法,计算项集IRCandidateNew的兴趣度;(5.3)根据{itemi,itemix,itemk}的兴趣度度量值与兴趣度阈值的比较结果更新Top-K结果序列;具体参照步骤(3.3);(5.4)检查项目itemk是否是备选项集IQNew中的最后元素,如果不是,则使得k=k+1,然后转至步骤(5.2);否则,执行步骤(6);(6)执行这一步说明备选项集IQNew中取出当前项itemk的循环结束,此时检查项目itemix是否是IQNew的最后元素,如果不是,则令ix=ix+1,然后转至步骤(6.1),例如取出第ix+1项itemix+1,追加到初始的序列项集IR中,形成新的待扩展序列IRCandidate={itemi,itemix+1}。之后继续(6.2)。如果不是则跳出循环,进行步骤(7);(7)本段程序正常结束,退出。◆兴趣度算法参考图4所示,本发明步骤四的兴趣度算法步骤包括:(1)读入待计算兴趣度的序列S;(2)初始化局部变量:(2.1)计算原始样本库中,序列项集S在所有序列中出现的次数,即S的样本支持度sup(S);(2.2)初始化兴趣度Interest的值为0;(3)计算序列S的期望支持度ExpSupport(S),包括步骤:(3.1)将序列项集S中的元素进行分割,形成二元分区SLeft和SRight;对于分割后形成集合PartitionSet,其中的元素由多组组成元素不同的{SLeft,SRight}构成;每次分割总是得到二元分区,例如,如果是S=<a,b,c>,那么分割后得到三种可能,PartitionSet为{[SLeft=<a>SRight=<b,c>],[SLeft=<b>SRight=<a,c>],[SLeft=<c>SRight=<a,b>]}。(3.2)针对集合PartitionSet中的每一组的二元分区,在不改变分区元素顺序的条件下进行组合,得到多种组合后的项集S’的集合CompositionSet,计算CompositionSet中每一种项集S’中各元素序列的支持度,对每一种项集S’中元素序列的支持度求取平均值sup(S’);具体组合流程,举例如下:(3.2.1)例如取出PartitionSet中的二元分区[a,<b,c>],将SLeft和SRight在不改变分区元素顺序的条件下进行组合,原S=<a,b,c>,分区<b,c>的顺序不变,b在c前面,得到3种S’的情况{<a,b,c>,<b,a,c>,<b,c,a>};二元分区[b,<a,c>],原S=<a,b,c>,分区<a,c>的顺序不变,a在c前面,得到3种S’的情况{<b,a,c>,<a,b,c>,<a,c,b>};二元分区[c,<a,b>],原S=<a,b,c>,分区<a,b>的顺序不变,a在b前面,得到3种S’的情况{<c,a,b>,<a,c,b>,<a,b,c>}。(3.2.2)进行组合后,得到三种项集S’的集合CompositionsSet:第一种{<a,b,c>,<b,a,c>,<b,c,a>},第二种{<b,a,c>,<a,b,c>,<a,c,b>},第三种{<c,a,b>,<a,c,b>,<a,b,c>}。之后分别计算三种集合CompositionsSet中每个项集S’的支持度sup(S’),例如第一种,就是sup<a,b,c>,sup<b,a,c>,sup<b,c,a>(3.2.3)计算三种集合CompositionsSet中所有项集S’的支持度的均值,例如第一种mean{sup<a,b,c>,sup<b,a,c>,sup<b,c,a>};(3.2.4)检查条件:当前元素集合{SLeft,SRight}是否为集合PartitionSet的最后一个元素。如果{SLeft,SRight}不是最后一个元素,表示PartitionSet还有元素没有处理,则继续执行(3.2.1)进行分区组合;否则说明像例子中的三种情况全部做完,执行(3.3);(3.3)计算期望支持度ExpSupport(S),即所有二元分区组合后所得到的支持度均值的最大值;例子中就是ExpSupport(a,b,c)=max([a<b,c>]mean(sup<a,b,c>,sup<b,a,c>,sup<b,c,a>),[b<a,c>]mean(sup<b,a,c>,sup<a,b,c>,sup<a,c,b>),[c<a,b>]mean(sup<c,a,b>,sup<a,c,b>,sup<a,b,c>),)(4)计算兴趣度度量值Interest=sup(S)-ExpSupport(S);(5)将序列项集S的兴趣度Interest作为兴趣度算法的结果返回;(6)本段程序正常结束,退出。进一步的,本发明兴趣度算法还包括计算序列S的超集兴趣度上界值UBval,包括以下步骤:(1)定义序列S的任意扩展序列为记为S*,其兴趣度度量值为leverage=sup(S*)-ExpSupport(S*);解释上界值:序列S任意后缀扩展(添加一个项作为S的后缀),记为S*,它的兴趣度度量值为leverage=sup(S*)-ExpSupport(S*)。求该式的上界值时,由于①sup(S*)要取得最大;②Expsupport(S*)要取得最大,而项集超集的支持度不大于项集本身支持度,即sup(S*)≤sup(S),而Expsupport(S*)≥0,所以leverage(S*)≤sup(S)-0=sup(S)。这样就能在步骤三中(3.3.4)中,过滤掉一些S小于minsup不能够放入Top-K中的序列,那么接下来对S的扩展即S的超集就都不符合大于minsup的要求,就不用继续往下扩展,所以(3.3.5)中的IQNew只有能够继续做为后缀进行扩展的项,起到了剪枝的作用,提高程序效率。(2)得出序列S的上界值UBval=sup(S);(3)将序列项集S的上界值作为UBval结果返回;(4)本段程序正常结束,退出。具体实施例例如有下表所示的15个有顺序的序列,那么按照基于兴趣度度量的序列模式挖掘方法进行挖掘其中有趣的序列过程具体如下:序号序列序号序列序号序列1a,b,c6c,b,a11c,b,a2a,b,c7c,b,a12a,b,c,c,b,a3a,b,c8c,b,a13c,b,a4a,b,c,b,a9a,b,c,b,a14c,b,a5a,b,c,c,b,a10a,b,c,c,b,a15c,b,a以下介绍基于上述待挖掘数据序列利用本发明进行序列模式挖掘的方法步骤:(1)数据输入:首先设定Top-K的k值为10个,表明结果项集中最多只能有10个序列。(2)数据预处理:(2.1)初始化Top-K为空。(2.2)读入数据出现a,b,c三个元素,分别的支持度为sup(a)=sup(b)=sup(c)=15。所以元素集合IQ为{a(15.0),b(15.0),c(15.0)}。排序后还是{a(15.0),b(15.0),c(15.0)}。(3)Bootstrap辅助程序此时有a,b,c三个元素,根据元素个数3*(3-1)/5<10,所以进行Bootstrap辅助程序中的步骤(4),依次得到i=0时,{j=0,k=0<a,a,a>,k=1<a,a,b>,k=2<a,a,c>},{j=1,k=0<a,b,a>,k=1<a,b,b>,k=2<a,b,c>},{j=2,k=0<a,c,a>,k=1<a,c,b>,k=2<a,c,c>}依次i=1依次下去,每得到一个如<a,b,c>,就进行主程序的计算兴趣度度量的调用,结果最终Top-K中只有[<a,b,c>8.0]。(4)扩展过程(4.1)待扩展的IR为<a>,备选项集为IQ={a(15.0),b(15.0),c(15.0)}。<a,a>sup=5,interest=0.0,不放入Top-K,Ubval=5.0>0,将a和Ubval=5.0放入IQNew={a(5.0)};<a,b>sup=8,interest=0.0,不放入Top-K,Ubval=8.0>0,将b和Ubval=8.0放入IQNew={a(5.0),b(8.0)};<a,c>sup=8,interest=0.0,不放入Top-K,Ubval=8.0>0,将c和Ubval=8.0放入IQNew={a(5.0),b(8.0),c(8.0)};IQNew排序后得到{b(8.0),c(8.0),a(5.0)};按序取出IQNew元素加到IR中,得到新的待扩展序列IRCandidate为<a,b>;(4.2)新的待扩展序列IRCandidate为<a,b>,备选IQNew={b(8.0),c(8.0),a(5.0)},开始递归(4.1)步骤如下:<a,b,b>sup=5,interest=5.0,不放入Top-K,Ubval=5.0>0,将b和Ubval=5.0放入IQNew={b(5.0)};<a,b,c>sup=8,interest=8.0,放入Top-K,Ubval=8.0>0,将c和Ubval=8.0放入IQNew={b(5.0),c(8.0)};<a,b,a>sup=5,interest=5.0,不放入Top-K,Ubval=5.0>0,将c和Ubval=5.0放入IQNew={b(5.0),c(8.0),a(5.0)};IQNew排序后得到{c(8.0),b(5.0),a(5.0)};再次按序取出IQNew元素加到IR中,得到新的待扩展序列IRCandidate为<a,b,c>;(4.3)新的待扩展序列IRCandidate为<a,b,c>,备选IQNew={c(8.0),b(5.0),a(5.0)},开始递归(4.1)步骤如下:<a,b,c,c>sup=3,interest=3.0,不放入Top-K,Ubval=3.0>0,将c和Ubval=3.0放入IQNew={c(3.0)};<a,b,c,b>sup=5,interest=5.0,不放入Top-K,Ubval=5.0>0,将b和Ubval=5.0放入IQNew={c(3.0),b(5.0)};<a,b,c,a>sup=5,interest=5.0,不放入Top-K,Ubval=5.0>0,将a和Ubval=5.0放入IQNew={c(3.0),b(5.0),a(5.0)};IQNew排序后得到{b(5.0),a(5.0),c(3.0)};(4.4)IRCandidate为<a,b,c,b>,备选IQNew={b(5.0),a(5.0),c(3.0)}再次递归(4.1)。(4.5)上述过程直到新的IQNew不再有值,则退回上一个循环。比如如果此时(4.4)中<a,b,c,b>这个项对应的IQNew为空,那么退回下一个循环,就是<a,b,c,a>和备选IQNew。(5)所有循环和递归全部做完后输出Top-K结果集。本实施例例结果为<a,b,c>8.0。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1