一种流数据的分类方法及其装置和系统的制作方法

文档序号:6629722阅读:123来源:国知局
一种流数据的分类方法及其装置和系统的制作方法
【专利摘要】本发明提供一种流数据的分类方法及其装置和系统,所述流数据分类系统包括数据源处理器模块、流数据分类装置及评价处理器模块,数据源处理器模块接收外部数据流并将数据流实时地发送到流数据分类装置中进行分类判定,评价处理器模块用于对分类判定结果进行在线评价以得到的分类判定结果正确率并予以输出;另外,基于流数据分类的思想,还提供了一种流数据分类方法。本发明采用数据的水平化分割方法,实现了数据的横向扩展,数据的水平扩展进一步实现了相关组建的分布式快速处理。
【专利说明】一种流数据的分类方法及其装置和系统

【技术领域】
[0001]本发明涉及一种大数据处理领域,主要是指用于对大数据进行预先分类处理,以 供后续的实时计算,更加具体地来说,是涉及一种流数据的分类方法及其装置和系统。

【背景技术】
[0002] 云计算、物联网、移动互连和社交媒体等新兴信息技术和应用模式的快速发展,促 使全球数据量急剧增加,推动人类社会迈入大数据时代,数据的量级、产生速率、复杂性和 价值获取的实时性等要求,对大数据处理也提出了新的更高要求,以Hadoop为代表的批处 理已经无法满足时代发展的浪潮。
[0003] 在当下这个大数据时代,据使用场景的不同,大数据处理已经逐渐的发展向两个 极端:批处理和流处理。其中,Hadoop就是批处理的代表,Hadoop是一个分布式系统基础架 构,其实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS 有尚容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量 (high throughput)来访问应用程序的数据,适合那些有着超大数据集Qarge data set) 的应用程序。Hadoop的框架最核心的设计就是:HDFS和MapReduce, HDFS为海量的数据提供 了存储,则MapReduce为海量的数据提供了计算。而流处理即是通过数据流计算系统来实 现,其中,SAM0A、Storm(是TwittcrS开源出来的一个分布式的实时计算系统)和s4(Simple Scalable Streaming System的简称,其是一个分布式流处理引擎)都是当前比较典型的数 据流计算系统。
[0004] 其中,Storm是一个分布式的、容错的实时流计算系统,可以方便地在一个计算 机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。 Storm可以很方便的对无边界的数据流进行实时处理。Storm保证每个消息都会得到处理, 而且处理速度很快,即使在一个小集群中,每秒都可以处理数以百万计的消息。Storm可以 用于实时分析(Realtime Analytics)、在线机器学习 (Online Machine Learning)、连续计 算(Continuous Computation)、分布式远程调用(DRPC)和 ETL 等。
[0005] SAMOA作为一个新兴的流数据处理引擎受到了业界的广泛重视,因为SAMOA不仅 是一个平台而且也是一个流数据的机器学习库。在SAMOA的框架设计中不仅整合了常用的 流处理引擎,如Storm和S4等,还集成了典型的非分布式流数据机器学习平台m〇A (Massive Online Analysis)等。不仅如此,SAMOA允许开发人员根据问题的需要集成新的流处理引 擎或者其它流数据机器学习组件于系统中。这些功能使得使用SAMOA开发流数据机器学习 算法不仅方便,而且开发的分布式流数据机器学习算法,可以根据实际需要运行在多种流 处理引擎上而无需任何更改。
[0006] 分类是机器学习中的一个重要研究课题。它的目标是构造一个分类器,对未知类 标记的属性集指定最适合的类标签。但是流数据的机器学习不同于传统的机器学习,流数 据机器学习在传统机器学习的基础上结合流数据的特性又提出了新的基本要求,例如:一 次处理一条数据而且只处理一次;使用有限的内存;有限的时间内完成数据处理;随时可 以进行预测等等。因此在流数据机器学习设计的时候也需要将这些基本要求考虑进去。 [0007]总之,在一般的基于Hadoop构建的云服务和应用中,快速实时与大数据量往往不 可兼得。如何更好更快实时地处理大量流数据,就成为云计算服务和应用必须解决的问题 之一。


【发明内容】

[000S]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种流数据的分类方法及 其装置和系统,用于解决现有技术Hadoop无法处理实时数据的问题。
[0009]为实现上述目的及其他相关目的,本发明提供以下技术方案:
[0010] -种流数据分类装置,包括:分布处理器模块,用于接收包括内容事件的流数据, 并将所述流数据分别标记为测试数据和训练数据,及将所述测试数据和训练数据依次予以 随机均衡地分发出去;属性统计处理器模块,用于将接收所述训练数据,并对所述训练数据 中每个内容事件的属性信息进行统计以得到所述每个所述内容事件的属性统计信息,并将 所述属性统计信息实时地更新输出;聚合处理器模块,用于接收所述属性统计信息和所述 测试数据,根据所述属性统计信息计算得到所述测试数据的后验概率,并选取其中最大的 后验概率作为待实时分类判定的所述测试数据的分类判定结果并予以输出。
[0011]优选地,在上述流数据分类装置中,所述测试数据和所述训练数据为同一流数据。 [0012] 优选地,在上述流数据分类装置中,所述属性统计处理器模块包括:多个本地机器 学习模块,分别用于对应接收所述训练数据,并对所接收到的所述训练数据中每个内容事 件的属性信息进行统计以得到所述每个所述内容事件的属性统计信息,并将所述属性统计 信息予以输出;全局机器学习模块,用于接收所述属性统计信息,并将予以实时地输出。 [00 13] 优选地,在上述流数据分类装置中,包括一个或者至少多个所述聚合处理器模块, 且每个所述聚合处理器模块彼此独立。
[0014]作为上述流数据分类装置及其优选方案的进一步优化,所述属性统计信息包括: 所述训练数据中每个内容事件的属性值、及其类标记和权重。
[0015]另外,本发明还提供了一种流数据分类系统,包括:数据源处理器模块,用于接收 外部数据流,且将所述数据流包装成包括多个内容事件的流数据,并予以实时输出;分布 处理器模块,用于接收包括多个内容事件的所述流数据,并将所述流数据分别标记为测试 数据和训练数据,及将所述测试数据和训练数据依次予以随机均衡地分发出去;属性统计 处理器模块,用于接收所述训练数据,并对所述训练数据中每个内容事件的属性信息进行 统计以得到所述每个所述内容事件的属性统计信息,并将所述属性统计信息实时地更新输 出;聚合处理器模块,用于接收所述属性统计信息和所述测试数据,根据所述属性统计信息 计算得到所述测试数据的后验概率,并选取其中最大的后验概率作为待实时分类判定的所 述测试数据的分类判定结果并予以输出。
[0016] 优选地,在上述流数据分类系统中,所述流数据分类系统还包括:评价处理器模 块,用于接收所述分类判定结果,并利用时间窗的方法对所述分类判定结果进行实时的评 价和判断,以得到所述分类判定结果的正确率并予以输出。
[0017]最后,本发明还提供了一种流数据分类方法,包括:接收外部数据流,且将所述数 据流包装成包括多个内容事件的流数据,并予以实时输出·,将所述流数据分别标记为测试 数据和训练数据,并将所述测试数据和训练数据依次予以随机均衡地分发出去;对所述训 练数据中每个内容事件的属性信息进行统计,以得到所述每个所述内容事件的属性统计信 息,并将所述属性统计信息实时地更新输出;根据所述属性统计信息计算得到所述测试数 据的后验概率,并选取其中最大的后验概率作为待实时分类判定的所述测试数据的分类判 定结果并予以输出。
[0018] 优选地,在上述流数据分类方法中,所述流数据分类方法还包括:利用时间窗的方 法对所述分类判定结果进行实时的评价和判断,以得到所述分类判定结果的正确率并予以 输出。
[0019] 优选地,在上述流数据分类方法中,利用贝叶斯公式计算得到所述测试数据的后 验概率,并假设所述每个所述内容事件的属性值对给定类的影响独立于其它属性的值。
[0020] 综上所述,本发明具有以下有益效果:
[0021] 第一,本发明提出的一种流数据的分类方法及其装置和系统与现有的技术相比具 有可以在线处理高速流数据的特性和先测试再训练的特点。Storm和SAMOA是流数据处理 架构,数据水平扩展的加入可以使得模型适用于高速数据的处理。虽然Prequential评价 本身提供了先测试再训练的功能,但是在流数据分类系统中,通过在分布处理器模块中令 测试数据流和训练数据流都为源数据流,只不过先处理测试数据流,而后处理训练数据流, 而且训练数据流要经过属性统计处理器模块后转化为属性流进入聚合处理器模块,由此而 实现了先测试在训练的架构。
[0022] 第二,本发明与经典的流数据处理平台Μ0Α的朴素贝叶斯分类方法相比具有分布 式的特性,分布式首先体现在数据的底层处理平台Storm是分布式处理架构,另外,体现在 该模型采用的SAMOA架构是分布式的,而且,利用数据水平扩展实现了相关组建的分布式 快速处理。
[0023] 第三,本发明采用了数据的水平化分割方法,实现了数据的横向扩展,数据的水平 扩展体现在属性统计处理器模块和聚合处理器模块中,用户可以根据任务问题的需要进行 相关处理器模块的扩展来实现高速流数据的分类。

【专利附图】

【附图说明】
[0024] 图1显示为Storm的是系统架构原理图。
[0025] 图2为Storm的拓扑结构示意图。
[0026] 图3为SAMOA的框架结构示意图。
[0027] 图4为SAMOA的拓扑结构示意图。
[0028] 图5为本发明一种流数据分类装置的原理图。
[0029] 图6为聚合处理器模块中数据水平并行处理的原理图。
[0030] 图7为本发明一种流数据分类系统的原理示意图。
[0031] 图8为本发明一种流数据分类方法的流程图。
[0032] 附图标号说明
[0033] S10?S90方法步骤

【具体实施方式】
[0034] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书 所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实 施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离 本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施 例中的特征可以相互组合。
[0035] 本发明以朴素贝叶斯方法为基础,利用Storm和SAMOA平台构建了一个分布式水 平并行朴素贝叶斯流数据分类模型。该模型不同于传统的朴素贝叶斯分类方法,传统的分 类算法,需要将数据集切分为训练集和测试集,而且训练集的数据一般不参与模型的性能 测试。分布式水平并行朴素贝叶斯分类模型采用了流数据处理中典型的先测试再训练的方 法来进行数据的测试和训练。该方法也不同于典型的流数据处理平台Μ0Α中的朴素贝叶斯 分类方法,因为Μ0Α是一个非分布式的流数据处理平台,Μ0Α中的朴素贝叶斯分类器仅适用 于非分布式的流数据分类。分布式水平朴素贝叶斯流数据分类模型采用数据水平并行化 方法来进行数据的并行处理,水平并行化就是将大的数据集等量地分割到对应的数据子集 中,并交由系统的相应的子处理单元进行数据的处理。在本文提出流数据分类模型中,采用 了 SAMOA中的Prequential评价任务的数据源处理模块进行外部流数据的接收和发射,使 用分类评价模块对分布式朴素贝叶斯分类模型的输出结果进行实时的评价。使用Storm作 为分布式水平并行朴素贝叶斯模型的底层处理平台。实验结果表明,基于Storm和SAMOA 的水平朴素贝叶斯流数据分类模型不仅满足了流数据处理的基本要求,而且分类效果几乎 接近传统的朴素贝叶斯方法和经典的非分布式流数据处理平台Μ0Α中朴素贝叶斯分类方 法的效果。
[0036] Storm是一个分布式的、容错的实时流计算系统,可以方便地在一个计算机集群中 编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证 每个消息都会得到处理,而且它的处理速度很快,在一个小集群中,每秒可以处理数以百万 计的消息,而且可以使用任意编程语言来开发。
[0037] Storm的集群表面上看和Hadoop的集群非常相似。但是在Hadoop上运行的是 MapReduce的Job,而在Storm上运行的是Topology。它们根本的区别就是,一个MapReduce Job最终会结束,而一个Topology永远不会结束(除非显式的终止)。Storm作为典型的流 处理引擎,它的应用场景有实时分析、在线机器学习、连续计算、分布式RPC、分布式ETL等。
[0038] Storm采用的是主从系统架构,如图1所示。在Storm的集群里面有两种节点:即 控制节点(master node)和工作节点(worker node)。其中,在控制节点上面运行一个后台 程序Nimbus,它的作用类似Hadoop里面的JobTracker。Nimbus负责全局的资源分配、任务 调度、状态监控和故障检测等;而每一个工作节点上面运行一个叫做Supervisor的节点, Supervisor负责监听分配给它的那台机器的工作,根据需要启动或者关闭工作进程。每一 个工作进程执行一个Topology的一个子集;一个运行的Topology由运行在很多机器上的 很多工作进程组成。Nimbus和Supervisor都能快速失败,因为它们是无状态的,系统的状 态信息保存在Zookeeper或者磁盘设备上,这样一来它们就变得十分健壮,两者的协调工 作是由Zooke印er来完成的,ZooKeeper用于管理集群中的不同组件。
[0039] Topology是Storm的逻辑单元,所有组件的排列(Spouts和Bolts)及它们的连接 被称为Topology。Storm中一个实时应用的计算任务打包为Topology后发布,Topology - 旦提交永远运行,除非显式地去终止。一个Topology是由一系列Spout和Bolt构成的有 向无环图,通过数据流(stream)实现Spout和Bolt之间的关联,如图2所示。其中,Spout 负责从外部数据源不间断地读取流数据,并以Tuple元组的形式发送给相应的Bolt,Bolt 负责对接收到的数据流进行计算,实现过滤、聚合、查询等具体功能,可以级联,也可以向外 发送数据流。
[0040] SAMOA (Scalable Advanced Massive Online Analysis)是由雅虎开源的流数据 在线机器学习的框架,和其它绝大多数大数据处理框架一样,SAMOA也是用Java编写的。 SAMOA使用了可插拔的体系架构,允许使用多种分布式流处理引擎,例如Storm和S4等。 SAMOA类似于运行在Hadoop上的批处理机器学习工具Mahout,只不过SAMOA用于在线的流 式机器学习。
[0041] SAMOA包含常用流处理引擎的抽象,允许开发人员方便地开发流处理和相关机器 学习的应用,而无需关心具体的流处理引擎的底层逻辑细节。不仅如此,SAMOA允许开发人 员根据问题的需要集成新的流处理引擎或者其它流数据机器学习组件在系统中。这些功能 使得使用SAMOA开发的分布式流数据机器学习算法,可以根据实际需要可以运行在多种流 处理引擎上。
[0042] 另外,见图3,算法模块包含了已经集成在SAMOA中的分类和聚类算法,API部分用 于在SAMOA框架下开发新的算法和模型。机器学习接口模块集成了 M0A(Massive Online Analysis)并且允许开发人员将其它机器学习系统集成到SAMOA框架中。API模块和机器 学习接口模块可以极大地提高开发人员的开发速度。流数据引擎接口模块允许开发者集成 新的流数据引擎进入SAMOA框架。为了集成新的流数据引擎,开发者必须使用SAMOA流数 据引擎模块。当前,在SAMOA中已经集成了 SAM0A-S4,SAMOA-Storm和SAMOA-Samza等。 [0043] SAMOA的基本拓扑组件有:处理器、流、内容事件和任务。在SAMOA中,处理器是 最基本的逻辑组件,所有的逻辑处理都在处理器中完成,处理器通常都包装在处理器模块 PI (Processing Item)中,EPI是负责数据接收的PI。SAMOA拓扑结构如图4所示,开发者 可以通过继承处理器的方法实现自己的特定处理单元。SAMOA把信息或者事件定义为内容 事件,顾名思义,就是包含内容的事件,内容事件通过处理器包装在流中,然后通过流传递 给其它的处理器进行后续的处理。流是连接处理器的组件,流可以由产生它的处理器连接 到多个处理器。任务类似于Hadoop中的工作。任务是系统执行的实体,拓扑必须定义在任 务中。
[0044] 本发明以朴素贝叶斯方法为基础,利用Storm和SAMOA平台来实现对流数据进行 分布式水平并行的分类。本发明不同于传统的朴素贝叶斯分类方法,传统的分类算法,需 要将数据集切分为训练集和测试集,而且训练集的数据一般不参与分类方法的性能测试。 而本发明则采用了流数据处理中典型的先测试再训练的方法来进行数据的测试和训练;同 时,本发明也不同于典型的流数据处理平台Μ0Α中的朴素贝叶斯分类方法,因为Μ0Α是一个 非分布式的流数据处理平台,Μ0Α中的朴素贝叶斯分类器仅适用于非分布式的流数据分类, 而本发明则是通过Storm流处理引擎来实现流数据的分布式处理分类;另外,本发明还采 用数据水平并行化方法来进行数据的并行处理,水平并行化就是将大的数据集(也即流数 据)等量地分割到对应的数据子集中,并交由系统的相应的子处理单元进行数据的处理。 经过实验结果表明,本发明不仅满足了流数据处理的基本要求,而且分类效果也接近传统 的朴素贝叶斯方法和经典的非分布式流数据处理平台M0A中朴素贝叶斯分类方法的效果 (因为,在目前技术大背景下,流数据机器学习的效果只能无限接近传统机器学习方法,而 无法等价齐观)D [0045] 实施例一
[0046]请参见图5,示出了本发明一种流数据分类装置的原理图,从示图来看,所述流数 据分类装置包括:
[0047]分布处理器模块,用于接收包括内容事件的流数据,并将所述流数据分别标记为 测试数据和训练数据,及将所述测试数据和训练数据依次予以随机均衡地分发出去;
[0048]属性统计处理器模块,用于将接收所述训练数据,并对所述训练数据中每个内容 事件的属性信息进行统计以得到所述每个所述内容事件的属性统计信息,并将所述属性统 计信息实时地更新输出;
[0049]聚合处理器模块,用于接收所述属性统计信息和所述测试数据,根据所述属性统 计信息计算得到所述测试数据的后验概率,并选取其中最大的后验概率作为待实时分类判 定的所述测试数据的分类判定并予以输出。
[0050] 具体地,所述分布处理器模块用于接收数据流,并且将训练数据随机分发到多个 属性统计处理器模块中,同时还将测试数据随机分发到多个聚合处理器模块,以进行实时 的数据分类预测。其中,分布处理器模块将以随机的方式将数据流发送出去,即将测试数据 随机均衡的发送到N个独立的聚合处理器模块中,以及将训练数据随机均衡的发送到N个 独立的属性统计处理器模块中。另外,所述数据流既是训练数据也是测试数据,g卩训练数据 和测试数据属于同一数据,只不过测试数据先进入系统,训练数据后进入系统。需要理解的 是,属性统计处理器模块和聚合处理器模块的数量是根据用户数据处理需要来进行设定, 且多个所述属性统计处理器模块和聚合处理器模块是彼此独立工作的。
[0051]具体地,所述属性统计处理器模块用于接收来自分布处理器模块的训练数据流, 属性统计处理器模块对数据的所有属性信息进行统计,主要是利用MOA(Massive Online Analysis)的 Attribute Observer 进行属性信息的统计,AttributeClassObserver 是 Μ0Α中用获得属性信息统计和分布的组件,统计信息被用来计算先验概率,例如,使用 NominalAttributeClassOberver 来进行标称属性的统计,使用 GaussianNumericAttribut eClassObserver来进行数值型属性的统计。统计信息包括每一条训练数据的每一个属性 的属性值、类标记及权重。并且,根据获得的属性统计信息,按照系统的设计要求将属性统 计信息实时地更新到聚合处理器模块。需要注意的是,属性统计处理器模块会把每一条数 据发送给所有的后续链接组件(例如聚合处理器模块),而不是随机发给其中一个,即属性 统计处理器模块会将所述属性统计信息流数据发送到N个聚合处理器模块中,而非其中一 个。这样的目的是为了保证每个聚合处理器模块里面的统计信息是一致的,否则无法保证 预测结果和合理性和一致性,或者说,如果不采用这种方式而是随机(Shuffle)地发送方 式的话,则每个聚合处理器模块里面的信息都是不完整的。
[0052] 进一步地,所述用户可以根据问题需要水平扩展N个聚合处理器模块,每个聚合 处理器模块相互独立工作,且每个聚合处理器模块的处理模式可以参见图6,每个聚合处 理器模块包括:多个本地机器学习模块,分别用于对应接收所述训练数据,并对所接收到的 所述训练数据中每个内容事件的属性信息进行统计以得到所述每个所述内容事件的属性 统计信息,并将所述属性统计信息予以输出;全局机器学习模块,用于接收所述属性统计信 息,并将予以实时地输出。
[0053]具体地,聚合处理器模块接收来自属性统计处理器模块的属性统计信息和来自分 布处理器模块的测试数据流,并且将最终分类的结果输出或者对分类的结果进行实时的评 价。聚合处理器模块根据从属性统计处理器模块获得的属性统计信息计算属性在类条件下 的后验概率(PUi/Ci))和先验概率(p( Ci))。当有测试数据流需要被实时分类判定的时候 就可以根据获得的属性信息计算后验概率(即p(c」x)),然后选取最大的后验概率作为对 测试数据的分类判定输出到系统的输出模块或者对分类结果的准确率进行实时的统计输 出。
[0054] 实施例二
[0055]进一步地,请参见图7,本发明还提供了一种流数据分类系统,从示图来看,所述流 数据分类系统包括数据源处理器模块、流数据分类装置及评价处理器模块,其中,所述数据 源处理器模块接收外部数据流并将数据流实时地发送到流数据分类装置中进行分类判定, 所述评价处理器模块用于对所述分类判定结果进行在线评价以得到的所述分类判定结果 正确率并予以输出。具体地,所述流数据分类装置与上述实施例一中一样,故所述流数据分 类系统具体包括:
[0056]数据源处理器模块,用于接收外部数据流,且将所述数据流包装成包括多个内容 事件的流数据,并予以实时输出;
[0057]分布处理器模块,用于接收包括多个内容事件的所述流数据,并将所述流数据分 别标记为测试数据和训练数据,及将所述测试数据和训练数据依次予以随机均衡地分发出 去;
[0058]属性统计处理器模块,用于接收所述训练数据,并对所述训练数据中每个内容事 件的属性信息进行统计以得到所述每个所述内容事件的属性统计信息,并将所述属性统计 信息实时地更新输出;
[0059]聚合处理器模块,用于接收所述属性统计信息和所述测试数据,根据所述属性统 计信息计算得到所述测试数据的后验概率,并选取其中最大的后验概率作为待实时分类判 定的所述测试数据的分类判定结果并予以输出;
[0060]评价处理器模块,用于接收所述分类判定结果,并利用时间窗的方法对所述分类 判定结果进行实时的评价和判断,以得到所述分类判定结果的正确率并予以输出。
[0061]进一步地,应当理解,上述流数据分类系统也可不用评价处理器模块对分类判定 结果进行评价,而直接予以输出。在SAMOA中,评价处理器模块的评价任务就是一个先测试 再训练的任务。
[0062]具体地,所述分布处理器模块用于接收数据流,并且将训练数据随机分发到多个 属性统计处理器模块中,同时还将测试数据随机分发到多个聚合处理器模块,以进行实时 的数据分类预测。其中,分布处理器模块将以随机的方式将数据流发送出去,即将测试数据 随机均衡的发送到N个独立的聚合处理器模块中,以及将训练数据随机均衡的发送到n个 独立的属性统计处理器模块中。另外,所述数据流既是训练数据也是测试数据,g卩训练数据 和测试数据属于同一数据,只不过测试数据先进入系统,训练数据后进入系统。需要理解的 是,属性统计处理器模块和聚合处理器模块的数量是根据用户数据处理需要来进行设定, 且多个所述属性统计处理器模块和聚合处理器模块是彼此独立工作的。
[0063] 具体地,所述属性统计处理器模块用于接收来自分布处理器模块的训练数据流, 属性统计处理器模块对数据的所有属性信息进行统计,主要是利用MOA(Massive Online Analysis)的 Attribute Observer 进行属性 ?目息的统计,AttributeClassObserver 是 MOA中用获得属性信息统计和分布的组件,统计信息被用来计算先验概率,例如,使用 NominalAttributeClassOberver 来进行标称属性的统计,使用 GaussianNumericAttribut eClassObserver来进行数值型属性的统计。统计信息包括每个属性的属性值、类标记和权 重。并且,根据获得的属性统计信息,按照系统的设计要求将属性统计信息实时地更新到聚 合处理器模块。需要注意的是,属性统计处理器模块会把每一条数据发送给所有的后续链 接组件(例如聚合处理器模块),而不是随机发给其中一个,即属性统计处理器模块会将所 述属性统计信息流数据发送到N个聚合处理器模块中,而非其中一个。
[0064] 进一步地,所述用户可以根据问题需要水平扩展N个聚合处理器模块,每个聚合 处理器模块相互独立工作,每个聚合处理器模块包括:多个本地机器学习模块,分别用于对 应接收所述训练数据,并对所接收到的所述训练数据中每个内容事件的属性信息进行统计 以得到所述每个所述内容事件的属性统计信息,并将所述属性统计信息予以输出;全局机 器学习模块,用于接收所述属性统计信息,并将予以实时地输出。
[0065] 具体地,聚合处理器模块接收来自属性统计处理器模块的属性统计信息和来自 分布处理器模块的测试数据流,并且将最终分类的结果输出或者对分类的结果进行实时 的评价。聚合处理器模块根据从属性统计处理器模块获得的属性统计信息计算P(Xi/Ci) 和P(Ci)。当有测试数据流需要被实时分类判定的时候就可以根据获得的属性信息计算 P(C」X)(即后验概率),然后选取最大的后验概率作为对测试数据的分类判定输出到系统 的输出模块或者对分类结果的准确率进行实时的统计输出。
[0066] 具体地,评价处理器模块接收来自聚合处理器模块的分类结果输出数据流,对分 类结果输出数据流利用时间窗的方法进行实时的评价和判断并给出分类的正确率。其中, 滑动窗口(Sliding Window Model)是一种流数据处理方法。滑动窗口是指该窗口的起始 和结束时间戳都可以变化,新的数据进入滑动窗口,而旧的数据则不断被删除。由于滑动窗 口是现有的技术,这里就不再赘述。
[0067] 另外,在上述实施例二中,应当理解属性统计处理器模块和聚合处理器模块的个 数可以根据具体问题的需要进行并行化设定,根据并行化设定的情况,进行相应的水平数 据分割。
[0068] 实施例三
[0069]本发明另外还提供了 一种流数据分类方法,请参考图8,示出了所述流数据分类方 法的流程图,从图示来看,所述流数据分类方法包括:
[0070] 步骤S10,接收外部数据流,且将所述数据流包装成包括多个内容事件的流数据, 并予以实时输出;
[0071]步骤S30,将所述流数据分别标记为测试数据和训练数据,并将所述测试数据和训 练数据依次予以随机均衡地分发出去;
[0072]步骤S50,对所述训练数据中每个内容事件的属性信息进行统计,以得到所述每个 所述内容事件的属性统计信息,并将所述属性统计信息实时地更新输出;
[0073]步骤S7〇,根据所述属性统计信息计算得到所述训练数据的后验概率,并选取其中 最大的后验概率作为待实时分类判定的所述测试数据的分类判定结果并予以输出;
[0074]步骤S9〇,利用时间窗的方法对所述分类判定结果进行实时的评价和判断,以得到 所述分类判定结果的正确率并予以输出。
[0075] 进步地,应当理解,上述步骤S90的目的在于对对所述分类判定结果进行实时的 评价和判断,在所述流数据分类方法也可以省略该步骤,即步骤S90可以作为优选方案来 予以实施。
[0076]具体地,在步骤S70中,是利用贝叶斯公式计算得到所述训练数据的后验概率,并 假设所述每个所述内容事件的属性值对给定类的影响独立于其它属性的值。
[0077] 更进一步地,所述测试数据和所述训练数据为同一流数据。
[0078]综合上述所有实施例来看,本发明通过以Storm作为底层的流处理引擎,基于 SAMOA提供的在线流数据机器学习架构,来进行流数据的水平分割和模型设计。将以往仅仅 用在批处理或者非分布式流处理系统上的朴素贝叶斯方法应用到了基于Storm和SAMOA的 分布式流处理平台中。并利用SAMOA API中的Prequential评价任务和模型结构设计实现 了不同于传统机器学习的先测试再训练的流数据分类装置及方法。而且实验结果也表明, 基于Storm和SAMOA的本发明不仅满足了流数据处理的基本要求,而且分类效果几乎接近 传统的朴素贝叶斯方法和经典的非分布式流数据处理平台Μ0Α中朴素贝叶斯分类方法的 效果。其重要有以下优点:
[0079]第一,本发明提出的一种流数据的分类方法及其装置和系统与现有的技术相比具 有可以在线处理高速流数据的特性和先测试再训练的特点。Storm和SAMOA是流数据处理 架构,数据水平扩展的加入可以使得模型适用于高速数据的处理。虽然Prequential评价 本身提供了先测试再训练的功能,但是在流数据分类系统中,通过在分布处理器模块中令 测试数据流和训练数据流都为源数据流,只不过先处理测试数据流,而后处理训练数据流, 而且训练数据流要经过属性统计处理器模块后转化为属性流进入聚合处理器模块,由此而 实现了先测试在训练的架构。
[0080] 第二,本发明与经典的流数据处理平台Μ0Α的朴素贝叶斯分类方法相比具有分布 式的特性,分布式首先体现在数据的底层处理平台Storm是分布式处理架构,另外,体现在 该模型采用的SAMOA架构是分布式的,而且,利用数据水平扩展实现了相关组建的分布式 快速处理。
[0081] 第三,本发明采用了数据的水平化分割方法,实现了数据的横向扩展,数据的水平 扩展体现在属性统计处理器模块和聚合处理器模块中,用户可以根据任务问题的需要进行 相关处理器模块的扩展来实现高速流数据的分类。所以,本发明有效克服了现有技术中的 种种缺点而具高度产业利用价值。
[0082] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟 悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因 此,举凡所属【技术领域】中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完 成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
【权利要求】
1. 一种流数据分类装置,其特征在于,包括: 分布处理器模块,用于接收包括内容事件的流数据,并将所述流数据分别标记为测试 数据和训练数据,及将所述测试数据和训练数据依次予以随机均衡地分发出去; 属性统计处理器模块,用于将接收所述训练数据,并对所述训练数据中每个内容事件 的属性信息进行统计以得到所述每个所述内容事件的属性统计信息,并将所述属性统计信 息实时地更新输出; 聚合处理器模块,用于接收所述属性统计信息和所述测试数据,根据所述属性统计信 息计算得到所述测试数据的后验概率,并选取其中最大的后验概率作为待实时分类判定的 所述测试数据的分类判定结果并予以输出。
2. 根据权利要求1所述的流数据分类装置,其特征在于,所述测试数据和所述训练数 据为同一流数据。
3. 根据权利要求1所述的流数据分类装置,其特征在于,所述属性统计处理器模块包 括: 多个本地机器学习模块,分别用于对应接收所述训练数据,并对所接收到的所述训练 数据中每个内容事件的属性信息进行统计以得到所述每个所述内容事件的属性统计信息, 并将所述属性统计信息予以输出; 全局机器学习模块,用于接收所述属性统计信息,并将予以实时地输出。
4. 根据权利要求1所述的流数据分类装置,其特征在于,包括一个或者至少多个所述 聚合处理器模块,且每个所述聚合处理器模块彼此独立。
5. 根据权利要求1-4任一项所述的流数据分类装置,其特征在于,所述属性统计信息 包括:所述训练数据中每个内容事件的属性值、及其类标记和权重。
6. -种流数据分类系统,其特征在于,包括: 数据源处理器模块,用于接收外部数据流,且将所述数据流包装成包括多个内容事件 的流数据,并予以实时输出; 分布处理器模块,用于接收包括多个内容事件的所述流数据,并将所述流数据分别标 记为测试数据和训练数据,及将所述测试数据和训练数据依次予以随机均衡地分发出去; 属性统计处理器模块,用于接收所述训练数据,并对所述训练数据中每个内容事件的 属性信息进行统计以得到所述每个所述内容事件的属性统计信息,并将所述属性统计信息 实时地更新输出; 聚合处理器模块,用于接收所述属性统计信息和所述测试数据,根据所述属性统计信 息计算得到所述测试数据的后验概率,并选取其中最大的后验概率作为待实时分类判定的 所述测试数据的分类判定结果并予以输出。
7. 根据权利要求6所述的流数据分类系统,其特征在于,所述流数据分类系统还包括: 评价处理器模块,用于接收所述分类判定结果,并利用时间窗的方法对所述分类判定 结果进行实时的评价和判断,以得到所述分类判定结果的正确率并予以输出。
8. -种流数据分类方法,其特征在于,包括: 接收外部数据流,且将所述数据流包装成包括多个内容事件的流数据,并予以实时输 出; 将所述流数据分别标记为测试数据和训练数据,并将所述测试数据和训练数据依次予 以随机均衡地分发出去; 对所述训练数据中每个内容事件的属性信息进行统计,以得到所述每个所述内容事件 的属性统计信息,并将所述属性统计信息实时地更新输出; 根据所述属性统计信息计算得到所述测试数据的后验概率,并选取其中最大的后验概 率作为待实时分类判定的所述测试数据的分类判定结果并予以输出。
9. 根据权利要求8所述的流数据分类方法,其特征在于,所述流数据分类方法还包括: 利用时间窗的方法对所述分类判定结果进行实时的评价和判断,以得到所述分类判定 结果的正确率并予以输出。
10. 根据权利要求8所述的流数据分类方法,其特征在于,利用贝叶斯公式计算得到所 述测试数据的后验概率,并假设所述每个所述内容事件的属性值对给定类的影响独立于其 它属性的值。
【文档编号】G06F17/30GK104268260SQ201410530955
【公开日】2015年1月7日 申请日期:2014年10月10日 优先权日:2014年10月10日
【发明者】李广砥, 王国胤, 张学睿, 张帆, 封雷, 席大超, 邓伟辉, 郭义帅, 谢亮 申请人:中国科学院重庆绿色智能技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1