小什么大作用?
最近很多伙伴在问关于 小数据 的问题,今天在这里为大家介绍一下! 可能对于很多新入行的数据分析师来说,数据量大小是一个比较模糊的概念。我这里举几个例子为大家说明不同数量级的数据量分别有多大: 一个淘宝账户的登录日志可能有上千万条记录,一条记录包含的时间和空间消耗非常有限,所以总体占用电脑内存较小; 而一个微信账户的登录日志可能就有上亿条了,因为每一条记录的时间、空间消耗都会更多一些; 再比如一个普通用户的手机通讯录(不考虑手机型号和操作系统)可能只有几百个联系人,而一个企业的手机通讯录可能有上千甚至上万联系人——因为同一个电话号码可能有多个联系人,且每个人可能会有多个电话号码。
由此可以看出,在不同的业务场景下,数据量的多少差异是非常大的。 不过,虽然不同场景下的数据量会有很大差别,但数据的加工和处理过程却是大同小异的。在此以较为简单常用的关系型数据库为例,为大家介绍数据量较大时,我们应当如何高效地处理数据。
一般来说,我们在面对海量数据的时候,可以选用分布式文件系统或者 HDFS 来存储海量数据。对于结构化数据我们可以采用数据库(Oracle、SQL Server等)或 NoSQL (MongoDB、Cassandra)等来存储和管理。 对于非结构化的文本和数据,可以考虑采用文本分类的方式对它进行预处理和转化,转化成结构化的数据后再行分析。当然也可以直接采用自然语言处理的算法对原始文本数据进行无监督的文本分类,再选取分类良好的文件作为后续分析的基础。 下面我们具体来看如何在大数据量下完成常见的数据分析任务。
1、统计分析: 这里我们以网页浏览量的统计数据为例,说明如何通过 MapReduce 对海量的数据做统计分析。 由上面的步骤可以看出,通过 Map/Reduce 我们完成了对海量数据的分而治之,同时在计算的过程中也解决了数据冗余和重复计算的问题。 在实际的业务分析中,我们可能遇到的情况要复杂不少。比如不同的业务部门可能会从自己的角度出发提出不同的指标和分析需求,我们需要尽量满足这些需求的同时达到计算效率最大化的目的。此时我们就可以发挥 Map/Reduce 的威力了——将计算逻辑拆分,同时让每一个节点都执行一部分逻辑,最后将结果整合即可。
2、机器学习 如果说统计分析更多是基于已知的数据集做分析和预测的话,那么机器学习的任务则是基于历史数据对未知的数据做出预测。与统计分析相比,机器学习需要更多的数据和更长的时间。在数据量不足的情况下,有时甚至可以借助模拟的方法得到近似的结果。 但一旦数据量足够并且时间允许,则最好能利用机器的学习能力得到更为精准的结果。
3、可视化 在数据分析过程中,除了各种模型、算法之外,可视化也是一个非常重要的环节。通过对数据的图形化展示,我们可以更直观地理解数据、发现数据之间的规律以及找到进一步分析的切入点。
很多时候我们对数据的分析并不能一步到位得到我们所需要的结果,有时候需要我们不断地对数据进行筛选和聚类,这个过程是非常耗时耗力的。当我们的数据量非常大时,如何能够更高效地实现数据的可视化就显得尤为重要。