京公网安备 11010802034615号
经营许可证编号:京B2-20210330
大数据自下而上:算法和统计学完美的结合
从理论上来说有这样终极的目标:给定一个可以推理的目标,同时确定固定的计算时间,提供由算法和分析支撑的保证,按小时、分钟、秒进行计算,推论的质量将会随着数据的精确性而单调递增,并且是没有边界的无线增长。随着数据无边界的增长,遇到很大的麻烦,我们每一代人都需要面对。我们想一次解决,有什么样的办法可以推理积累的大量数据?需要花时间解决,这可能需要几十年才能解决。
我们看一下目前的进展。其中一个就是自下而上的办法,将算法原理和统计学的推论完美地结合在一起。这些算法原则上来讲,可以放在一个环境当中,我们选一些分治的方法来解决。这些难题,我们聚合起来,聚合的越多,这些错就越少,更好做一些。然后分开相互之间相互矛盾的数据,包括统计数字,还有计算机科学的数字,可以避免带来很大的麻烦。然后再回到我们理论上的问题,如何进行权衡,提高我们计算的效率。
1.大数据引导程序(The bootstrap)
首先第一个问题,我们叫做大数据的引导程序,我们在伯克利几年前做过这样的工作。这个引导程序能够解决一些非常重要的问题--评价推论的质量。很多有学识的研究者并不太关注推论的质量。输入数据到一个盒子里面,然后得到一个答案,是9.5.但是多数的决策并不能满足要求,要知道9.5里面的差错率多大?如果这个数字超过10的话,就要把肝切掉了,如果是9.5的话还可以。所以,这是真正的9.5吗?还存在很大的误差吗?或者是没有超过10吗?如果真正做出真实的决策时,是没有误差这个栏的考虑,但是计算机科学家们需要对这个有很深的了解。所以我们要进行工作,能够在数据库的社区里面建立一些数据库,能够输入,然后再输出,同时有一个非常清楚明白的误差栏。
现在让我们进入到另外一个领域,进入到统计学里面怎么样呢?很有意思的一点就是在非常简单的事情上,我们抽样,根据有相关的公式,可以通过这样的途径进行了解。比如说我们根据抽样里面的差异性,加上知道差错率,如果不讲差错率,有一个中等的情况,比如说10.2,那这个误差是多少呢?并没有这样的公式在里面。我们怎么知道一般情况中存在的差异性?我们有一个通常叫做的程序框架,能够应对快速扩展的大数据,并且计算误差率。
到底推断的质量如何?我们观察的数据包括机器的误差率和基于数据进行参数的预测。我们叫做形成一种参数的预估值。就像一条程序、一个黑匣子,到底有多少的误差在里面,这是我们所关注的。通过对程序进行计算,了解数据指标情况,如果想做一个理想的统计学家的话,还要对它进行科学的定义。
所谓的频率主义者,每一个数据都会要计算中间的情况,还有一些预估估算,不同的数据级进行浮动,你看浮动的范围就带来这种所谓的误差率。从这个定义来说,这个误差率是什么,误差率就是指你还需要更多的时间分析这些数据。如果你没有大量的数据,你不能够对这些数据进行一次又一次的检验,并同时看他们之间的浮动。如果没有一个数据集的话,就可以一次性去做,看看生成的情况,我们只有一个数据集。
我们设想一下,如何分析这些问题,解决这些问题,即使只有一个数据集。这些数据来自什么地方,有这样的一些群体,比如说在我们这里生成一些数据,有一个曲线可以反映出相关的群体。如果是一个一般不存在的东西,上面有一个幻灯片,可以形成一个数据集,两个数据集,对每个数据集进行计算,你所在意的都是一些数据的预测,然后得到一个公式。可以做计算机的并击处理,生成一个数据的处理,每一个计算机可以进入一个预估值,然后可以在估算当中产生一些误差。然后这个里面我们没有多个数据级,我们不能这样去做。我们观察有一个数据来自这样的群体,然后这些数据不是列出来的数据,这些数据的分布图是分布式,可以生成越来越多的数据。这种分布尽管不可以换,但是你可以从中抽样。我们叫做近似值,基本上是真实的。[page]
所以说,这是非常微妙、深层的理念,拿过一个数据级生成多个数据级,这个叫做引导程序。1979年的时候拿到的一个大奖,这里其实是非常简单的理念。尽管1979年还没有云的语言等,也是可以这样做。你可以用于任何的查询上,为什么不把所有的数据库从云上取样,听起来是非常好的理念。但是,这可以在我们计算机科学里面有更加好的应用。我们的一些数据在服务器上已经分布了,如果重新抽样,数据级拿过来,从里面进行抽样,得先返回去,再回到这个地方。意味着什么呢?从这个上面进行取样,讲的更清楚一些,就是基于终端的数据,这是一个分布式的,可以从任何一侧进行取样。比如说从一天当中这个数据发生的时间当中取样,同样一个大的数据级可以做一次,然后反复的做,这又意味着什么?如果这样取样的话,从其中一个点上分布,可以得到其中一个点,然后按比例的高度划分,我得到这一点,再次做一下,可以获得同样的点。做N次,在某些点上可以得到很多次。这跟我们取样和替代一样,把一个样品拿过来然后再返回去,反复地做。
我们经常描述,把最初的数据拿过来重新取样,然后做很多次,就是所谓的引导程序。数据点上有替代,可以做数学计算,0.632次,如果有这个取样的话,就有632个。不能做这么大,这是我们主要的程序,在随意的预估上,可以达到引导程序,已经超越一些小数据了,这是可能会带来的一些问题。
2.二次抽样(Subsampling)
还有另外一个方面,就是统计学家们做的。他们需要有竞争力,出现另外一个程序的话,它也可以来解决,叫做二次取样。二次取样跟以前一样,进行一个取样,在这个里面可能太大了,我们用一个子抽样,或者再次的抽样,进行一个划分。我们很快的到预估值上,在这个B点上得到9.5的数字,我可以再次去做,把B点从N点里面取出来,可以做很多次。我们可以有多少的估算值,还有这样的浮动,听起来很好,一个数据级,我得到各种估算值,问题就是是否正确。因为B点,预算值大小取决于N点的数量,这个取样是来了解这些误差。我们可以有这样的浮动,规模不一样的,尺寸大小不一样,错就错了。所以不能进行二次抽样估算得到答案,这个答案是错误的。
这里关键问题产生了,这个比例是错了,这个值太大了,因为这个数据级太小了。我们重新设定他们的尺寸,这样一个比例怎么进行设置?一般不知道怎么做。对于像一个黑匣子一样,在数据库里面放一些东西,用户定义的功能,就不知道它的尺寸多大,然后还有一定数量的数据点等,这也是一个问题,你必须要从理论上针对每一个黑匣子去做。更加严重的问题是,如果在现实中使用的话,如果是工程上的默认,这里有一个例子,50000个合成数字,我们还有一些计算,我们用合成的方法做,知道真正的Airbas是什么,这是我们做的结果。再强调一点,这里并没有任何二次的抽样,只需要1.5次的工作,就可以进行取样。
这里误差有一个核算,我们有合成的数据。X轴上看到的时间,运行的是二次取样,不同的取向,还有y轴上,你可以看到0.5在这个上面,这个误差是很坏的,这个蓝色的点是一个蓝色的程序,这是Bootstrap的对象,可以很快的稳定走下来。我们可以来把这个误差变成0,然后我们可以进行平均,在这个上面,并不是要达到Bootstrap,在合理的范围内,我们达到6,这个还是有问题的,然后在7、6.8,然后在绿色的线下面,他们更有效的使用我们的引导程序,引导程序的效率是很高的。它也是有一个N的融合。这个B是一个最中心的限制,我们感到很惊讶,就是在80年代论证的时候。
对于这些我可以看到非常好的结果,现在的0.9是这个浅绿色又出现问题了,它还重复出现,但是这个值我们还不知道,我们知道这是真实的地方,正确的价值,但是现实当中我们是无法知道的。工程师的一些方法有的时候是做不到的。[page]
3.新流程的小“自助包”(Bag of little bootstraps)
我们还有另外一个理念“小自助包”,我将会讨论新的步骤结合引导程序和二次抽样,并且运用他们最好的部分。同小部分的数据一起,比如说二次抽样和同样适合分布式计算平台。但是,与引导程序相同,它并不需要分析的部分,所以想到一些理念,我们的Bootstraps运行40多年了,统计学家不会有任何的程序上的担心。
再回到这个图片,我们还有真实性,还有数据级,还有一个Size B,进行重新的取样。现在我们注意到这个Size
B的数据是来自于周围的一个步骤,他们还是间接的来自下面一个真实的情况。我们继续看我们的子集,图片看上去不太好,现在的N不是10,想一下预估值和估算值也是非常好的近似值。然后不要考虑这是否是真实的,你现在面临这样的世界,你是一个大家伙,这是你真实的情况。你可以进行抽样,基于我们的B点,它是一种分布,你可以来去抽样,按你所需要的次数,多少次都可以,只要能想到的。你把这个对象拿过来,然后你可以及时的进行抽样,现在在正确的比例值上,有合适的数据级是需要的。其中很多点会重复很多次。
然后我们多次的对它进行取样,在某些点可能完全不做,然后我们有B点,觉得它非常小,我们觉得它是分布式的。我们有一个非常好的叫做B取样的分子级,我不想去分析它,尽管这是一个本地的网络,但是也不会把它分散。所以每一个B点会多少次被二次取样,这些数据在什么地方,我们可以把这个放在原来的基础上,我们可以做多次的事情,再做引导程序,这样的话,我们把子取样进行引导,有一张图作为我的总结。
这个流程比较复杂,你把B取样的一个子样,然后放在一个数据级上,然后又替代一段时间内,你获得的值,因此上面是一个处理器,它有一个引导程序,我们为什么不用一个框进行解决问题呢?他是一个比较小的取样,它是正确的,但是有很多的噪音,我们必须要平均。所以必须需要多个框,可能需要200个处理器都执行同样的一个计算的流程。那么,他们可能都会有一个平均的错误率。
这是有效的,首先回到一个TB的问题,N=N的6次方,比如说我们子样数据级的大小是4GB,而再次取样的数据级别也是4GB,那么这张图和刚才那张图是一样的。就是在一个数据集上,加大计算机的利用率。如果在真正的分布式的计算环境里面做,我想应该是0.5TB,会在一个大的数据库里会发生什么呢?我们看一下引导程序,不可能进行并行化,我们使用并行计算,通过机器学习,做第一个再取样,再做一次,然后再并行计算的计算机上进行Bootstraps计算,大概15000秒的时间获得一个合理的答案,对于应用来说稍微有一点慢了。所以我们现在怎么做?我们有一个算法。对于0.5TB的数据,放到所有本地的200个处理器上,也就是说这个红点的位置,然后再取样,再做引导程序。我以前在机器学习方面,我不可能有这样的图做出来,只是20%、30%的完善。这却改变了并行计算的方式,我们可以进行非常大型的一种引导程序,我们现在可以在数据库中做,我们正在开发关系型的数据库当中。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
CDA数据分析师 出品 作者:李诗怡 1. 销售漏斗阶段判断 题目:销售漏斗模型中,通过广告、社交媒体等方式触达品牌信息(如浏览品 ...
2026-09-07在Python数据分析中,Pandas库的DataFrame是最核心、最常用的结构化数据表对象,类似于Excel的二维表格,具备规整的行列结构、字 ...
2026-09-07在数据分析、经营复盘、业绩预测与经济统计工作中,平均增速(平均增长率)是衡量数据长期变化趋势、业务发展快慢的核心指标。不 ...
2026-09-07 很多数据分析师精通Excel单元格操作,但当被问到“表结构数据的基本处理单位是什么”“字段和记录的本质区别”“为什么表结 ...
2026-09-07随着大数据技术的快速发展,商业竞争逐步从传统的经验式经营转变为数据驱动的精细化运营。海量的用户行为数据、交易数据、运营数 ...
2026-09-04CDA数据分析师 出品 作者:李诗怡 1. 波士顿矩阵(BCG Matrix) 定义: BCG于1970年提出的业务组合分析工具,以"市场增长率"(纵 ...
2026-09-04 数据分析师八成以上的时间在和数据表格打交道,但许多人拿到Excel后习惯性地先算、先分析,结果回头发现漏了一列关键数据, ...
2026-09-04数据透视表是Excel与Power BI中最核心的数据分析工具,具备快速汇总、维度拆分、动态筛选的能力,可高效完成数据归类与统计展示 ...
2026-09-03在Power BI数据分析可视化场景中,堆积柱状图+折线图是最常用的复合图表组合。堆积柱状图适合展示各细分维度当期数值、结构占比 ...
2026-09-03 很多数据分析师每天与Excel打交道,但当被问到“表格结构数据的基本处理单位是什么”“数据类型误判会引发哪些分析错误”“ ...
2026-09-03CDA数据分析师 出品 作者:李诗怡 一、8个核心数据清洗函数 1. TRIM:一键清除多余空格(最常用) 作用:仅保留文本中"单词/字 ...
2026-09-02数据分析的核心并非单纯操作工具、整理报表或绘制图表,而是依靠科学的思维逻辑挖掘数据价值、解释业务现象、指导经营决策。在完 ...
2026-09-02在社会经济、产业研究、区域治理与大数据实证分析中,面板数据是最具研究价值的数据类型。面板数据同时包含截面维度与时间维度信 ...
2026-09-02 很多数据分析师能熟练计算均值、标准差,但当被问到“如何用一张图让业务方3秒内看懂核心结论”“面对不同数据类型该怎么选 ...
2026-09-02在数据驱动决策的体系中,数据分析按照分析目的可分为描述性分析、诊断性分析、预测性分析与指导性分析四大类型。其中,诊断性分 ...
2026-09-01网络请求是Python爬虫开发、接口测试、数据拉取的核心基础功能,Python生态中主要依靠 urllib 和 requests 两大库实现HTTP请求操 ...
2026-09-01 很多数据分析师面对业务问题时,常常感到“知道要分析,却不知道用什么方法”。其实,数据分析并非无章可循——从三大基础范 ...
2026-09-01在数据库设计与业务数据维护中,自增ID是数据表最常用的主键字段,用于唯一标识每一条业务数据,正常状态下ID应保持连续递增。但 ...
2026-08-31在数理统计、数据分析、经济测算与日常量化评估中,平均值是刻画数据集中趋势、反映整体水平的基础核心指标。在实际应用中,最常 ...
2026-08-31在数据驱动的时代,数据分析早已不是“凭经验、靠感觉”的零散操作,而是一套具备固定逻辑、标准化流程的系统方法——这就是数据 ...
2026-08-31