大数据

大数据分析的影响因素

(格物课堂原创文章,转载请给出链接)

早在大数据这个词汇被提出、被炒作之前,海量数据在科研领域早就已经存在了:对于科学家与数据分析师来说,类似于海量的文本信息集合、DNA序列信息,以及来自射电望远镜的数据等海量信息的处理一直是个棘手的问题。

由于大多数机器学习算法的算法复杂度为O(n^2)甚至是O(n^3),其中,n为训练数据集中样本的数量,因此数据分析人员过去在海量数据处理中面临的挑战在于:如何使得算法更加高效。

什么样的算法适合于大数据

如果一个机器学习算法在经过适当的设置后,可以运行在一个大型数据集上,那么此算法就可以被看做是可扩展的。数据集之所以巨大可能是因为样本数量、特征数量众多,或者二者兼具,不过可扩展的机器学习算法可以有效的处理这种数据,它所需的时间与面临问题的量级几乎是线性增加。因此,更多的数据仅仅意味着以1:1的比例消耗了更多的时间(或者说是更大的计算量)。

相反,如果一个算法在面临海量数据集时无法运行或者以非线性方式增加所需的运行时间,则被看做是不可扩展的,例如:所需时间以指数形式增长,从而导致学习算法无法应用到数据分析工作中。

硬件性能对大数据的影响

廉价存储、大内存,以及多核处理器的普及极大的改变了数据分析的现状,因为它们提高了单台(笔记本)电脑处理海量数据的能力。过去几年中,又出现了另外一种处理方式,让人们的注意力从单台高性能计算机转移到了商用计算机(低价,易组装的计算机)集群。这一改变可以归因于MapReduce以及Apache开源框架hadoop中的Hadoop分布式文件系统(HDFS),更通俗的讲:基于计算机网络的并行计算。

为了体现出上述两点是如何深刻并有效的改变了我们解决大数据问题的能力,首先应该找出是什么曾经阻止了(也许现在和将来仍旧会,这取取决于问题的规模)我们对大型数据进行分析。

无论是什么问题,你最终会发现,出于下列原因,可能会导致数据分析工作无法展开:

  • 计算能力影响到数据分析所需的时间
  • IO效率影响到特定时间内从从外存储器中读取到内存数据量的多少
  • 内存容量影响到一段时间内可处理数据的量级

计算机的性能限定了它是否可以完成从数据中进行学习的工作,以及在数据分析的路上可以走多远。计算能力的瓶颈多体现在计算密集型任务中,IO的性能会妨碍对数据的快速访问,而内存的限制使得我们只能一次性使用数据的一部分,由此会影响到在矩阵上可进行的计算方式及运算精度,甚至会影响到最终结果的准确性

数据类型与大数据

刚刚提及的硬件方面的限制会不同程度地影响到你对现有数据的分析:

  • “高”的数据:指数据中包含海量的样本
  • “宽”的数据:指数据中特征的数量众多
  • “高且宽”的数据:说明数据集中不仅样本数量众多,而且样本的特征数量很大
  • 稀疏数据:其特征是数据集中大多数的值为0,或者是可以看作是0的值(也就是说,数据集类型属于“高且宽”类型的,但是并不是所有的值都是包含有效的信息)(我们一般把0或者空置占大多数的数据看做是稀疏数据)

算法复杂程度与大数据

最后,还要看你将应用于数据分析的算法。每种算法都有它自己的特点,从而可以根据算法受偏差于方差影响的程度不同来选择不同的解决方案。至此,你采用了机器学习的方法来解决当前面临的问题,同时你也了解到:基于过去的经验和实验性的测试结果,某种算法的表现可能会优于其他算法。对于大规模问题而言,在决定使用哪种算法时,需要加入更多不同的考虑因素:

  • 算法的复杂程度:也就是说,数据中的行或者列是否会以线性或者非线性的方式影响到计算量。大多数基于机器学习的解决方案的复杂度都是问题规模的二次或者三次方,这就极大地限制了此算法在大数据领域的使用性。
  • 模型中参数的数量:这不仅仅是对方差进行估计(过拟合),而是同时考虑对所有参数进行计算所需的运行时间。
  • 优化过程是否可并行化:也就是说,是否可以轻松的将计算量进行划分,并在多个节点或CPU内核上进行计算?还是说只能在单CPU上,以线性的方式进行优化?
  • 算法是需要一次性使用所有数据进行学习,还是可以使用单个样本或者数据集的一个小的子集来进行训练?

数据量的变化,使得分析的手段与方法也随之改变​,常规的方法已经无法适应海量数据环境下的需求,因此,从算法层面来对系统改进就显得尤为重要。

格物课堂现推出“Python机器学习”算法课程,使用华章出版社2017年最新大数据算法书籍《Python机器学习》作为教材,由译者亲自授课,点击此处了解详情。

识别二维码,关注“格物课堂

2022-2023 Copyright © 深圳市意行科技开发有限公司 - All Rights Reserved.
深圳市南山区学苑大道1227号 
粤ICP备17013574号