数据抽样方法及装置制造方法

文档序号:6511093阅读:229来源:国知局
数据抽样方法及装置制造方法
【专利摘要】本申请公开了一种数据抽样方法及装置,其中,该方法包括:获取目标数据,其中,该目标数据包括多个数据块,计算所述目标数据的数据块总数N;根据对样本数的要求计算所述目标数据的抽样样本数M;从每个数据块中分别随机选取R个样本,并构成所述目标数据的抽样样本,其中,在M/N是整数的情况下,R=M/N,在M/N是小数的情况下,R等于M/N向上取整或者向下取整得到的整数。本申请解决了相关技术中的数据抽样的随机性不好的问题,从而提高了抽样样本的随机分布。
【专利说明】数据抽样方法及装置

【技术领域】
[0001] 本发明涉及数据处理领域,具体而言,涉及一种数据抽样方法及装置。

【背景技术】
[0002] -般地,随机抽样是设一个总体含有N个个体,从中逐个不放回地抽取η个个体作 为样本(n S Ν),如果每次抽取使总体内的各个个体被抽到的机会都相等,就把这种抽样方 法叫做简单随机抽样。
[0003] 相关技术中,随机抽样有以下两种方法:
[0004] 在第一种方法中认为输入的数据就是随机的,因此在该方法中,认为直接取前η 行。
[0005] 在第二种方法中,取数据中行数取模m等于c的行,这样随机取出的数据中的行应 该是随机的。在这种方法中,可以根据N和η的大小决定m大概等于多少。
[0006] 对于上述两种方法,都存在问题:
[0007] 对于第一种方法而言,该方法的前提是输入的数据是随机的,但是,在实际情况 中,一般情况下输入的数据的分布是未知的,需要强调的是,未知并不等同随机,其数据的 输入有可能是随机的也有可能不是随机的。
[0008] 第二种方法存在的问题与第一种方法存在的问题是类似的。该方法对数据的排列 要求比较高,如果输入的数据的排列是随机的,那么该方取出的数据基本上是随机的。但是 同第一种方法一样,一般输入的数据可能不是随机排列的。例如,如果数据是按时间排序 的,取模抽样得到的有可能是一天某几个特定小时的或某些特定分钟的数据。因此,第二种 数据抽样方法的随机性也不好。
[0009] 针对相关技术中的数据抽样的随机性不好的问题,尚未提出解决方案。


【发明内容】

[0010] 本申请提供了一种数据抽样的方法及装置,以至少相关技术中的数据抽样的随机 性不好的问题。
[0011] 根据本申请的一个方面,提供了一种数据抽样方法,包括:获取目标数据,其中,所 述目标数据包括多个数据块;计算所述目标数据的数据块总数N ;根据对样本数的要求计 算所述目标数据的抽样样本数M ;从每个数据块中分别随机选取R个样本,并并进行汇总构 成所述目标数据的抽样样本,其中,在M/N是整数的情况下,R=M/N,在M/N是小数的情况下, R等于M/N向上取整或者向下取整得到的整数。
[0012] 根据本申请的另一个方面,还提供了一种数据抽样装置,包括:第一获取模块,用 于获取包括多个数据块的目标数据,并计算所述目标数据的数据块总数N ;第二获取模块, 用于根据对样本数的要求计算所述目标数据的抽样样本数M ;构成模块,用于从每个数据 块中分别随机选取R个样本,并进行汇总构成所述目标数据的抽样样本,其中,在M/N是整 数的情况下,R=M/N,在M/N是小数的情况下,R等于M/N向上取整或者向下取整得到的整数。
[0013] 通过本申请,采用了计算所述目标数据的数据块总数N ;根据对样本数的要求计 算所述目标数据的抽样样本数M ;从每个数据块中分别随机选取R个样本,并构成所述目标 数据的抽样样本,解决了相关技术中的数据抽样的随机性不好的问题,从而提高了抽样样 本的随机分布。

【专利附图】

【附图说明】
[0014] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0015] 图1是根据本申请实施例的数据抽样方法的流程图;
[0016] 图2是根据本申请实施例的优选的从数据块中抽取数据方法的流程图;
[0017] 图3是根据本申请实施例的优选的从每个数据块中选取R行数据方法的流程图;
[0018] 图4是根据本申请实施例的优选的从每个数据块中选取R行数据方法的流程图; [0019]图5是根据本申请优选实施例的抽样算法的流程图一;
[0020] 图6是根据本申请优选实施例的抽样算法的流程图二;
[0021] 图7是根据本申请实施例的数据抽样装置的结构图;
[0022] 图8是根据本申请实施例的构成模块的结构图。

【具体实施方式】
[0023] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本申请。
[0024] 需要说明的是,在附图的流程示意图示出的步骤可以在诸如一组计算机可执行指 令的计算机系统中执行,并且,虽然在流程示意图中示出了逻辑顺序,但是在某些情况下, 可以以不同于此处的顺序执行所示出或描述的步骤。
[0025] 在以下描述中,除非另外指明,否则将参考由一个或多个计算机执行的动作和操 作的符号表示来描述本申请的各实施例。其中,计算机可以包括个人计算机、服务器、移动 终端等各种产品,在以下实施例中,使用了 CPU、单片机、DSP等具有处理芯片的设备均可以 称为计算机。由此,可以理解,有时被称为计算机执行的这类动作和操作包括计算机的处理 单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器 系统中的位置上维护它,这以本领域的技术人员都理解的方式重配置或改变了计算机的操 作。维护数据的数据结构是具有数据的格式所定义的特定属性的存储器的物理位置。然 而,尽管在上述上下文中描述本申请,但它并不意味着限制性的,如本领域的技术人员所理 解的,后文所描述的动作和操作的各方面也可用硬件来实现。
[0026] 转向附图,其中相同的参考标号指代相同的元素,本申请的原理被示为在合适的 计算环境中实现。以下描述基于所述的本申请的实施例,并且不应认为是关于此处未明确 描述的替换实施例而限制本申请。
[0027] 优选地,本申请实施例可以提供一个其上存储有本申请实施例的机器可读媒体。 需要说明的是,任一适合存储设计关于本申请的指令的媒体都在本申请的范围以内。例如, 这样的媒体可以采用磁性媒体、光学媒体或半导体媒体的形式。
[0028] 在本实施例中,提供了一种数据抽样方法,图1是根据本申请实施例的数据抽样 方法的流程图,如图1所示,该流程包括如下步骤:
[0029] 步骤S102,获取目标数据,其中,该目标数据包括多个数据块;
[0030] 步骤S104,计算该目标数据的数据块的总数N ;
[0031] 步骤S106,根据对样本数的要求计算该目标数据的抽样样本数M ;
[0032] 步骤S108,从每个数据块中分别随机选取R个样本,并进行汇总构成目标数据的 抽样样本,其中,在M/N是整数的情况下,R=M/N,在M/N是小数的情况下,R等于M/N向上取 整或者向下取整得到的整数。
[0033] 通过上述步骤,将目标数据分成了多个数据块,然后从每个数据块中随机抽出所 需要的样本,再将这些样本组成目标数据的抽样样本。由于采用了将数据分成数据块的处 理方式,但对于每个数据块来抽样,相对于对于整个目标数据进行抽样的方法其抽样的随 机性更好,从而解决了相关技术中的数据抽样的随机性不好的问题,从而提高了抽样样本 的随机性。对于抽样样本的随机性提高,会使样本更加真实的反应该目标数据,从而为了解 目标数据提供了依据。
[0034] 上述步骤解决了抽样样本的随机性的问题,相关技术中的第一种方法和第二种方 法还存在一种问题:即使第一种方法和第二种方法的数据是均匀打散,即随机输入的,但 是,由于第一种方法和第二种方法,总是取相同的行,例如在第一种方法中总是取前η行, 因此,不能难满足多次抽样结果不同的需求。
[0035] 上述步骤S108中,从每个数据块中选出的样本均是随机选取的,因此,通过上述 步骤,在多次抽样中,所取得的抽样结果是不相同的。
[0036] 从数据块中抽样的方式有很多种,在一个优选的实施例中可以通过行的方式来进 行抽取,图2是根据本申请实施例的优选的从数据块中抽取数据方法的流程图,如图2所 示,该流程包括如下步骤:
[0037] 步骤S202,获取一个数据块中的数据行数r ;计算该目标数据的总行数N*r ;
[0038] 步骤S204,使用随机抽样公式根据总行数得到该抽样样本数M ;
[0039] 步骤S206,从每个数据块中分别随机选取R行数据作为R个样本,其中在M/N是 整数的情况下,R=M/N,在M/N是小数的情况下,R等于M/N向上取整或者向下取整得到的整 数。
[0040] 图2中示出了图1中的一种优选的实施方式,但并不限于此,可以根据不同的方式 来选择如何从数据块中抽出数据。
[0041] 对于图2中示出的采用行来抽取数据的方式,如果不对目标数据进行分块,那么 就需要对目标数据中的每一行都分配一个随机数,最后按此随机数排序取前η个,这种方 法抽取出来的数据应该是随机分布的,但是,在数据量很大的情况下,这种方式需要对大量 的行分配随机数,这种计算量是非常大,效率比较低。
[0042] 对于每个数据块中的数据抽取方式可以采用为每一行都分配一个随机数的方式, 图3是根据本申请实施例的优选的从每个数据块中选取R行数据方法的流程图,如图3所 示,该流程包括如下步骤:
[0043] 步骤S302,获取一个数据块中的数据行数r ;计算该目标数据的总行数N*r ;
[0044] 步骤S304,使用随机抽样公式根据总行数得到该抽样样本数M ;
[0045] 步骤S306,为每个数据块中的每一行数据分配一个随机数;
[0046] 步骤S308,将每个数据块中的行数据分别按照随机数的大小进行排列;
[0047] 步骤S310,在每个数据块中的排列好的数据中分别取连续的R行数据。
[0048] 上述步骤S306至步骤S310是步骤S206的一种优选的实施方式。为每个数据块 中的每一行数据分配一个随机数;这样就可以保证抽样数据块是随机分布的,将每个数据 块中的行数据分别按照随机数的大小进行排列;在每个数据块中的排列好的数据中分别取 连续的R行数据。例如,可以在每个数据块中排列好的数据中取随机数最大的R行数据; 或者,也可以在每个数据块中排列好的数据中取随机数最小的R行数据。这种处理方式是 对数据块中的每一行数据分配随机数,相对于对整个目标数据分配随机数并进行排序的算 法,其计算量减少了。
[0049] 优选地,可以采用数组的方式来实现上述步骤S306至步骤S310,图4是根据本申 请实施例的优选的从每个数据块中选取R行数据方法的流程图,如图4所示,该流程包括如 下步骤:
[0050] 步骤S402,获取一个数据块中的数据行数r ;计算该目标数据的总行数N*r ;
[0051] 步骤S404,使用随机抽样公式根据总行数得到该抽样样本数M ;
[0052] 步骤S406,将每个数据块中的数据分别读入内存并存放在数组中,为数组的每一 列生成一个随机数;
[0053] 例如,假定一个数据块中存在1000行数据,则可以建立一个1000列的数组,该数 据的每一列均对应内存中的一个存储空间,然后将该1000行数据分别存入到该1000列的 数组中,即该数组的每一列都保存了一行数据。然后,可以为数组的每一列生成一个随机 数,并保存。
[0054] 步骤S408,按照随机数的大小对该数组中的列进行排序;
[0055] 步骤S410,在每个数据块中排列好的数组中分别取连续的R列作为R行数据。
[0056] 在上述步骤S406至步骤S410中采用了数组的实现方式,通过数组的方式,效率比 较闻。
[0057] 上述步骤S102、步骤S202、步骤S302和步骤S402中,均涉及到将目标数据分成N 个数据块,将目标数据拆成多个数据块的方法可以由很多种,例如,在大量数据处理中一般 情况下可以采用分布式处理的软件框架。在分布式软件处理框架中,可以将一个大文件(即 目标数据)分割成一个或多个数据块,这些数据块的大小可以是相同的,也可以是不同的。 上述实施例可以应用到Hadoop软件框架中,但是并不限于该软件框架,其他的分布式数据 存储系统或者软件框架同样可以应用本优选实施例中的处理方法。Hadoop :是一个能够对 大量数据进行分布式处理的软件框架,HDFS =Hadoop框架下的分布式文件系统。HDFS文件 系统内部机制是将一个大文件分割成一个或多个相同大小的数据块(一般是64M),然后存 储在一组数据节点中。因此对单个数据块进行随机抽样的和,就可以得到整个大数据文件 的随机抽样样本。
[0058] 图5是根据本申请优选实施例的抽样算法的流程图一,如图5所示,该流程包括如 下步骤:
[0059] 步骤S502,对于每一份Hadoop上的数据,计算出该数据在HDFS上的数据块个数为 N;
[0060] 步骤S504,对于每一个数据块,计算出该数据块中包含的数据行数r ;
[0061] 步骤S506,得到该份数据的总行数N*r ;
[0062] 步骤S508,根据随机抽样公式得到抽样样本数M ;
[0063] 步骤S510,得到单个数据块应该抽出的样本数R ;
[0064] 步骤S512,为单个数据块的每一行数据随机分配一个随机数,将数据按照随机数 大小进行排序,然后取前R行;
[0065] 步骤S514,将所有单个数据块抽出的样本进行汇总,得到整个数据的抽样样本。 [0066] 图6是根据本申请优选实施例的抽样算法的流程图二,在图6中使用了数组的方 式来进行处理,如图6所示,将每个数据块的数据读入内存,存放在数组中,给数组的每一 个列生成一个随机数,按照随机数的大小对数组进行排序,输出前m列数据,获得该数据块 的样本,最后将这N个数据块加在一起,就是总体抽样样本。
[0067] 上述步骤S104、步骤S204、步骤S304和步骤S404中,均涉及到获取目标数据的抽 样样本数M,对于M越大则该抽样样本越接近于该目标数据的真实情况,但是,M值越大抽样 的计算量也就越大。该M的取值可以是根据经验值来取值的。下面对样本数进行说明。 [0068] 样本数又称为样本容量,指一个样本的必要抽样单位数目。抽样误差的大小直接 影响样本指标代表性的大小,而必要的样本单位数目是保证抽样误差不超过某一给定范围 的重要因素之一。因此,在抽样设计时,适当的样本单位数目是保证样本指标具有充分代表 性的基本前提。一般来说,样本的容量大的话,样本的误差就小。反之则大。
[0069] 确定样本容量的大小可以考虑很多的方面,例如,变量个数,数据分析的性质,同 类研究中所用的样本量,发生率,完成率,资源限制等。具体地说,如果需要更多的信息和 更准确的信息,就需要较大的样本;如果需要的信息不需要特别精确,则可以采用较小的样 本,因此,抽样样本数可以根据实际的需要来进行确定。
[0070] 具体确定样本量可以采用公式计算的方式,在本实施例中提供了优选的计算方 式,样本量的计算还可以采用其他的公式,并不限于本实施例提供的计算方式。下面对该优 选的计算方式进行说明。
[0071] 在一定的抽样方式下,建立置信区间所需样本容量的大小取决于以下几个因素:
[0072] (-)置信度,也即总体参数真值落在置信区间内的可靠程度。要求较高的置信度, 就需要较大的样本容量,置信度越高,样本容量就越大。
[0073] (二)估计的精度,也即置信区间的宽度。要求较高的置信度,就会扩大置信区间的 宽度,也就是说降低了估计的精度。因此,要想既提高估计的精度,又不降低估计的可靠性 程度,必须增加样本容量。
[0074] (三)建立置信区间的费用。虽然增加样本容量可以提高置信区间的可靠性程度和 估计的精度,但也不是样本容量愈大愈好。因为增加样本容量,就会延长调查时间,增大工 作量和成本费用,同时还可能增大调查误差。
[0075] 1.已知总体方差σ,重复抽样条件下:
[0076]

【权利要求】
1. 一种数据抽样方法,其特征在于包括: 获取目标数据,其中,所述目标数据包括多个数据块; 计算所述目标数据的数据块总数N ; 根据对样本数的要求计算所述目标数据的抽样样本数M ; 从每个数据块中分别随机选取R个样本,并进行汇总构成所述目标数据的抽样样本, 其中,在M/N是整数的情况下,R=M/N,在M/N是小数的情况下,R等于M/N向上取整或者向 下取整得到的整数。
2. 根据权利要求1所述的方法,其特征在于, 计算所述目标数据的抽样样本数M包括:获取一个数据块中的数据行数r ;计算所述目 标数据的总行数N*r,使用随机抽样公式根据所述总行数得到所述抽样样本数M ; 从所述每个数据块中分别随机选取R个样本包括:从所述每个数据块中随机选取R行 数据作为所述R个样本。
3. 根据权利要求2所述的方法,其特征在于,从所述每个数据块中随机选取R行数据包 括: 为所述每个数据块中的每一行数据分配一个随机数; 将所述每个数据块中的行数据分别按照随机数的大小进行排列; 在所述每个数据块中的排列好的数据中分别取连续的R行数据。
4. 根据权利要求3所述的方法,其特征在于,在所述每个数据块中的排列好的数据中 取连续的M/N行数据包括: 在所述每个数据块中排列好的数据中取随机数最大的R行数据;或者, 在所述每个数据块中排列好的数据中取随机数最小的R行数据。
5. 根据权利要求3所述的方法,其特征在于, 为所述每个数据块中的每一行数据分配一个随机数包括:将所述每个数据块中的数据 分别读入内存并存放在数组中;为所述数组的每一列生成一个随机数; 将所述每个数据块中的行数据分别按照随机数的大小进行排列包括:按照随机数的大 小对所述数组中的列进行排序; 在所述每个数据块中的排列好的数据中分别取连续的R行数据包括:在所述每个数据 块中排列好的数组中分别取连续的R列作为所述R行数据。
6. -种数据抽样装置,其特征在于包括: 第一获取模块,用于获取包括多个数据块的目标数据,并计算所述目标数据的数据块 总数N ; 第二获取模块,用于根据对样本数的要求计算所述目标数据的抽样样本数M ; 构成模块,用于从每个数据块中分别随机选取R个样本,并进行汇总构成所述目标数 据的抽样样本,其中,在M/N是整数的情况下,R=M/N,在M/N是小数的情况下,R等于M/N向 上取整或者向下取整得到的整数。
7. 根据权利要求6所述的装置,其特征在于, 所述第二获取模块,用于获取一个数据块中的数据行数r,计算所述目标数据的总行数 N*r,并使用随机抽样公式根据所述总行数得到所述抽样样本数M ; 所述构成模块,用于从所述每个数据块中随机选取R行数据作为所述R个样本。
8. 根据权利要求7所述的装置,其特征在于,所述构成模块包括: 分配单元,用于为所述每个数据块中的每一行数据分配一个随机数; 排列单元,用于将所述每个数据块中的行数据分别按照随机数的大小进行排列; 抽取单元,用于在所述每个数据块中的排列好的数据中分别取连续的R行数据。
9. 根据权利要求8所述的装置,其特征在于, 所述抽取单元,用于在所述每个数据块中排列好的数据中取随机数最大的R行数据; 或者,用于在所述每个数据块中排列好的数据中取随机数最小的R行数据。
10. 根据权利要求8所述的装置,其特征在于, 所述分配单元,用于将所述每个数据块中的数据分别读入内存并存放在数组中;为所 述数组的每一列生成一个随机数; 所述排列单元,用于按照随机数的大小对所述数组中的列进行排序; 所述抽取单元,用于在所述每个数据块中排列好的数组中分别取连续的R列作为所述 R行数据。
【文档编号】G06F17/30GK104424331SQ201310411200
【公开日】2015年3月18日 申请日期:2013年9月10日 优先权日:2013年9月10日
【发明者】陈少怀 申请人:深圳市腾讯计算机系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1