大数据自下而上:算法和统计学完美的结合
从理论上来说有这样终极的目标:给定一个可以推理的目标,同时确定固定的计算时间,提供由算法和分析支撑的保证,按小时、分钟、秒进行计算,推论的质量将会随着数据的精确性而单调递增,并且是没有边界的无线增长。随着数据无边界的增长,遇到很大的麻烦,我们每一代人都需要面对。我们想一次解决,有什么样的办法可以推理积累的大量数据?需要花时间解决,这可能需要几十年才能解决。
我们看一下目前的进展。其中一个就是自下而上的办法,将算法原理和统计学的推论完美地结合在一起。这些算法原则上来讲,可以放在一个环境当中,我们选一些分治的方法来解决。这些难题,我们聚合起来,聚合的越多,这些错就越少,更好做一些。然后分开相互之间相互矛盾的数据,包括统计数字,还有计算机科学的数字,可以避免带来很大的麻烦。然后再回到我们理论上的问题,如何进行权衡,提高我们计算的效率。
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
在数字化浪潮中,数据驱动决策已成为企业发展的核心竞争力,数据分析人才的需求持续飙升。世界经济论坛发布的《未来就业报告》, ...
2025-03-28你有没有遇到过这样的情况?流量进来了,转化率却不高,辛辛苦苦拉来的用户,最后大部分都悄无声息地离开了,这时候漏斗分析就非 ...
2025-03-27TensorFlow Datasets(TFDS)是一个用于下载、管理和预处理机器学习数据集的库。它提供了易于使用的API,允许用户从现有集合中 ...
2025-03-26"不谋全局者,不足谋一域。"在数据驱动的商业时代,战略级数据分析能力已成为职场核心竞争力。《CDA二级教材:商业策略数据分析 ...
2025-03-26当你在某宝刷到【猜你喜欢】时,当抖音精准推来你的梦中情猫时,当美团外卖弹窗刚好是你想吃的火锅店…… 恭喜你,你正在被用户 ...
2025-03-26当面试官问起随机森林时,他到底在考察什么? ""请解释随机森林的原理""——这是数据分析岗位面试中的经典问题。但你可能不知道 ...
2025-03-25在数字化浪潮席卷的当下,数据俨然成为企业的命脉,贯穿于业务运作的各个环节。从线上到线下,从平台的交易数据,到门店的运营 ...
2025-03-25在互联网和移动应用领域,DAU(日活跃用户数)是一个耳熟能详的指标。无论是产品经理、运营,还是数据分析师,DAU都是衡量产品 ...
2025-03-24ABtest做的好,产品优化效果差不了!可见ABtest在评估优化策略的效果方面地位还是很高的,那么如何在业务中应用ABtest? 结合企业 ...
2025-03-21在企业数据分析中,指标体系是至关重要的工具。不仅帮助企业统一数据标准、提升数据质量,还能为业务决策提供有力支持。本文将围 ...
2025-03-20解锁数据分析师高薪密码,CDA 脱产就业班助你逆袭! 在数字化浪潮中,数据驱动决策已成为企业发展的核心竞争力,数据分析人才的 ...
2025-03-19在 MySQL 数据库中,查询一张表但是不包含某个字段可以通过以下两种方法实现:使用 SELECT 子句以明确指定想要的字段,或者使 ...
2025-03-17在当今数字化时代,数据成为企业发展的关键驱动力,而用户画像作为数据分析的重要成果,改变了企业理解用户、开展业务的方式。无 ...
2025-03-172025年是智能体(AI Agent)的元年,大模型和智能体的发展比较迅猛。感觉年初的deepseek刚火没多久,这几天Manus又成为媒体头条 ...
2025-03-14以下的文章内容来源于柯家媛老师的专栏,如果您想阅读专栏《小白必备的数据思维课》,点击下方链接 https://edu.cda.cn/goods/sh ...
2025-03-13以下的文章内容来源于刘静老师的专栏,如果您想阅读专栏《10大业务分析模型突破业务瓶颈》,点击下方链接 https://edu.cda.cn/go ...
2025-03-12以下的文章内容来源于柯家媛老师的专栏,如果您想阅读专栏《小白必备的数据思维课》,点击下方链接 https://edu.cda.cn/goods/sh ...
2025-03-11随着数字化转型的加速,企业积累了海量数据,如何从这些数据中挖掘有价值的信息,成为企业提升竞争力的关键。CDA认证考试体系应 ...
2025-03-10推荐学习书籍 《CDA一级教材》在线电子版正式上线CDA网校,为你提供系统、实用、前沿的学习资源,助你轻松迈入数据分析的大门! ...
2025-03-07在数据驱动决策的时代,掌握多样的数据分析方法,就如同拥有了开启宝藏的多把钥匙,能帮助我们从海量数据中挖掘出关键信息,本 ...
2025-03-06