CN107220261B - 一种基于分布式数据的实时挖掘方法及装置 - Google Patents
一种基于分布式数据的实时挖掘方法及装置 Download PDFInfo
- Publication number
- CN107220261B CN107220261B CN201610166385.8A CN201610166385A CN107220261B CN 107220261 B CN107220261 B CN 107220261B CN 201610166385 A CN201610166385 A CN 201610166385A CN 107220261 B CN107220261 B CN 107220261B
- Authority
- CN
- China
- Prior art keywords
- data
- processing
- real
- cluster
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于分布式数据的实时挖掘方法及装置,其中,所述方法包括:将集中的串行数据分解为可执行并行操作的数据;当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,得到数据模型;根据所述数据模型和辅助数据进行处理,得到数据处理结果。
Description
技术领域
本发明涉及挖掘技术,尤其涉及一种基于分布式数据的实时挖掘方法及装置。
背景技术
现有的数据挖掘平台,基本都是采用的客户端/服务器即(C/S)架构,用一台性能优秀的小型机作为服务器,普通PC做为客户机。服务器的主要工作是做计算,包括抽取转换加载(ETL,Extract-Transform-Load)、算法运算、打分等操作,客户机主要是做初步的数据处理和展现功能。比较常见的做法是将1台小型机划出一个分区,包括CPU、内存和磁盘阵列,作为服务器,用普通的PC机或者笔记本做为客户机。
这种模式在大数据时代遇到了很大的挑战。首先,由于小型机价格昂贵,现在许多公司已经开始去IOE,很少购买小型机。所述去IOE指,用成本更加低廉的软件——MYSQL替代Oracle数据库,使用PC Server替代IBM小型机等设备。当前主流的做法是采用PC Server做服务器集群,小型机逐步被淘汰。数据挖掘平台暂时还可以继续使用利旧的处理能力较强的小型机,但从长远看,这种模式迟早将面临着无机可用的情况。
此外,现有的数据挖掘流程,还是采用跨行业数据挖掘标准流程(CRISP-DM,cross-industry standard process for data mining),分为业务理解、数据理解、数据准备、建模、评估和部署六个阶段。整个过程是串行,前后依赖,只有完成了前一个阶段,才能进入后一个阶段。尤其是数据准备阶段,往往需要较长时间,后续的建模处理就只能继续等待,效率低下,尤其,面对目前大数据处理中的海量数据的处理来说,也是效率非常低下的,难以满足数据实时处理的需求。
发明内容
有鉴于此,本发明实施例希望提供一种基于分布式数据的实时挖掘方法及装置,至少解决了现有技术存在的问题。
本发明实施例的技术方案是这样实现的:
本发明实施例的一种基于分布式数据的实时挖掘方法,所述方法包括:
将集中的串行数据分解为可执行并行操作的数据;
当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,得到数据模型;
根据所述数据模型和辅助数据进行处理,得到数据处理结果。
上述方案中,所述数据模型为多个,进行所述数据建模得到第一数据模型后,将用于第X数据模型的数据作为所述辅助数据;
所述根据所述数据模型和辅助数据进行处理,包括:根据第一数据模型和对应第X数据模型生成的辅助数据进行处理。
上述方案中,所述将集中的串行数据分解为可执行并行操作的数据,包括:
通过部署在业务系统的接口实时监控接口变化,监控到新增数据时,立即进行数据抽取,将所有接口新增数据读取出来,并传入消息队列集群;
读取的数据在消息队列集群中的消息队列中进行缓存,以供流处理集群处理;
流处理集群读取消息队列中缓存的数据,进行包括规则过滤和实时转换在内的数据处理,将处理结果存入存储集群。
上述方案中,所述进行包括规则过滤和实时转换在内的数据处理,包括:
根据预设规则进行实时清洗,所述实时清洗所针对的清洗对象为按照预设粒度对数据按条进行处理所得到的一条记录或者一个字段;
实时清洗后,根据预设规则生成衍生字段,实现实时转换。
上述方案中,所述将处理结果存入存储集群,包括:
将处理结果保存为HBase/HDFS格式文件,存入内存表中,或者,直接存入内存中。
上述方案中,所述当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,包括:
将基于内存的分布式R算法与Spark平台相结合,在Spark平台中生成所述分布式R算法对应的数据对象,得到SparkR的对象;
从所述存储集群中读出数据到SparkR存储;
划分训练集和测试集;
调用决策树算法的参数构建数据模型,将所述处理结果转化为dataframe分布式数据框格式。
本发明实施例的一种基于分布式数据的实时挖掘装置,所述装置包括:
第一处理单元,用于将集中的串行数据分解为可执行并行操作的数据;
数据建模单元,用于当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,得到数据模型;
处理单元,用于根据所述数据模型和辅助数据进行处理,得到数据处理结果。
上述方案中,所述数据模型为多个,进行所述数据建模得到第一数据模型后,将用于第X数据模型的数据作为所述辅助数据;
所述处理单元,进一步用于根据第一数据模型和对应第X数据模型生成的辅助数据进行处理。
上述方案中,所述第一处理单元,包括:
数据抽取集群,用于通过部署在业务系统的接口实时监控接口变化,监控到新增数据时,立即进行数据抽取,将所有接口新增数据读取出来,并传入消息队列集群;
消息队列集群,用于将读取的数据置入消息队列中进行缓存,以供流处理集群处理;
流处理集群,用于读取消息队列中缓存的数据,进行包括规则过滤和实时转换在内的数据处理,将处理结果存入存储集群;
存储集群,用于存储所述处理结果。
上述方案中,所述流处理集群,进一步用于:
根据预设规则进行实时清洗,所述实时清洗所针对的清洗对象为按照预设粒度对数据按条进行处理所得到的一条记录或者一个字段;
实时清洗后,根据预设规则生成衍生字段,实现实时转换。
上述方案中,所述存储集群,进一步用于:
将处理结果保存为HBase/HDFS格式文件,存入内存表中,或者,直接存入内存中。
上述方案中,所述数据建模单元,进一步用于:
将基于内存的分布式R算法与Spark平台相结合,在Spark平台中生成所述分布式R算法对应的数据对象,得到SparkR的对象;
从所述存储集群中读出数据到SparkR存储;
划分训练集和测试集;
调用决策树算法的参数构建数据模型,将所述处理结果转化为dataframe分布式数据框格式。
本发明实施例的基于分布式数据的实时挖掘方法包括:将集中的串行数据分解为可执行并行操作的数据;当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,得到数据模型;根据所述数据模型和辅助数据进行处理,得到数据处理结果。采用本发明实施例,能大幅提高数据处理效率。
附图说明
图1为本发明实施例一的方法流程示意图;
图2为本发明实施例一实时处理数据的流程示意图;
图3为CRISP-DM的数据挖掘过程的示意图;
图4为现有数据挖掘的数据准备阶段的示意图;
图5为应用本发明实施例的数据处理过程示意图;
图6为应用本发明实施例的实时数据处理流程的示意图;
图7为应用本发明实施例的数据处理架构示意图;
图8为应用本发明实施例的R算法在Spark平台上运行的示意图;
图9-10为应用本发明实施例的模型训练集评估结果图。
具体实施方式
下面结合附图对技术方案的实施作进一步的详细描述。
实施例一:
一种基于分布式数据的实时挖掘方法,如图1所示,所述方法包括:
步骤101、将集中的串行数据分解为可执行并行操作的数据;
这里,本步骤的具体过程包括:将集中的串行数据按照流式处理机制进行实时数据处理,以分解为可执行并行操作的数据。其中,所述流式处理机制也可以称为流式输入输出方式,输入数据为集中的串行数据,经流式处理机制进行实时数据处理后,可以输出可执行并行操作的数据。
步骤102、当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,得到数据模型;
这里,基于内存的分布式算法的一个实例为R算法,可以将基于内存的分布式R算法和Spark平台相结合,Spark平台有别于分布式的Hadoop平台,Spark平台是可扩展的数据分析平台,它整合了内存计算的基元,因此,相对于Hadoop的集群存储方法,它在性能方面更具优势。Spark是在Scala语言中实现的,并且利用了该语言,为数据处理提供了独一无二的运行环境。
步骤103、根据所述数据模型和辅助数据进行处理,得到数据处理结果。
在本发明实施例一实施方式中,所述数据模型为多个,进行所述数据建模得到第一数据模型后,将用于第X数据模型的数据作为所述辅助数据。所述根据所述数据模型和辅助数据进行处理,包括:根据第一数据模型和对应第X数据模型生成的辅助数据进行处理(如评估和部署)。也就是说,流式处理机制,适合于一次处理一个数据模型,可以将其它的数据模型生成的数据作为辅助数据来使用,共同用于处理(如评估和部署)。
在本发明实施例一实施方式中,如图2所示,所述将集中的串行数据分解为可执行并行操作的数据,包括:
步骤201、通过部署在业务系统的接口实时监控接口变化,监控到新增数据时,立即进行数据抽取,将所有接口新增数据读取出来,并传入消息队列集群;
步骤202、读取的数据在消息队列集群中的消息队列中进行缓存,以供流处理集群处理;
步骤203、流处理集群读取消息队列中缓存的数据,进行包括规则过滤和实时转换在内的数据处理,将处理结果存入存储集群。
在本发明实施例一实施方式中,所述进行包括规则过滤和实时转换在内的数据处理,包括:根据预设规则进行实时清洗,所述实时清洗所针对的清洗对象为按照预设粒度对数据按条进行处理所得到的一条记录或者一个字段;实时清洗后,根据预设规则生成衍生字段,实现实时转换。
在本发明实施例一实施方式中,所述将处理结果存入存储集群,包括:将处理结果保存为HBase/HDFS格式文件,存入内存表中,或者,直接存入内存中。
在本发明实施例一实施方式中,所述当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,包括:将基于内存的分布式R算法与Spark平台相结合,在Spark平台中生成所述分布式R算法对应的数据对象,得到SparkR的对象;从所述存储集群中读出数据到SparkR存储;划分训练集和测试集;调用决策树算法的参数(如rPart决策树函数,设置训练集、节点数、叶子树、最大深度等)构建数据模型,将所述处理结果转化为dataframe分布式数据框格式。
实施例二:
本发明实施例的一种基于分布式数据的实时挖掘装置,所述装置包括:第一处理单元,用于将集中的串行数据按照流式处理机制分解为可执行并行操作的数据;及数据建模单元,用于当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,得到数据模型;及处理单元,用于根据所述数据模型和辅助数据进行处理,得到数据处理结果。
在本发明实施例一实施方式中,所述数据模型为多个,进行所述数据建模得到第一数据模型后,将用于第X数据模型的数据作为所述辅助数据;
所述处理单元,进一步用于根据第一数据模型和对应第X数据模型生成的辅助数据进行处理。
在本发明实施例一实施方式中,所述第一处理单元,包括:
数据抽取集群,用于通过部署在业务系统的接口实时监控接口变化,监控到新增数据时,立即进行数据抽取,将所有接口新增数据读取出来,并传入消息队列集群;
消息队列集群,用于将读取的数据置入消息队列中进行缓存,以供流处理集群处理;
流处理集群,用于读取消息队列中缓存的数据,进行包括规则过滤和实时转换在内的数据处理,将处理结果存入存储集群;
存储集群,用于存储所述处理结果。
在本发明实施例一实施方式中,所述流处理集群,进一步用于:
根据预设规则进行实时清洗,所述实时清洗所针对的清洗对象为按照预设粒度对数据按条进行处理所得到的一条记录或者一个字段;
实时清洗后,根据预设规则生成衍生字段,实现实时转换。
在本发明实施例一实施方式中,所述存储集群,进一步用于:
将处理结果保存为HBase/HDFS格式文件,存入内存表中,或者,直接存入内存中。
在本发明实施例一实施方式中,所述数据建模单元,进一步用于:
将基于内存的分布式R算法与Spark平台相结合,在Spark平台中生成所述分布式R算法对应的数据对象,得到SparkR的对象;
从所述存储集群中读出数据到SparkR存储;
划分训练集和测试集;
调用决策树算法的参数构建数据模型,将所述处理结果转化为dataframe分布式数据框格式。
以一个现实应用场景为例对本发明实施例阐述如下:
先对本应用场景做一介绍:
现有的数据挖掘流程,可以采用CRISP-DM流程,分为业务理解、数据理解、数据准备、建模、评估和部署六个阶段。如图3所示为CRISP-DM的数据挖掘过程的示意图,整个过程是串行,前后依赖,只有完成了前一个阶段,才能进入后一个阶段。尤其是数据准备阶段,往往需要较长时间,后续的建模就只能等待。
现在的市场营销活动逐步提速,实时微营销已经成为发展趋势,目前典型的事件驱动营销的营销机会稍纵即逝,据不完全统计,大部分营销事件发生的时间只有3分钟不到就结束。而现有的数据挖掘往往需要耗时几个月,已经难以满足实时营销的需要。
以数据准备为例,如图4所示为目前数据挖掘的数据准备阶段的示意图,目前的数据准备过程主要包括:抽样和采集、数据清洗和衍生数据生成三个串行的阶段。第一个阶段的数据抽样是抽取少量的数据来处理,主要因为之前的C/S架构处理能力有限,只能取少量数据来处理。采集过程是从接口获得必要的数据,获取需要的少量的原始数据。第二个阶段进行数据清洗,包括填补缺失值、剔除奇异值、纠正错误值,归一化处理等过程,将原始数据整理达到可用状态。第三个阶段是衍生数据阶段,根据原始数据来产生新的字段,将多个信息整合为一个衍生字段,如三月平均MOU,就是衍生字段,用来均衡三个月的MOU数据的波动。结果是几个包含大量字段的表,俗称宽表。
由于C/S架构速度和存储的限制,无法进行全量大数据的处理,这三个阶段只能串行处理,抽样和采集完成后,才行进行数据清洗,清洗完所有数据后,才能进入衍生数据的阶段。数据的抽样和采集就需要很长时间,将大量原始数据从接口文件装载到挖掘服务器的存储就需要大量时间,然后用一周时间进行数据清洗,一周时间进行衍生数据生成,整个过程需要大量的存储空间并且极其消耗时间,往往在一个月之后才能进入到建模阶段。
除传统的C/S架构的挖掘软件,目前已经有公司发展出RHadoop,通过在Hadoop的核心组件上封装一层R语言支持,使R算法能够运行在Hadoop上,初步实现了分布式开发,但到目前为止,由于性能问题并且开发过程过于复杂,没有成功的案例。
通过对上述各应用场景的具体数据挖掘分析,可以得出结论:只有从系统架构、挖掘流程、软件产品这三个方面都做出大的改变,才能满足大数据时代实时数据挖掘的需要。
现有技术存在的问题是:对大数据处理中的海量数据的处理效率低下,比如,IBM公司收购的SPSS公司后,推出挖掘产品Modeler(原Clementine)至今还没有推出能够在Hadoop上运行的版本。SAS公司则提供了针对HiveQL的接口,通过接口来读取Hadoop中的数据,通过接口来写数据的方式,并在内存中实现分布式的算法来兼容Hadoop,但这也只是一种过渡方式,因为SAS的算法不能在Hadoop上运行。RHadoop上的R算法能够运行在Hadoop上,初步实现了分布式,但速度太慢,效率较低。因此,现有的挖掘模式应用到大数据,主要存在以下三个不足:
(1)主流的数据挖掘工具厂家保留C/S架构,只能沿用以小型机做服务器的工作方式。很多公司已经多年未采购小型机,机器性能已经无法支撑。
(2)采用传统的CRISP-DM挖掘流程,除业务理解和数据理解,这2个过程外,还经过数据准备、建模、评估和部署这四个阶段。其中数据准备过程耗时超过1月;建模过程需要2周时间;评估也需要1周时间调整;部署也需要1周时间;不但整个挖掘过程的时间长达2个月以上,同时,还需要定期训练模型。
(3)没有合适的可商用挖掘工具,除去价格因素,传统的C/S模式,已经无法支撑快速发展的业务需求。RHadoop虽然解决分布式计算的困难,但存在计算速度慢和数据准备复杂的不足,难以满足实时营销等应用的需要。
上述应用场景,采用本发明实施例,将集中的串行的数据准备过程分解为分散的并行操作,重新组合这些操作,加快数据处理速度;采用分布式内存R语言建模,实现大数据量的快速建模;将模型评估和部署合并为一个模块,去掉模型部署过程。从而,至少可以解决三个问题:1)应用分布式的数据挖掘工具软件,全量处理大数据,去掉抽样和数据挖掘服务器存储的过程,实现大数据的在线挖掘。2)支持快速迭代式的挖掘流程,最主要是改变之前的数据准备三个阶段的串行为并行操作,及时为后续建模提供数据。3)支持分钟级别的实时应用。在此基础上,通过实现垃圾短信用户识别的案例,来对比传统的挖掘流程和工具的不同。
在实际生产中,经过数据理解这个探索阶段,已经基本可以知道数据源的具体情况,数据存在的奇异值、缺失等情况,希望衍生的新字段和计算方法等,因此,如果将数据处理过程进行小粒度切割,按条对数据进行处理,整个过程就近似变成并行处理,具体的,在采集的时候,从接口中读出相关记录,根据相关规则进行实时清洗,清洗的对象是一条记录或者一个字段。清洗后按照计算规则生成衍生字段,再入库保存到磁盘。整个过程均在内存中处理,减少2次数据写入和读取磁盘的次数。这个是本专利的主要创新点之一。
采用并行操作,能够实时产生建模需要的数据,积累到一定量的数据就可以建模,不必等拿到所有数据再开始建模。如图5所示为分布式大数据实时挖掘的架构示意图,与现有技术的主要不同在于:CRISP-DM的是数据准备阶段变成并行处理的数据处理,评估和部署变成了一个过程。采用分布式平台构建模型,建模时间最大能够缩短为分钟级别。流式处理,适合于一次处理一个模型,其它的模型生成的数据作为辅助数据,来配合新模型的部署。通过新模型对全网用户进行评估,如果效果好,就作为成果部署。部署和评估就成为一个环节。
如图5所示,数据处理与现有技术有所区别,新的数据处理包括实时抽取、实时转换和存储三个环节,不再需要抽样。采用统一的流处理架构,将清洗和衍生的规则写入流处理规则中,在采集的时候,实时进行清洗,再生成衍生字段,整个过程基本是分钟级别,甚至秒级。结果主要是KV数据(宽表),保存到分布式文件系统(HDFS)中,或者保存在HBase中,也可以保存在内存中缓存起来,供下一步处理。
其中,如图6所示为实时数据处理流程的示意图,包括如下的数据处理过程:
实时抽取和实时转换采用流处理架构实现,采用消息处理机制实现大量的数据处理。如图7所示的数据处理架构,自下而上包括四个层次,分别是抽取、消息队列、流处理和存储集群。
第一层,数据抽取集群。采用Flume/Scribe这样的程序,部署在业务系统接口,实时监控接口变化,发现新数据立即抽取。根据数据的频率和大小不同,分配相应的资源,保证系统能够在1分钟之内,将所有新增接口数据读取出来,传入消息队列集群。
第二层,消息队列集群。采用Kafka、ActiveMQ等程序,接受抽取集群输入,将结果可靠缓存起来,供流处理集群。抽取的速度快,流处理的速度相对慢一些,需要消息队列作为缓冲,保证每一条消息都被处理。
第三层,流处理集群。采用Storm、S4或spark等程序,读取消息队列的缓存,进行数据处理,包括规则过滤、消息转换等其他ETL类工作。流处理针对每个挖掘的目标进行定义,主要生成计算字段。
第四层,存储集群。计算字段存储在磁盘,保存为HBase/HDFS文件,部分数据(一般是维表),可以直接放置在内存中缓存起来,提供建模使用。
缓存和队列的数据,要有快照功能,如果遇到特殊情况,在多次提交都无法处理的情况下,系统会将数据先保存到硬盘,等候一定时间再读出来处理。
执行完如图5所示,数据处理后,需要对模型进行如下的构建过程:
如图8所示为R在Spark上运行示意图,通过R语言和Spark平台的结合,实现基于内存的分布式R算法来构建模型。
R语言一般运行在单机环境中,所有的数据都读入到内存中进行处理。随着数据量的快速增加和处理的及时性要求不断提高,这种工作方式遇到了困难。Spark作为新一代基于内存的分布式计算平台,适合于做迭代式的计算。同样是基于内存计算,如果Spark平台结合R语言,能够很好的实现快速的分布式计算。经过测试,在新版本的Spark中生成R语言的数据对象,针对这个对象编程,R语言的封装包都能正常运行。
本实时挖掘方案主要分为三个运行阶段。第一阶段,客户端编写程序,将程序提交给主机Master进行调度。第二阶段,主机将R语言纳入Spark环境,并分发到各个工作机。第三阶段,工作机启动Spark线程和R运行环境,进行模型计算。最后,工作机将计算结果汇总到主机,主机再发送给客户端。就能查询到数据挖掘的成果。
经过多次实验和对比测试,SparkR计算速度远超过单机水平,秒级完成模型的构建。
以垃圾短信源的实时识别的大数据处理为例,由于垃圾短信给用户带来很大的危害,对于垃圾短信,需要在垃圾短信源出现后,尽快发现并封掉它,这成为电信运营商亟待解决的问题。对应这个应用场景,采用本发明实施例,包括以下内容:
一,在业务理解阶段,现在的垃圾短信大多是定向发送,如通过航班延误改签的欺诈短信都是发送给一周内坐飞机的用户,如移动积分换现金的诈骗短信都是发送给某个小区范围内的用户.......针对这种情况,需要做两件工作。第一件,根据历史信息,对所有的用户进行分群,找到可能的诈骗号码和需要保护的号码。第二件,实时采集高危号码的数据,挖掘分析出可能的欺诈行为,及时采取行动,停止发送,减少可能的侵害。其中,对于第一件,客户分群来说,可以将垃圾短信相关用户分为黑名单用户、一级白名单用户、二级白名单、高风险用户、低风险用户及普通用户五类。对于第二件,即如何采用分布式的大数据实时挖掘方法来实现在线搜集和分析高危用户的数据并进行监控。
二,在数据理解阶段,垃圾短信发送一般具有突发性、广播性、短信占比高和发送占比高等特征,根据这些特征,获得需要的源数据包括:短信发送条数、网内条数、网间条数、峰值接收条数、发送人数,短信接收条数、短信接收人数、短信费占比等数据。短信相关的直接数据为11个状态类字段和19个计算字段。
三,在数据处理阶段,1)对于数据源接口:短信平台每1分钟发送一次短信清单,包括上行和下行短信,通过FTP方式小批量发送到数据抽取集群。2)对于数据获取:在接口机上部署工具,实时抽取接口机中的短信清单,发送到消息处理集群,处理后的结果加入到流处理集群中。3)对于数据处理:将结果存在三个内存表中,实时读取短信清单并进行汇总存入当前表中将结果保存到HDFS存储集群提供给建模使用。例如,短信发送条数这个字段,本系统读取清单后,分布式计算某个用户的在这次接口数据中的发送短信条数,保存到当前表中。
经过以上过程,就获得所有需要的数据,在几分钟之内,就能够准备好到目前为止的数据,进行建模。
四,在模型构建阶段,采用R语言的决策树算法建模,从最新的黑名单用户中训练出算法,再对高风险用户进行打分。第一次使用的时候,需要进行验证。黑名单识别模型运行稳定后,就不需要验证。直接从最新的黑名单训练算法,对高风险用户进行打分就可以。
1)关键变量和训练数据
得出进入决策树模型的关键变量如表1所示:
表1
2)具体建模步骤如下:
a1、初始化并生成SparkR的对象和存储:
在Spark环境生成SC、sqlContext2个对象,SC是生成R语言在Spark中的运行环境,sqlContext是生成SQL运行环境,并定义存储样本数据的变量。
a2、从HDFS中读出短信发送月表数据到SparkR存储:
从存放在HDFS中的文件中,读出样本数据,就是上面提到的垃圾短信相关的用户数据。
a3、划分训练集和测试集:
将用户的样本数据,根据约定的数据量的比例,划分为“训练集”、和“验证集”两个部分,分别为2.5万和1万,并且细分为正样本和负样本。
a4、调用rPart决策树函数,设置数据源(训练集)、节点数、叶子树、最大深度等决策树算法的参数,主要工作包括构建决策树和剪枝。
构建:
ct<-rpart.control(xval=10,minsplit=20,cp=0.1)
说明:xval是交叉验证,设为10;minsplit是最小分支节点数,设为20;minbucket:叶子节点最小样本数,采用默认值,不单独设置;maxdepth:树的最大深度,采用默认值,不单独设置;cp全称为complexity parameter,指某个点的复杂度,设为0.1。
剪枝:
fit<-rpart(SMSData~sms,data=SMSData,method="class",control=ct,parms=list(prior=c(0.65,0.35),split="information"));
Method参数用来进行树的末端数据类型选择相应的变量分割方法:连续性method=“anova”,离散型method=“class”,计数型method=“poisson”,生存分析型method=“exp”;parms用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法(gini和information);cost损失矩阵,在剪枝的时候,叶子节点的加权误差与父节点的误差进行比较,考虑损失矩阵的时候,从将“减少-误差”调整为“减少-损失”。
a5、结果转化为dataframe分布式数据框格式
Dataframe是R语言常用的数据格式,供后续的plot画图函数使用。采用plot画图函数展示挖掘的效果
3)模型输出:
模型输出的结果表明是否是在高风险客户表中。
R建模和传统的工具软件建模难度是一样。R语言是跑在分布式平台上,可以通过弹性部署机器来应对垃圾短信的频率。在实际应用上,在垃圾短信高发的时候可以实现在几分钟内识别出垃圾短信号码。
五,在模型评估和部署阶段,覆盖率、提升率和命中率在垃圾短信模型是十分重要的指标。图9-10为模型训练集评估结果图,当选择概率TOP 20%用户时,已经能够正确识别出3771垃圾短信用户,准确率在75%,查全率在75.4%,模型LIFT值达到3.75,模型在验证集应用中表现良好。
通过以上算法,将判断为垃圾短信用户的前5%的号码作为疑似垃圾短信用户号码,发送给短信中心进行处理。高风险用户发出短信后,马上收集短信话单进行建模,十分钟内就能判定是否垃圾短信源,并可以采取强制措施,保护用户不受骚扰。
本发明实施例,主要包括三个部分:1)利用流处理架构来实现并行和实时的数据准备过程。采用流处理架构将集中的数据批量处理,分解为零散流式处理。将之前的数据挖掘流程中最耗费时间的数据处理过程,转变为即抽取即处理的模式。2)采用R语言来实现分布式数据挖掘。采用R语言进行分布式数据挖掘,即在各个数据块上运行算法,最后汇总结果,打破C/S架构的限制,可以直接处理海量数据,无需额外进行模型部署,并且具有良好的可拓展性。3)通过内存计算来提升建模的速度。结合Spark的内存计算特点,建模的速度有很大的提升,部分模型的运算速度甚至达到100倍的提升。
本发明实施例,具有以下的技术优点:
1)速度快捷。之前的挖掘过程要3个月以上才能完成1个模型,采用本方案后,只用很短时间,甚至几个小时就可以完成。主要是将之前的数据准备和建模的串行处理变成了并行处理,而且是加载到内存中进行处理。
2)方便易用。之前基于C/S的小型机架构,升级为PC Server集群,既容易组网,又降低成本。系统的扩展性好,增加PC Server就能够快速扩展。
3)符合发展趋势。当前的营销已经进入事件营销、基于关系的营销阶段,需要根据客户的行为,实时提供业务和信息。本方案为实时营销提供了一种可行的实践。
本发明实施例所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计算机程序用于执行本发明实施例的一种基于分布式数据的实时挖掘方法。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种基于分布式数据的实时挖掘方法,其特征在于,所述方法包括:
将集中的串行数据分解为可执行并行操作的数据;
当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,得到数据模型;
根据所述数据模型和辅助数据进行处理,得到数据处理结果;
所述数据模型为多个,进行所述数据建模得到第一数据模型后,将用于第X数据模型的数据作为所述辅助数据;所述根据所述数据模型和辅助数据进行处理,包括:根据第一数据模型和对应第X数据模型生成的辅助数据进行处理。
2.根据权利要求1所述的方法,其特征在于,所述将集中的串行数据分解为可执行并行操作的数据,包括:
通过部署在业务系统的接口实时监控接口变化,监控到新增数据时,立即进行数据抽取,将所有接口新增数据读取出来,并传入消息队列集群;
读取的数据在消息队列集群中的消息队列中进行缓存,以供流处理集群处理;
流处理集群读取消息队列中缓存的数据,进行包括规则过滤和实时转换在内的数据处理,将处理结果存入存储集群。
3.根据权利要求2所述的方法,其特征在于,所述进行包括规则过滤和实时转换在内的数据处理,包括:
根据预设规则进行实时清洗,所述实时清洗所针对的清洗对象为按照预设粒度对数据按条进行处理所得到的一条记录或者一个字段;
实时清洗后,根据预设规则生成衍生字段,实现实时转换。
4.根据权利要求2所述的方法,其特征在于,所述将处理结果存入存储集群,包括:
将处理结果保存为HBase/HDFS格式文件,存入内存表中,或者,直接存入内存中。
5.根据权利要求4所述的方法,其特征在于,所述当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,包括:
将基于内存的分布式R算法与Spark平台相结合,在Spark平台中生成所述分布式R算法对应的数据对象,得到SparkR的对象;
从所述存储集群中读出数据到SparkR存储;
划分训练集和测试集;
调用决策树算法的参数构建数据模型,将所述处理结果转化为dataframe分布式数据框格式。
6.一种基于分布式数据的实时挖掘装置,其特征在于,所述装置包括:
第一处理单元,用于将集中的串行数据分解为可执行并行操作的数据;
数据建模单元,用于当所述可执行并行操作的数据累积达到预定数量时,按照基于内存的分布式算法进行数据建模,得到数据模型;
处理单元,用于根据所述数据模型和辅助数据进行处理,得到数据处理结果;
所述数据模型为多个,进行所述数据建模得到第一数据模型后,将用于第X数据模型的数据作为所述辅助数据;所述处理单元,进一步用于根据第一数据模型和对应第X数据模型生成的辅助数据进行处理。
7.根据权利要求6所述的装置,其特征在于,所述第一处理单元,包括:
数据抽取集群,用于通过部署在业务系统的接口实时监控接口变化,监控到新增数据时,立即进行数据抽取,将所有接口新增数据读取出来,并传入消息队列集群;
消息队列集群,用于将读取的数据置入消息队列中进行缓存,以供流处理集群处理;
流处理集群,用于读取消息队列中缓存的数据,进行包括规则过滤和实时转换在内的数据处理,将处理结果存入存储集群;
存储集群,用于存储所述处理结果。
8.根据权利要求7所述的装置,其特征在于,所述流处理集群,进一步用于:
根据预设规则进行实时清洗,所述实时清洗所针对的清洗对象为按照预设粒度对数据按条进行处理所得到的一条记录或者一个字段;
实时清洗后,根据预设规则生成衍生字段,实现实时转换。
9.根据权利要求7所述的装置,其特征在于,所述存储集群,进一步用于:
将处理结果保存为HBase/HDFS格式文件,存入内存表中,或者,直接存入内存中。
10.根据权利要求9所述的装置,其特征在于,所述数据建模单元,进一步用于:
将基于内存的分布式R算法与Spark平台相结合,在Spark平台中生成所述分布式R算法对应的数据对象,得到SparkR的对象;
从所述存储集群中读出数据到SparkR存储;
划分训练集和测试集;
调用决策树算法的参数构建数据模型,将所述处理结果转化为dataframe分布式数据框格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610166385.8A CN107220261B (zh) | 2016-03-22 | 2016-03-22 | 一种基于分布式数据的实时挖掘方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610166385.8A CN107220261B (zh) | 2016-03-22 | 2016-03-22 | 一种基于分布式数据的实时挖掘方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107220261A CN107220261A (zh) | 2017-09-29 |
CN107220261B true CN107220261B (zh) | 2020-10-30 |
Family
ID=59927401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610166385.8A Active CN107220261B (zh) | 2016-03-22 | 2016-03-22 | 一种基于分布式数据的实时挖掘方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107220261B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992354B (zh) * | 2017-11-14 | 2020-07-31 | 阿里巴巴(中国)有限公司 | 用于降低内存负载的方法以及装置 |
CN108038228A (zh) * | 2017-12-25 | 2018-05-15 | 佛山市车品匠汽车用品有限公司 | 一种基于数据库的挖掘方法和装置 |
CN108665174A (zh) * | 2018-05-16 | 2018-10-16 | 中国平安人寿保险股份有限公司 | 风险预警方法、装置、计算机设备以及存储介质 |
CN110908994A (zh) * | 2018-09-14 | 2020-03-24 | 北京京东金融科技控股有限公司 | 数据模型处理方法、系统、电子设备及可读介质 |
CN109408711B (zh) * | 2018-09-29 | 2019-12-06 | 北京三快在线科技有限公司 | 数据过滤方法、装置、电子设备及存储介质 |
CN110109976B (zh) * | 2019-05-15 | 2021-09-10 | 成都四方伟业软件股份有限公司 | 数据处理方法、装置、系统及存储介质 |
CN110569237A (zh) * | 2019-09-12 | 2019-12-13 | 上海富数科技有限公司 | 实现实时数据清洗处理的系统及其方法 |
CN110716953B (zh) * | 2019-10-10 | 2023-08-22 | 深圳前海微众银行股份有限公司 | Sql语句自动生成方法、装置、设备及可读存储介质 |
CN111918226B (zh) * | 2020-07-23 | 2022-01-07 | 广州市申迪计算机系统有限公司 | 基于实时信令的国际高结算盗打行为的分析方法及装置 |
CN113177040A (zh) * | 2021-04-29 | 2021-07-27 | 东北大学 | 铝/铜板带材生产全流程大数据清洗与分析方法 |
CN114996331B (zh) * | 2022-06-10 | 2023-01-20 | 北京柏睿数据技术股份有限公司 | 一种数据挖掘控制方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105139281A (zh) * | 2015-08-20 | 2015-12-09 | 北京中电普华信息技术有限公司 | 一种电力营销大数据的处理方法及系统 |
CN105279603A (zh) * | 2015-09-11 | 2016-01-27 | 福建师范大学 | 可动态配置的大数据分析系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9454573B1 (en) * | 2013-02-25 | 2016-09-27 | Emc Corporation | Parallel processing database system with a shared metadata store |
-
2016
- 2016-03-22 CN CN201610166385.8A patent/CN107220261B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105139281A (zh) * | 2015-08-20 | 2015-12-09 | 北京中电普华信息技术有限公司 | 一种电力营销大数据的处理方法及系统 |
CN105279603A (zh) * | 2015-09-11 | 2016-01-27 | 福建师范大学 | 可动态配置的大数据分析系统及方法 |
Non-Patent Citations (1)
Title |
---|
基于Hadoop2.0的数据挖掘算法并行化研究;瞿卓;《中国优秀硕士学位论文全文数据库 信息科技辑》;20151015(第10期);第I138-214页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107220261A (zh) | 2017-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107220261B (zh) | 一种基于分布式数据的实时挖掘方法及装置 | |
CN105183625B (zh) | 一种日志数据处理方法和装置 | |
US8909562B2 (en) | Markov modeling of service usage patterns | |
US20060074621A1 (en) | Apparatus and method for prioritized grouping of data representing events | |
CN109818961B (zh) | 一种网络入侵检测方法、装置和设备 | |
CN110336838B (zh) | 账号异常检测方法、装置、终端及存储介质 | |
CN106803799B (zh) | 一种性能测试方法和装置 | |
CN113051308A (zh) | 告警信息处理方法、设备、存储介质及装置 | |
CN111079937A (zh) | 一种快速建模的方法 | |
CN109918296A (zh) | 软件自动化测试方法及装置 | |
CN106453320A (zh) | 恶意样本的识别方法及装置 | |
CN111723846A (zh) | 基于随机性特征的加密和压缩流量识别方法及装置 | |
CN108073582B (zh) | 一种计算框架选择方法和装置 | |
CN110751354B (zh) | 一种异常用户的检测方法和装置 | |
CN112632539B (zh) | 一种Android系统恶意软件检测中动静混合特征提取方法 | |
CN110442782B (zh) | 一种云资源检索方法与装置 | |
CN111104384A (zh) | 数据预处理方法、装置、设备和存储介质 | |
CN107688619A (zh) | 一种日志数据处理方法及装置 | |
CN110019152A (zh) | 一种大数据清洗方法 | |
WO2019153546A1 (zh) | 万级维度数据生成方法、装置、设备以及存储介质 | |
CN114925365A (zh) | 一种文件处理方法、装置、电子设备及存储介质 | |
CN112579833B (zh) | 基于用户操作数据的业务关联关系获取方法及装置 | |
US20220237160A1 (en) | Data-analysis-based facility for adjusting trace fields of a database trace | |
CN114189585A (zh) | 骚扰电话异常检测方法、装置及计算设备 | |
CN111309706A (zh) | 模型训练方法、装置、可读存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |