从大数据生命周期角度看,大数据处理的基本流程包括:数据采集、数据分析和数据解释。
1 | 数据采集 | 获取各不同数据源的各类数据,按照统一标准进行数据的转换、清洗等工作,以形成后续数据处理的符合标准要求的数据集。 | |
按种类 | 传感数据:由感知设备或传感设备感受、测量及传输的数据。 业务数据:企业业务系统在日常业务活动中产生的大量数据 人工输入数据:用户通过软件人机交互等主动输入的数据 科学数据:通过科学研究和科学实验不断搜集和汇聚的数据 | ||
按来源 | 企业数据(内):企业自建的各种业务系统产生的数据集。 政府数据(外):政府信息化构建的业务数据(大数据中心) 互联网数据(外):是当前大数据应用的重要数据来源。 | ||
主要涉及的技术: (1)针对内部数据:数据集成和ETL技术 数据集成::把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而提供全面的数据共享。 集成技术:联邦式、基于中间件模型和数据仓库等 ETL (Extract Transform Load):用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。目的是将分散、零乱、标准不统一的数据整合到一起,为决策提供分析依据。 主要环节:数据抽取、数据转换和加工(重点,组件化方式)、数据加载 常用工具:DataStage(IBM)、Infornatica PowerCenter(企业级) 和 Kettle(开源)。 (2)针对外部数据,爬虫技术(互联网) 网络爬虫(又称网页蜘蛛,网络机器人):是一种按照一定规则,自动抓取互联网信息的程序或者脚本。 类型:通用网络爬虫(大型站点)、聚焦网络爬虫(预定义主题)、深层网络(Deep Web)爬虫(动态数据) 注意:爬虫技术常结合使用 爬虫工具:Nutch(Java开源)、Scrapy(Python框架)、Larbin(C++开源) | |||
数据分析 | 是大数据价值体现的核心环节 机器学习算法:分为监督学习(监督训练)和非监督学习(或无监督学习) (1)监督学习:是指利用一组已知类别的样本调整分类器参数,使其达到所要求性能的过程,是从标记的训练数据来推断一个功能的机器学习任务。 根据训练集中的标识是连续的还是离散的,可以将监督学习分为回归和分类。 | ||
数据解释 | 对大数据处理后产生的输出数据进行处理,采用合理合适的人机交互方式将结果展现给用户,帮助用户做出相应的决策。 信息可视化:指对抽象数据使用计算机支持的、交互的、可视化的表示形式以增强认知能力。 呈现形式:统计图形、图表、信息图表和其他工具 作用:使用点、线或条对数字数据进行编码,以便在视觉上传达定量信息。可以帮助用户分析和推理数据和证据。使复杂的数据更容易理解和使用。 迈克尔•弗兰德利(2008)提出数据可视化的两个主要组成部分:统计图形和主题图。 可视化分类: 文本数据可视化(标签云) 网络数据可视化:如H状树、气球图、放射图等; 时空数据可视化,如流式地图、堆积图等; 多维数据可视化,如散点图等。 可视化工具: 底层程序框架,如OpenGL、Java2D等; 第三方库:D3、ECharts、HighCharts, Google Chart API 等; 软件工具:Tableau, Gephi 等 |
回归是研究一个或一组随机变量对一个或一组属性变量的相依关系的统计分析方法。线性回归模型是假设自变量和因变量满足线性关系。逻辑回归一般用于分类问题,而其本质是线性回归模型,只是在回归的连续值结果上加了一层函数映射。
分类是机器学习中的一个重要问题,其过程也是从训练集中建立因变量和自变量的映射过程,与回归问题不同的是,分类问题中因变量的取值是离散的,根据因变量的取值范围,可将分类问题分为二分类问题、二分类问题和多分类问题。根据分类采用的策略和思路的不同,分类算法大致包括:基于示例的分类方法,如K最近邻(K-Nearest Neighbor, KNN)方法:基于概率模型的分类方法,如朴素贝叶斯、最大期望算法EM等;基于线性模型的分类方法,如SVM;基于决策模型的分类方法,如C4.5、AdaBoost、随机森林等。
在实际应用中,缺乏足够的先验知识,因此难以人工标注类别或进行人工类别标注的成本太高,学习模型是为了推断出数据的一些内在结构。因此,根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称为无监督学习。常见的算法有:关联规则挖掘,是从数据背后发现事物之间可能存在的关联或联系。比如数据挖掘领域著名的“啤酒-尿不湿”的故事。K-means算法,基本思想是两个对象的距离越近,其相似度越大;相似度接近的若干对象组成一个簇;算法的目标是从给定数据集中找到紧凑且独立的簇。
近年来发展起来的深度学习算法是基于原有的神经网络算法发展起来的,包括BP神经网络、深度神经网络。
BP神经网络是一种反向传播的前馈神经网络,所谓前馈神经网络就是指各神经元分层排列,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层。所谓反向传
播是指从输出层开始沿着相反的方向来逐层调整参数的过程。BP神经网络由输入层、隐含层和输出层组成。
深度神经网络主要包括卷积神经网络、循环神经网络等,也包括它们的各种改进模型。
(1)卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,其结构包括输入层、卷积层、池化层、全连接层以及输出层等。该算法在图像处理、模式识别等领域取得了非常好的效果。在CNN的发展过程中,最经典的模型是AlexNet,针对不同的应用需要,又产生了全卷积模型(FCN)、残差神经网络模型(ResNet)、DeepFace等模型结构。
(2)循环神经网络(RecimentNetualNetwork, RNN)是一种人工神经网络,在该网络中,除了层间的连接以外,同层各单元之间连接构成了一个有向图序列,允许它显示一个时间序列的动态时间行为。RNN可以使用它们的内部状态来处理输入序列,这使得它们适用于诸如未分割的、连续的手写识别或语音识别等任务,传统的RNN是很难训练的,往往会出现梯度消失或梯度爆炸等情况,因此又出现了多个扩展版本,如BiRNN, LSTM等。
随着深度学习的快速发展和应用的普及,开始出现了一些深度学习框架。深度学习框架是一种界面、库或工具,可以使用户在无需深入了解底层算法的细节的情况下,能够更容易、更快速地构建深度学习模型。深度学习框架利用预先构建和优化好的组件集合定义模型,为模型的实现提供了一种清晰而简洁的方法。常见的深度学习框架有:Caffe,是一个广泛使用的开源深度学习框架,支持常用的网络模型,比如Lenet、AlexNet、ZFNet、VGGNet、GoogleNet、
ResNet等:Tensor Flow,是一个使用数据流图进行数值计算的开源软件库,图中的节点表示数学运算,而图边表示节点之间传递的多维数据阵列(又称张量),其为大多数复杂的深度学习模型预先编写好了代码,比如递归神经网络和卷积神经网络,灵活架构使我们能够在一个或多个CPU (以及GPU)上部署深度学习模型;Keras,是一个由Python编写的开源人工神经网络库,可以作为TensorFlow、Microsoft-CNTK和Thean。的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化,Keras完全模块化并具有可扩展性,并试图简化复杂算法的实现难度。
随着大数据技术的广泛深入,大数据应用已经形成了庞大的生态系统,很难用一种架构或处理技术覆盖所有应用场景。下文介绍几种当前主流的大数据分布式计算架构。
Apache Hadoop是用于开发可靠、可伸缩、分布式计算的开源软件,是一套用于在由通用硬件构建的大型集群上运行应用程序的框架。包含的模块有:Hadoop分布式文件系统(HDFS),提供对应用程序数据的高吞吐量访问的分布式文件系统;Hadoop YARN,作业调度和集群资源管理的框架:Hadoop MapReduc, 一个用于大型数据集并行处理的基于YARN的系统:Hadoop Ozone, Hadoop的对象存储;Hadoop Submarine, Hadoop的机器学习引擎。
Apache Spark是加州大学伯克利分校的AMP实验室所开源的类Hadoop MapReduce的通
用并行框架。Spark是一个分布式的内存计算框架,是专为大规模数据处理而设计的快速通用的计算引擎。Spark的计算过程保持在内存中,不需要读写HDFS,减少了硬盘读写,提升了计算速度。除了 Map和Reduce操作外,Spark还延伸出如filter. flatMap、count、distinct等更丰富的操作。同时通过Spark Streaming支持处理数据流。
Apache Stonn是一个免费的开源分布式实时计算系统,可以可靠地处理无边界的数据流
变,可以实现实时处理。Apache Stonn速度很快,它是可扩展的,容错的,并且易于设置和操作。Apache Stomi应用于实时分析、在线机器学习、连续计算、分布式RPC、ETL等等。Storm的核心是拓扑(Topology),拓扑被提交给集群,由集群中的主控节点分发代码,将任务分配给工作节点执行。