一种数据挖掘方法和装置、一种可读介质和存储控制器与流程

文档序号:11582966阅读:198来源:国知局
一种数据挖掘方法和装置、一种可读介质和存储控制器与流程

本发明涉及数据分析及挖掘技术领域,特别涉及一种数据挖掘方法和装置、一种可读介质和存储控制器。



背景技术:

随着信息技术的快速发展和互联网逐渐的被广泛应用,特别是云计算和大数据时代的来临,互联网上的数据正在呈指数级增长,而互联网同时成为了最重要的信息来源。但是,互联网的信息具有数据量大、维度高、结构复杂不规则,而且包含大量的噪声数据,于是面对如此庞大、复杂的信息,如何快速的组织、管理、利用、挖掘出有价值的信息是一些非常重大的挑战。

数据挖掘又称数据库中的知识发现,是指从大量的不完全的、有噪声的、模糊的数据中提取隐含的、未知的、非平凡的及有潜在应用价值的信息或模式。

传统的数据挖掘方法一般只适用于低维的小数据集,对于多维度的海量大数据时,由于运算时间和对计算资源的要求的不断提高,致使传统的数据挖掘方法在进行数据挖掘时成本过高并且效率较低。



技术实现要素:

本发明实施例提供了一种数据挖掘方法和装置、一种可读介质和存储控制器,能够降低数据挖掘的成本以及提高数据挖掘的效率。

第一方面,本发明实施例提供了一种数据挖掘方法,该数据挖掘方法包括:

将原始数据存储于分布式文件系统hdfs上,并分配到至少一个数据节点上;

将具有m维特征向量的原始数据进行降维处理,形成具有m维特征向量的低维数据,其中m>m;

按照预设比例,在每一个数据节点上将低维数据划分为训练数据和测试数据;

在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型;

利用上述的多层感知器分类模型对测试数据进行预测,确定多层感知器分类模型的预测准确性并实现数据挖掘。

优选地,在每一个数据节点上将低维数据划分为训练数据和测试数据之后,进一步包括:

在每一个数据节点上训练数据组成训练数据集,以及测试数据组成测试数据集;

在在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型之前,进一步包括:

通用并行框架spark平台从hdfs中读取每一个数据节点上的训练数据集;

spark平台将读取的每一个训练数据集转换为弹性分布式数据集rdd对象;

spark平台将每一个rdd对象存储在内存中;

在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型,包括:

spark平台将rdd对象分配到数据节点上进行训练,获得多层感知器分类模型。

优选地,spark平台将rdd对象分配到数据节点上进行训练,获得多层感知器分类模型,包括:

通过pipelining技术将训练执行流程分解为多个工作阶段;

将每一个工作阶段分配到数据节点上;

在数据节点上执行每一个工作阶段,获得多层感知器分类模型。

优选地,在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型,包括:

设定训练参数t,初始化权值ω(0),其中t=0,ω(0)为小的随机数;

对于训练数据执行下述训练:

s1:对训练数据进行计算,从输入层经过隐含层到达输出层获得各层输出值

s2:对输出层计算训练误差δ:

s3:从输出层向输入层计算隐含层的训练误差δ:

s4:计算并保存各个加权值的修正量其中,γ为动量项的学习率;

s5:修正加权值:ωij(t+1)=ωij(t)+δωij;

s6:判断当前训练数据t是否收敛性,若是,则结束训练,否则,将训练数据t+1作为当前训练数据,执行s1。

第二方面,本发明实施例提供了一种数据挖掘装置,该数据挖掘装置包括:分配单元、降维单元、划分单元、训练单元和挖掘单元,其中,

分配单元,用于将原始数据存储于分布式文件系统hdfs上,并分配到至少一个数据节点上;

降维单元,用于将具有m维特征向量的原始数据进行降维处理,形成具有m维特征向量的低维数据,其中m>m;

划分单元,用于按照预设比例,在每一个数据节点上将低维数据划分为训练数据和测试数据;

训练单元,用于在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型;

挖掘单元,用于利用上述的多层感知器分类模型对测试数据进行预测,确定多层感知器分类模型的预测准确性并实现数据挖掘。

优选地,该数据挖掘装置进一步包括:集合单元和通用并行框架spark平台,其中,

集合单元,用于在每一个数据节点上训练数据组成训练数据集,以及测试数据组成测试数据集;

spark平台,用于从hdfs中读取每一个数据节点上的训练数据集、将读取的每一个训练数据集转换为弹性分布式数据集rdd对象以及将每一个rdd对象存储在内存中;

训练单元,具体用于通过spark平台将rdd对象分配到数据节点上进行训练,获得多层感知器分类模型。

优选地,训练单元,包括:分解子单元、分配子单元和获得子单元,其中,

分解子单元,用于通过pipelining技术将训练执行流程分解为多个工作阶段;

分配子单元,用于将每一个工作阶段分配到数据节点上;

获得子单元,用于在数据节点上执行每一个工作阶段,获得多层感知器分类模型。

优选地,训练单元,包括:预设子单元、输出子单元、第一误差子单元、第二误差子单元、修正量子单元、修正子单元和判断子单元,其中,

预设子单元,用于设定训练参数t,初始化权值ω(0),其中t=0,ω(0)为小的随机数;

输出子单元,用于对训练数据进行计算,从输入层经过隐含层到达输出层获得各层输出值

第一误差子单元,用于对输出层计算训练误差δ:

第二误差子单元,用于从输出层向输入层计算隐含层的训练误差δ:

修正量子单元,用于计算并保存各个加权值的修正量其中,γ为动量项的学习率;

修正子单元,用于修正加权值:ωij(t+1)=ωij(t)+δωij;

判断子单元,用于判断当前训练数据t是否收敛性,若是,则结束训练,否则,将训练数据t+1作为当前训练数据,执行触发输出子单元。

第三方面,本发明实施例提供了一种可读介质,该可读介质包括:执行指令,当存储控制器的处理器执行执行指令时,存储控制器执行权第一方面中任一的数据挖掘方法。

第四方面,本发明实施例提供了一种存储控制器,该存储控制器包括:处理器、存储器和总线;

处理器和存储器通过总线连接;

存储器,当存储控制器运行时,处理器执行存储器存储的执行指令,以使存储控制器执行第一方面中任一的数据挖掘方法。

本发明实施例提供了一种数据挖掘方法和装置、一种可读介质和存储控制器,通过将原始数据存储到分布式文件系统hdfs上,并将原始数据分配到至少一个数据节点上,由于分布式计算框架的特点,使得海量计算任务分布带对个数据节点上,采用分而治之的策略,有效降低了单台服务器的计算量和复杂度,可以提高计算效率。同时通过对原始数据进行降维处理,降低了复杂度,不仅进一步提高了计算效率,并且提高了数据预测的准确度。同充分利用多层感知器分类算法的数据迭代运行效率高,方法简单实用,实现方便的优势,不仅降低了成本并且再一次提高了计算效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种数据挖掘方法的流程图;

图2是本发明一个实施例提供的一种多层感知器拓扑结构示意图;

图3是本发明一个实施例提供的一种误差反向传递的示意图;

图4是本发明一个实施例提供的另一种数据挖掘方法的流程图;

图5是本发明一个实施例提供的一种数据挖掘装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种数据挖掘方法,该方法可以包括以下步骤:

步骤101:将原始数据存储于分布式文件系统hdfs上,并分配原始数据到至少一个数据节点上。

步骤102:将具有m维特征向量的原始数据进行降维处理,形成具有m维特征向量的低维数据,其中m>m。

步骤103:按照预设比例,在每一个数据节点上将低维数据划分为训练数据和测试数据。

步骤104:在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型。

步骤105:利用多层感知器分类模型对测试数据进行预测,确定多层感知器分类模型的预测准确性并实现数据挖掘。

在上述实施例中,通过将原始数据存储到分布式文件系统hdfs上,并将原始数据分配到至少一个数据节点上,由于分布式计算框架的特点,使得海量计算任务分布带对个数据节点上,采用分而治之的策略,有效降低了单台服务器的计算量和复杂度,可以提高计算效率。同时通过对原始数据进行降维处理,降低了复杂度,不仅进一步提高了计算效率,并且提高了数据预测的准确度。同充分利用多层感知器分类算法的数据迭代运行效率高,方法简单实用,实现方便的优势,不仅降低了成本并且再一次提高了计算效率。

为了提高数据挖掘的可靠性,在本发明一个实施例中,在每一个数据节点上将低维数据划分为训练数据和测试数据之后,进一步包括:

在每一个数据节点上训练数据组成训练数据集,以及测试数据组成测试数据集;

在在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型之前,进一步包括:

通用并行框架spark平台从hdfs中读取每一个数据节点上的训练数据集;

spark平台将读取的每一个训练数据集转换为弹性分布式数据集rdd对象;

spark平台将每一个rdd对象存储在内存中;

在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型,包括:

spark平台将rdd对象分配到数据节点上进行训练,获得多层感知器分类模型。

在该实施例中,spark是ucberkeleyamplab所开源的类海杜普hadoopmapreduce的通用的并行计算框架,spark基于mapreduce算法实现的分布式计算,拥有hadoopmapreduce所具有的优点;但不同于mapreduce的是job中间输出和结果可以保存在内存中,从而不再需要读写hdfs,所以在迭代次数相同时spark比hadoop要快上100倍;而访问磁盘的速度比hadoop快10倍。因此spark更适合运行更复杂的算法,能够有效的提高计算效率。rdd是只读、支持容错、可分区的内存分布式数据集,可以一部分或全部分缓存在集群内存中,以便在下次计算过程中重用。因此充分利用spark的内存管理机制、运算优化机制和计算容错机制,不仅可以提高数据挖掘的计算效率,并且能够提高计算结果的可靠性。

为了提高资源的利用率,在本发明一个实施例中,spark平台将rdd对象分配到数据节点上进行训练,获得多层感知器分类模型,包括:

通过pipelining技术将训练执行流程分解为多个工作阶段;

将每一个工作阶段分配到数据节点上;

在数据节点上执行每一个工作阶段,获得多层感知器分类模型。

在该实施例中,可以进一步将每个工作阶段根据rdd对象的数量分解为相同数量的子任务,通过spark的资源调度器将各个子任务分配到数据节点上。充分利用spark的rdd特性,把每个数据节点的数据集再细分为较小的数据单元,根据系统资源优化调度计算任务,并行执行或等待系统资源就绪后顺序执行,能够显著提高系统资源利用率。

为了提高模型的准确度,在本发明一个实施例中,在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型,包括:

设定训练参数t,初始化权值ω(0),其中t=0,ω(0)为小的随机数;

对于训练数据执行下述训练:

s1:对训练数据进行计算,从输入层经过隐含层到达输出层获得各层输出值

s2:对输出层计算训练误差δ:

s3:从输出层向输入层计算隐含层的训练误差δ:

s4:计算并保存各个加权值的修正量其中,γ为动量项的学习率;

s5:修正加权值:ωij(t+1)=ωij(t)+δωij;

s6:判断当前训练数据t是否收敛性,若是,则结束训练,否则,将训练数据t+1作为当前训练数据,执行s1。

在该实施例中,请参考图2,建立多层感知器拓扑结构,由输入层、至少一个隐含层和输出层组成,隐含层的个数由用户设定。图中节点的个数同样可以有用户设定。请参考图3,多层感知器分类算法在迭代过程中,通过误差反向传递采用梯度下降算法对误差进行修正,加快了收敛速度,提高了信噪比,降低了噪音数据,使模型准确度有了极大提高。

为更清楚说明本发明的技术方案,下面参考图4对本发明提供的数据挖掘方法进行详细介绍。

在下述实施例中,采用hadoop分布式系统+spark内存计算框架,大数据集群组成为:客户端服务器1台,数据节点服务器48台,其它辅助服务器5台,共计54台服务器。每台数据节点服务器配置如下:2颗intel(r)xeon(r)cpue5-2620v2@2.10ghz,96gbddr3ecc内存,12块2tsata盘,2个万兆网口,centos7.264位linux操作系统。软件系统为:apachehadoop2.7.3,spark2.1.0,编程语言为:scala。

具体实施步骤如下:

步骤401:将原始数据存储于hdfs上,并分配原始数据到48个数据节点上。

步骤402:将具有m维特征向量的原始数据进行降维处理,形成具有m维特征向量的低维数据,其中m>m。

在该步骤中,m和m的取值取决于原始数据的复杂度。

步骤403:按照预设比例,在48个数据节点上将低维数据划分为训练数据和测试数据,组成48个训练数据集和48个测试数据集。

步骤404:通过spark平台将48个训练数据集转换成48个rdd对象。

步骤405:通过pipelining技术将训练执行流程分解为多个工作阶段。

步骤406:将每一个工作阶段分配到数据节点上。

步骤407:在数据节点上执行每一个工作阶段,获得多层感知器分类模型。

步骤408:利用多层感知器分类模型对测试数据集进行预测,确定多层感知器分类模型的预测准确性并实现数据挖掘。

在该实施例中,将多层感知器分类算法应用在分布式计算框架中,充分利用了多层感知器分类算法的优点,并结合分布式计算框架的特点,使得海量的计算任务均匀分布到各个数据节点上,采用分而治之的策略,有效降低了单台服务器的计算量和复杂度,大大提高了计算效率。多层感知器分类算法在迭代过程中,采用梯度下降算法对误差进行修正,加快了收敛速度,提高了信噪比,降低了噪音数据,使模型准确度有了极大提高。训练数据集和测试数据集存放于分布式文件系统,对整个大数据采用分而治之的策略,使挖掘运算得以并行化运行,简化了算法复杂度,提高了运算速度。多层感知器分类算法在spark上的使用,充分利用了spark的内存管理机制、运算优化机制和计算容错机制,不但提高了挖掘算法的运行效率,更提高可靠性。

如图5所示,本发明实施例提供了一种数据挖掘装置,该数据挖掘装置可以包括:分配单元501、降维单元502、划分单元503、训练单元504和挖掘单元505,其中,

分配单元501,用于将原始数据存储于分布式文件系统hdfs上,并分配到至少一个数据节点上;

降维单元502,用于将具有m维特征向量的原始数据进行降维处理,形成具有m维特征向量的低维数据,其中m>m;

划分单元503,用于按照预设比例,在每一个数据节点上将低维数据划分为训练数据和测试数据;

训练单元504,用于在每一个数据节点上对训练数据进行训练,获得多层感知器分类模型;

挖掘单元505,用于利用多层感知器分类模型对测试数据进行预测,确定多层感知器分类模型的预测准确性并实现数据挖掘。

为了提高数据挖掘的可靠性,在本发明一个实施例中,该数据挖掘装置可以进一步包括:集合单元和通用并行框架spark平台,其中,

集合单元,用于在每一个数据节点上训练数据组成训练数据集,以及测试数据组成数据集;

spark平台,用于从hdfs中读取每一个数据节点上的训练数据集、将读取的每一个训练数据集转换为弹性分布式数据集rdd对象以及将每一个rdd对象存储在内存中;

训练单元,具体用于通过spark平台将rdd对象分配到数据节点上进行训练,获得多层感知器分类模型。

为了提高资源的利用率,在本发明一个实施例中,训练单元,包括:分解子单元、分配子单元和获得子单元,其中,

分解子单元,用于通过pipelining技术将训练执行流程分解为多个工作阶段;

分配子单元,用于将每一个工作阶段分配到数据节点上;

获得子单元,用于在数据节点上执行每一个工作阶段,获得多层感知器分类模型。

为了提高模型的准确度,在本发明一个实施例中,训练单元,包括:预设子单元、输出子单元、第一误差子单元、第二误差子单元、修正量子单元、修正子单元和判断子单元,其中,

预设子单元,用于设定训练参数t,初始化权值ω(0),其中t=0,ω(0)为小的随机数;

输出子单元,用于对训练数据进行计算,从输入层经过隐含层到达输出层获得各层输出值

第一误差子单元,用于对输出层计算训练误差δ:

第二误差子单元,用于从输出层向输入层计算隐含层的训练误差δ:

修正量子单元,用于计算并保存各个加权值的修正量其中,γ为动量项的学习率;

修正子单元,用于修正加权值:ωij(t+1)=ωij(t)+δωij;

判断子单元,用于判断当前训练数据t是否收敛性,若是,则结束训练,否则,将训练数据t+1作为当前训练数据,执行触发输出子单元。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例提供了一种可读介质,该可读介质可以包括:执行指令,当存储控制器的处理器执行执行指令时,存储控制器执行上述任一实施例中的数据挖掘方法。

本发明实施例提供了一种存储控制器,该存储控制器可以包括:处理器、存储器和总线;

处理器和存储器通过总线连接;

存储器,当存储控制器运行时,处理器执行存储器存储的执行指令,以使存储控制器执行上述任一实施例的数据挖掘方法。

综上,本发明的各实施例,至少具有如下有益效果:

1、在本发明的实施例中,通过将原始数据存储到分布式文件系统hdfs上,并将原始数据分配到至少一个数据节点上,由于分布式计算框架的特点,使得海量计算任务分布带对个数据节点上,采用分而治之的策略,有效降低了单台服务器的计算量和复杂度,可以提高计算效率。同时通过对原始数据进行降维处理,降低了复杂度,不仅进一步提高了计算效率,并且提高了数据预测的准确度。同充分利用多层感知器分类算法的数据迭代运行效率高,方法简单实用,实现方便的优势,不仅降低了成本并且再一次提高了计算效率。

2、在本发明的实施例中,将多层感知器分类算法应用在分布式计算框架中,充分利用了多层感知器分类算法的优点,并结合分布式计算框架的特点,使得海量的计算任务均匀分布到各个数据节点上,采用分而治之的策略,有效降低了单台服务器的计算量和复杂度,大大提高了计算效率。

3、在本发明实施例中,多层感知器分类算法在迭代过程中,采用梯度下降算法对误差进行修正,加快了收敛速度,提高了信噪比,降低了噪音数据,使模型准确度有了极大提高。

4、在本发明实施例中,训练数据集和测试数据集存放于分布式文件系统,对整个大数据采用分而治之的策略,使挖掘运算得以并行化运行,简化了算法复杂度,提高了运算速度。

5、在本发明实施例中,多层感知器分类算法在spark上的使用,充分利用了spark的内存管理机制、运算优化机制和计算容错机制,不但提高了挖掘算法的运行效率,更提高可靠性。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1