改进的产品质量异常数据FP-Growth关联分析方法与流程

文档序号:18832959发布日期:2019-10-09 04:04阅读:298来源:国知局
本发明属于工业大数据
技术领域
:,具体涉及产品质量异常数据fp-growth关联分析方法。
背景技术
::我们生活的“大数据时代”,是在信息化时代基础上升级衍变而来的智能化时代。“大数据时代”不再局限于信息共享,而是更加关注于信息的智能化应用。在这个时代,数据已经不是社会生产中无价值的“副产物”了;相反,数据已经成为一种可再生,并且价值巨大的生产资料。海量的数据蕴含了海量的信息,隐藏着巨大的价值,通过对数据的分析挖掘,不仅可以对现存现象进行描述和深度解释,甚至还能预测未来。大数据已经深入到人们生活的方方面面,赋予人们的生活更多的智能性和便利性。多数大型制造企业已经陆续实现了生产的自动化与信息化建设,并在生产制造过程中积累了海量的生产数据,但是这些珍贵的生产数据却没有得到充分的利用。产品的各个环节的生产过程数据与质量检测数据缺乏深入的数据分析与数据挖掘。由于制造大数据蕴含了价值巨大的产品制造与设备运行信息,通过对制造大数据的分析挖掘能够定位质量问题源头、优化工艺流程等。本发明充分利用制造企业各个生产环节的多源异构数据,选用fp-growth关联分析算法[1][2]进行产品质量异常数据关联规则挖掘,并对该方法进行fp-tree数据结构的改进和并行化策略的改进,对生产过程中所产生的产品质量不合格品数据进行追溯分析,为制造企业提供精准的质量异常数据追溯分析方法,实践证明本发明方法能够面向产品质量大数据实现较精确的质量缺陷影响因素关联分析,并且对比传统方法计算效率有较明显的提升。技术实现要素:本发明的目的在于提供一种计算效率高的针对质量异常数据追溯分析的fp-growth关联分析方法,帮助企业高效追溯不合格产品的质量问题环节和可能的生产影响因素。本发明提供的改进的产品质量异常数据fp-growth关联分析方法,首先,使用企业制造执行mes系统中的产品工序生产数据、外观检测/x光检测/动平衡检测数据数据构建的质量分析数据模型,经过数据清洗、属性特征抽签、连续性数据离散化等数据预处理形成质量分析数据集;统计分析加工设备、操作人员、毛坯(原材料)、生产工艺参数与产品质量合格率之间的单因素影响关系;然后,对产品生产质量与生产过程数据执行多因素关联分析,基于fp-growth算法的多因素关联分析挖掘得到一系列关联规则,参见图1。挖掘得到一系列类似a->b的关联规则,其中a代表特征取值集合,b代表产品质量检测结果。由于工业产品质量数据分析情境下,总体平均不合格率偏低,即使生产环节存在问题,产品不合格率也是偏低的。为了防止关联分析模型因为不合格率太低而过滤掉某些重要的关联规则,基于fp-growth算法的多因素关联分析能够通过调整关联分析的支持度与置信度来尽量使挖掘到的关联规则涵盖与产品质量异常的所有相关特征指标,提升关联分析模型的数据挖掘能力。本发明提出的改进的产品质量异常数据fp-growth关联分析方法,包括对fp-tree数据结构的改进、对并行化策略的改进等;具体地,通过给fp-tree中的频繁项头表数据结构增加一个新的字段,构建新的fp-tree数据结构;根据spark的提供的更多类型的操作对并行化策略进行改进,实现各节点负载相对均衡的、效率更高的关联规则挖掘并行化计算。本发明提出的产品质量异常数据fp-growth关联分析改进方法,具体包括两个方面:(1)关于fp-growth算法中fp-tree数据结构的改进fp-growth算法作为非剪枝算法的代表,被广泛应用于挖掘事务数据集;但它对数据集的计算和规模很敏感;在算法运行过程中,需要利用fp-tree构造算法生成一个包含完整频繁项信息的fp树,其中fp树的频繁项头表具有2个属性:item-name和next_node;next_node指向fp树中当前节点的下一个节点;在此过程中,要循环调用insert_tree()算法插入新的树节点,其中有一个步骤就会利用到频繁项头表这一数据结构,把fp树中的每个与项头表具有相同名称的项进行连接;每次执行上述过程时都需要回到项头表的同名头结点,然后从头结点开始遍历,直至最后一个同名节点的域,再把新的节点插入最后一个节点后,进入项头表结构中;可以看出,在构建fp-tree时,项头表这一数据结构的模型会直接影响到fp-growth算法的性能,当数据集的水平或垂直维度较大时,挖掘效率会降低甚至失败;(2)关于fp-growth算法并行化策略改进传统的fp-growth并行化策略是选择一个节点当做主节点,在这个主节点上构建匹配数据集的fp-tree,然后在树的每一个分支上进行并行化频繁模式挖掘;这样做虽然逻辑上清晰,但造成的后果就是,主节点负载压力过大,虽然基于大数据框架能够在一定时间内得到输出结果,不过这个时间很显然是可以被缩短的;由于spark提供了比mapreduce更多类型更方便的操作,所以能够利用这些操作实现每个节点都能相对均衡、效率更高的关联规则挖掘并行化算法。所述fp-tree数据结构改进,具体流程为:频繁项头表的改进在主要体现在一个新增的属性tail_link,项头表的主键不变,还是项目名称item_name。新增属性用于记录每一个数据项当前的最后一个节点。通过这种新的频繁项头表数据结构,执行insert_tree()算法在项头表插入新节点时,就可以避免遍历当前节点的链表使算法效率不佳,直接通过tail_link属性找到表尾进行新节点的插入即可。参见图2。fp-growth算法数据结构改进的核心代码如附件1所示。引入优化后的频繁项头表后,新的fp-tree构造算法如下:fp-tree(d,minsup)输入:原始事务集d,最小支持度minsup;输出:事务集d的fp-tree;(1)扫描事务集d,对频繁项的集合f及其支持度进行计算。按照支持度降序的方式整理集合f,获得频繁项头表h;(2)新建一个fp-tree的根结点r,用null表示;(3)对d中的事务进行trans操作:按照h中的次序对trans中的频繁项进行相应的排序,频繁项表用记作[p|p],第一个元素用p表示,剩余元素的表用p表示。随后执行函数insert_tree([p|p],r)。执行函数insert_tree([p|p],t)的具体流程为:(a)假如t的子节点n,满足n.item-name=p.item-name,那么,n的计数相应增加1;(b)假如t的子节点n,不满足n.item-name=p.item-name,则对新结点n进行创建,将其计数设置1,并和其父结点t进行链接,在与它同名的频繁项头表的tail_link属性中找到当前最末节点,添加此新节点n,并设新节点n为新的tail_link;(c)如果p非空,递归地调用函数insert_tree(p,n)。利用上述优化后的fp-tree数据结构,建树过程的效率明显提升。所述并行化策略改进,具体流程如下。(1)将原始事务集分布到rdd中。由于spark的并行计算是以rdd为基础,所以,首先把原始事务集转存在rdd上,并用trans来表示。(2)并行计算频繁1-项集。通过两组flapmap和reducebykey操作获得item_list数据集,该数据集记录了原始事务集中存在的所有项和其对应的支持度,形如<项,项的支持度计数>。另外,还要对item_list执行collect、toarray两个操作,该数据集就能够以list数据结构集合的方式存在,同时,对以上所有项的支持度计数进行降序排序,并将支持度不满足minsup的项删除,得到f_list集合;参见图4。(3)数据分组;在数据分组前,首先映射f_list中的每一项得到新的集合f_map,该集合记录f_list每个频繁1-项集的位置,便于后续操作,其中项名就是f_map中的key值,该项在f_list中的位置就是f_map中的value值;利用f_map重新编码事务集trans,并按照降序的顺序对编号进行排列,同时,将无法变为序号的非频繁项删除,获得集合trans_list;该数据集的形式为<tran_list,value>,tran_list作为key以list[int]的数据结构存储了重新编码并排序后的每条事务,value值不变,依旧表示当前事务出现的次数;通过trans_list,能够确保并行化执行的频繁模式挖掘不会出现遗漏或者重复的情况;接着将f_map分组,组的个数为gnum,用唯一的组号标识每个事务组,itemgroup_list表示分组的结果;然后是对trans_list集合的分组,分组策略是按照上述得到的itemgroup_list将含有对应事务项的所有事务划分到相应的组中,需要对其中的每个tran_list从末端开始向首部进行遍历,计算每个tran_list[i]/g_size的值,即为当前事务所属的组号groupid,需要注意的是,如果当前得到的组号已经在之前的循环中出现,意味着当前事务已被分配到相应的组中,为了防止事务的划分冗余,需要跳出当前循环,继续往前遍历,计算下个groupid;如果得到的组号第一次出现,那么就需要把当前的事务先截取i及其之前的片段后分配到该组中,得到集合group_list,该rdd存储了所有的组号groupid和当前组号下的所有事务及出现次数,即<组号groupid,list(<事务k划分到该组的部分,事务k出现次数>,……)>;参见图5。(4)并行化频繁模式挖掘;对于group_list中的每个分组,要经过flatmap操作,执行fp_growth()函数挖掘各个分组的频繁模式,包括以下三步:建树、单路径处理和频繁模式递归挖掘;其中:建树过程采用如下的策略进行剪枝:对于所有小组fp-tree中存在的项集,如果其存在频繁1-项集达不到minsup的要求,则以其为前缀的后续节点的支持度在该路径下必然不能够满足minsup的要求,需要剪去这部分路径,通过这样的方式,能够减少算法挖掘的次数,而且不会影响挖掘结果;单路径处理分为两种情况,递归挖掘前和递归挖掘中,处理方法是single_branch();在递归挖掘前,single_branch()的group参数是某一组的全部项集,该参数保证了只对本组的频繁模式进行挖掘,预防挖掘冗余频繁模式的情况发生;递归挖掘中的single_branch()参数group接受为空,这样,就能挖掘出当前条件模式树中的所有频繁模式集;如果fp-tree中不存在单路径,则执行频繁模式递归挖掘;该过程只是对当前组包含的项进行遍历,通过这样的方式,挖掘也就只能够在当前组中进行,得到的频繁模式也只属于当前组,不会发生有多组挖出同个频繁模式的情况。(5)聚合;在流程(4)的挖掘过程中,获得了频繁模式的数据集preresult,不过由于在数据分组中利用f_map把事务集都重新编码成序号的形式,所以preresult并不是最终结果形式,需要再次利用f_map把序号映射回具体的项名,得到可用的频繁模式freresult;此时,频繁模式仍然处于不规则分布的状态,把模式长度相同的频繁项集分别进行聚集,得到更加符合习惯的最终结果;参见图6。附图说明图1为产品质量异常数据影响因素关联分析流程图。图2为fp-tree数据结构优化图。图3为并行化策略改进方法整体流程图。图4为并行计算频繁1-项集流程图。图5为数据分组流程图。图6为频繁模式聚集流程图。具体实施方式下面结合实施实例对本发明做进一步详细阐述。1、fp-growth算法中fp-tree数据结构的改进:在执行fp-tree构造算法时,利用优化的项头表,避免了繁琐的循环遍历操作,具体按附件2的代码执行。2、fp-growth算法并行化策略的改进:第二步,首先通过flatmap转换,事务集中的每条事务被转换成<key,value>形式,其中key表示事务,value的值设为1,在此基础上,运用reducebykey操作,把key值相同所有元素的value值进行求和,获得按照<事务list,事务出现的次数>的格式存储的数据集,命名为trans;再次利用flatmap,把trans的key分割形成<项,事务出现的次数>的数据分片,随后运用reducebykey转换,把相同key值对应的value求和,获得item_list数据集。第三步group_list的获取中,利用flapmap操作,把trans_list中的每个tran_list根据上述方法进行截取和组号groupid的计算,处理完毕后,再经过groupbykey转换,将分配在同一个groupid下的事务集合起来,得到集合group_list。第四步中按照长度聚集模式是通过map来实现的,执行map操作后会得到形如<长度为k的频繁模式,频繁模式支持度>的结果。附件1,fp-growth算法数据结构改进的核心代码。publicclassheadtable{privatestringitem_name;//数据项名称privatenodenext_node;//项头表中的下一个同名节点privatenodetail_link;//该项头表中的最后一个同名节点位置}//优化后的项头表附件2,fp-tree构造算法时的执行代码:if(headtable.tail_link==null)thenheadtable.next_node=新节点;headtable.tail_link=新节点;elseheadtable.tail_link.next_node=新节点;headtable.tail_link=新节点。参考文献[1]jiaweihan,jianpei,yiwenyin.miningfrequentpatternswithoutcandidategeneration[m].acmsigmodrecord,2000,29(2):1-12.[2]haoj,hem.aparallelfp-growthalgorithmbasedongpu[c].ieee,internationalconferenceone-businessengineering.ieeecomputersociety,2017,97-102.。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1