对FPgrowth算法的一种改进算法Word下载.docx

上传人:b****3 文档编号:17895840 上传时间:2022-12-11 格式:DOCX 页数:6 大小:17.80KB
下载 相关 举报
对FPgrowth算法的一种改进算法Word下载.docx_第1页
第1页 / 共6页
对FPgrowth算法的一种改进算法Word下载.docx_第2页
第2页 / 共6页
对FPgrowth算法的一种改进算法Word下载.docx_第3页
第3页 / 共6页
对FPgrowth算法的一种改进算法Word下载.docx_第4页
第4页 / 共6页
对FPgrowth算法的一种改进算法Word下载.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

对FPgrowth算法的一种改进算法Word下载.docx

《对FPgrowth算法的一种改进算法Word下载.docx》由会员分享,可在线阅读,更多相关《对FPgrowth算法的一种改进算法Word下载.docx(6页珍藏版)》请在冰豆网上搜索。

对FPgrowth算法的一种改进算法Word下载.docx

  FP-growth算法开辟了有效挖掘频繁模式的新途径。

然而,它的时间和空间效率还不足够高,仍可以进一步改进,本文提出一种称为NFP-growth算法的新方法。

  

  1NFP-growth算法的设计与实现

  1.1对FP-Tree头表结点数据结构的改进

  在FP-Tree算法中,当每次要插入一个新的树节点时,需要在FP-tree中找与头表有相同的item_name的项,必须回到头表中,一个一个找出最后一个同名节点的node_link域后,再将新节点加入。

这种做法每次有一个新的树节点出现时就必须从头表第一个开始找,直到找出最后一个,数据量大时效率明显不佳。

  要解决这个问题,可以考虑在头表节点中加上一个tail域,用来记录每一项的当前最后一个结点,这样当加入一个新节点时就不需要循序地一个一个找到最后一个node_link,而可以直接将新增加的项放到tail域中即可。

  项目头表中增加了tail域后,headertable的数据结构变化如图1所示。

  Item_name:

countTail_linkNode_link

  图1数据结构变化

  定义如下:

  HTable:

  Typedefstruct

  {

  intitem_name;

  unsignedintcount;

//项目所出现的次数

  structnode*node_link,//指向头表中相同项目的node_link的下一个节点

  structnode,tail_link//记录头表中相同项目的node—link的最后一个节点所在位置

  }//HTable;

  算法的变化:

  只要在FP-growth算法中有关建立头表链接部分加入下边程序即可:

  if(headertable.tail=nul1)

  headertable.node-link=新增节点;

  headertable.tail-link=新增节点;

  }

  else

  {headertable.Node-link所指node->

next=新增节点;

  headertable.Tail-link=新增节点;

  

  1.2对频繁模式树构造的改进

  NFP-growth算法与原始FP-growth算法具有相似的算法流程结构,不同之处在于改进了结点结构,引进了标记位,在挖掘频繁模式时不生成条件FP-树,而且在对标记位进行计数时,不再采用原来的递归的、效率低的方法,而是引用了数组指针的概念。

  

(1)NFP-growth算法改进的节点数据结构。

  Typedefstructfptnode{

  Structfptnode*link;

//*link是指向具有相同item的节点的指针;

  Structfptnode*Parent;

//*Parent是指向父节点的指针或左子女的指针;

  intnode_name;

//node_name是存放item值(项目名)的数据;

  intnode_count;

//node_count是记录item在事务对象中出现的计数;

  intnode_mark:

//node_mark用来标识当前节点是否是需要处理的节点;

  intnum//num用来标识一次回溯路径中item出现的次数;

  }FPTNODE;

  

(2)NFP-growth算法中生成NFP-树的NFP-树的算法描述。

  算法:

NFP-树构造

  输入:

事务数据库D,最小支持度min_sup

  输出:

FP-树

  方法:

  ①扫描数据库D得到频繁项1-项集,按照支持度从大到小排列,得到频繁项目序列L;

  ②创建NFP-Tree:

  For数据库中的每个事务tdo

  将NFP-Tree中的current指针初始化,使其指向根节点T;

  将事务t中的满足最小支持度计数要求的项按支持度从大到小放到队列Q中:

  For队列Q中的每一个项Ido

  NFP_tree_insert(I);

//在current指针所指节点的子女中插入I

  ③按层次遍历整棵NFP-tree,把每个节点C及其父节点P的指针作为一个队列元素放入队列Q中:

  ④For队列Q中每个元素qdo

  q.c^node_parent:

=q.p;

//翻转父节点指针

  函数():

  FunctionNFP-tree_insert(ID)//在NFP-Tree中插入一个值为ID的节点

  Ifcurrent指针指向的节点没有子女节点then

  新建一个值为ID的NFP-tree节点node,current.node_parent=node;

  修改current指针,使其指向新节点node;

  Elseifcurrent指针指向节点的子女节点中有值为ID的节点then

  该子女的节点的node_count值增加为1并修改current指针指向它;

  Else

  新建一个值为ID的NFP_tree节点的node;

  在该节点子女的node_link链上添加node并使其count值为1;

  修改curent指针,使其指向新节点node;

  (3)调用NFP-growth算法对生成的NFP-树进行频繁模式挖掘。

  Mine_NFP-tree操作如下:

  Proceduremine_NFP-tree(Tree,α)

  {

  for指针数组的item_Point[n]的每一项,在Tree的项头表中

{

  while(item_point[n]!

=null)

  Ifmarkofitem_point[n]is0

  Item_point[n]=item_point[n]->

link;

  elsedo

  产生一个模式β=item_point∪item_point[n],其支持度:

  support=item_point[n].supprot;

  构造β的条件NFP-树(Mark_tree):

  ①回溯β的前缀路径,设置num的值。

  后缀节点的nmu=count;

  回溯节点的num值为其孩子节点的num之和

  ②在回溯的前缀路径中,判断具有相同item的所有节点的num之和NUM,并与最小支持度比较。

  If(NUM>

=support)setthemarksoftheseitemstol:

  elsesetthemarksoftheseitemsto0

  item-point[n]=item-point[n]->

link;

  Iftree含单个路径Pandmarkislthen

  for路径P中每个mark值为1节点的每个组合(记作β)

  产生模式β∪item_point,其支持度support=β中节点的最小支持度

  }

  End

  2NFP-growth算法与FP-growth算法性能测试

  2.1实验环境与实验数据源

  本实验是在一台CPU为P4,内存为256M,硬盘80G的兼容机上完成的,程序采用javascript编制。

  该数据集包含2000个事务,10个属性,是一个关联度一般的数据集,原始数据集大小约为148K。

  2.2实验结果

  实验结果见表1和图2(图2是表1的图形表示)

  表1FP-growth和NFP-growth执行效率比较

  支持度频繁项目数FP-growth执行时间(s)NFP-growth执行时间(s)耗费时间比例

  100175623.1242.2011.42:

1

  3005000.8450.7351.57:

  5001100.6810.6231.03:

  100060.4890.4600.96:

  3结束语

  通过对表1和图2的分析可以看出,随着支持度不断

  减小,频繁项目数不断增加,NFP-growth算法的执行效率比FP-growth算法大得更多,可见NFP-growth算法的性能优于FP-growth算法。

  图2FP-growth和NFP-growth执行效率比较的图形表示

  参考文献:

  [1]毛国君,段立娟.数据挖掘原理与算法[M].北京:

清华大学出版社,2005.

  [2]维普资讯[EB/OL].

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1