1、大数据计算模式:根据大数据的不同特征和计算特征,从多样性的大数据计算问题和需求中提炼并建立的各种高层抽象或模型,传统的并行计算方法主要从体系结构和编程语言层面定义了一些较为底层的并行计算抽象和模型,但由于大数据处理问题具有很多高层的数据特征和计算特征,大数据处理需要更多地结合这些高层特征考虑更高层次的计算模式。

2、数据计算的分类
离线批处理:Hadoop平台主要是面向离线批处理应用的,是一个能够对大量数据进行分布式处理的软件框架,而且是一种可靠的、高效的、可伸缩的方式进行处理,通过数据分块及自恢复机制能支持PB级的分布式数据存储。
MapReduce编程模型是Hadoop的心脏,用于大规模数据集的并行运算,这种编程模式实现了跨越一个Hadoop集群中数千台服务器的大规模扩展性;分布式文件系统HDFS提供基于Hadoop处理平台的海量数据存储,其中NameNode提供元数据服务,DataNode用于存储文件系统的文件块;HBase建立在HDFS上,用于提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统,可以存储非结构化和半结构化的松散数据;Hive是基于Hadoop的大型数据仓库,可以用来进行数据的提取、转化和加载(ETL),存储、查询和分析存储在Hadoop中的大规模数据;Pig是基于Hadoop的大规模数据分析平台,可以把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算,为复杂的海量数据并行计算提供了一个简单的操作和编程接口;Zookeeper是高效、可靠的协同工作系统,用于协调分布式应用上的各种服务,可以构建一个有效防止单点失效及处理负载均衡的协调服务;Avro作为二进制的高性能通信中间件,提供了Hadoop平台间的数据序列化功能和RPC服务。
实时交互计算:一般有两类应用场景:数据量巨大且不能提前计算出结果的,但要求对用户的响应时间是实时的;数据源是实时的和不间断的(流式数据),要求对用户的响应时间也是实时的。
海量数据实时计算:计算过程分为三个阶段,数据的产生与收集阶段(实时采集)——>传输与分析处理阶段(实时计算)——>存储和对外提供服务阶段(实时查询)。

  • 数据实时采集——在功能上需要保证可以完整地收集到所有数据,为实时应用提供实时数据;响应时间上要保证实时性、低延迟、配置简单、部署容易、系统稳定可靠等;
  • 数据实时计算——新型的实时计算架构一般都是采用海量并行处理MPP的分布式架构,数据的存储及处理会分配到大规模的结点上进行以满足实时性要求,在数据存储上则采用大规模分布式文件系统;
  • 实时查询服务——分为全内存(直接提供数据读取服务,定期dump到磁盘或者数据库进行持久化)、半内存(使用Redis、MongoDB等数据库提供数据实时查询服务,由系统进行持久化操作)、全磁盘(使用HBase等以分布式文件系统为基础的NoSQL数据库)三种方式。

流计算:主要为针对实时连续的数据类型准备的,在流数据不断变化的运动过程中实时地进行分析,捕捉可能对用户有用的信息,并把结果发送出去,整个过程中数据的分析处理系统是主动的,用户处于被动接收的状态。

3、聚类:按照特定标准把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能大,即同类数据尽量聚集,不同数据尽量分离。对于具体应用,聚类算法的选择取决于数据的类型、聚类的目的,聚类问题的研究不仅局限于硬聚类(一个数据只能被归为一种类别),模糊聚类也是研究较为广泛的一个分支。

4、聚类算法的类型
划分聚类:对于给定的数据集,划分聚类需要知道划分簇的数目k(k≤n,n是数据集中项的数目),大部分划分聚类都是基于距离的。一般情况下会给出聚类数目k,首先会产生一个初始的划分,然后用迭代的方法通过更改数据项所属的簇来提高划分的质量。一个好的划分标准是同一个簇内的数据项彼此相似。
实现全局最优划分往往很难在复杂度能忍受的范围内做到,大多数应用都选取一些启发式方法,比如像选取贪心策略的k-means和k-medoids算法,都极大地提高了划分质量,并达到了一个局部最优解,这些算法在中小型数据集中挖掘类似球星簇表现非常好。
层次聚类:通过对数据集按照某种方法进行层次分解,直到满足某种条件为止,可以是基于距离、密度、连接的,计算复杂度相对较低,根据划分的方法分为凝聚(自底向上)和分割(自顶向下)两种。

  • 凝聚——每次迭代都将最相近的两个项/组合并成一个新组,直至最终形成一个组或者达到其他停止的条件;
  • 分割——与凝聚的方法相反,开始的时候将所有数据看成一个组,每一次迭代一个簇就被划分成两个稍微小一点的簇,直至最终每个项都是一个簇或者达到某个停止条件。

基于密度的聚类:在整个样本的空间点中,各目标类簇是有一群稠密样本点组成的,这些样本点被低密度区域(噪声)分割,算法的目的是要过滤低密度区域从而发现稠密样本点。这类算法往往重视数据项的密集程度,因此往往是基于连接的,同时也强调连接过程中数据项周围的密度。
基于网格的聚类:将数据项的空间分成有限数目的网格,所有聚类操作都是在网格上进行,好处是计算速度相当快,因为计算过程跟数据项数目无关,只与每一维网格的数目和维数有关。这种网格的思想只有与其他算法相结合才能解决好实际问题。

5、数据集成:把不同来源、格式、特点、性质的数据在逻辑上或物理上有机的集中,从而为企业提供全面的数据共享。目前通常采用联邦式、基于中间件模型和数据仓库等方法来构造集成的系统,这些技术在不同的着重点和应用上解决数据共享和为企业提供决策支持。
①联邦数据库系统FDBS:由半自治数据库系统构成,相互之间分享数据,联盟各数据源之间相互提供访问接口,同时联盟数据库系统可以是集中数据库系统或分布式数据库系统及其他类型数据库,松耦合而不提供统一的接口,但可以通过统一的语言访问数据源,核心是必须解决所有数据源语义上的问题;
②中间件模式:目前比较流行的数据集成方法,通过在中间层提供一个统一的数据逻辑视图来隐藏底层的数据细节,使得用户可以把集成数据源看为一个统一的整体,中间件系统主要集中为异构数据源提供一个高层次的检索服务,关键问题是如何构造这个逻辑视图并使得不同数据源之间能映射到中间层;
③数据仓库:在企业管理和决策中面向主题的、集成的、与时间相关的和不可修改的数据集合,其中数据被归类为广义的、功能上独立的、没有重叠的主题。

6、企业数据集成应用形式
数据仓库应用——主要围绕ETL的功能实现,一般来说主要功能是将多个业务系统不同数据类型抽取到数据仓库的ODS(Operational Data Store)层,经过转换,加载存储到星型结构的DW(Data Warehouse)层,为满足不同主题的展现应用,再向关系型数据库或多维数据库进一步汇总加载,其ETL功能可由手工编程或专业工具软件两种类型实现。
数据迁移应用——对于新旧系统升级、数据大集中时的数据作迁移,使数据能够顺应新系统的结构变化从而平稳迁移。
数据合并应用——在企业并购中很容易产生数据合并的应用,如两个企业的HR系统的合并、财务系统的合并、其他业务系统的合并,当系统需要合并必然产生数据的合并,因此对企业数据进行统一标准化、规范化、数据的补缺、数据的一致性都将导致数据合并。
数据同步应用——当企业一个系统的业务活动会影响到其他多个系统进程时,对数据的实时性、准确性要求就显得尤为重要。
数据交换应用(主数据管理应用)——要从企业多个系统中快速、可靠地建立唯一、完整的企业主数据视图,要求具备良好的数据连通性、良好的数据质量探查和分析、良好的数据转换能力等特点。

7、机器学习(ML,Machine Learning):从广义来说,机器学习是一种能够赋予机器 学习的能力,以便让他完成直接编程无法完成的功能的方法;从实践意义来说,机器学习是一种通过利用数据,训练出模型,然后使用模型进行预测的方法。机器学习的过程是首先需要在计算机中存储历史数据;接着将这些数据通过机器学习算法进行处理(“训练”),处理的结果可以用来对新数据进行“预测”,所得到的结果称为“模型”。“训练”和“预测”是机器学习的两个过程,“模型”是整个过程的中间输出结果,“训练”产生“模型”,“模型”指导“预测”。

8、机器学习的范围

  • 模式识别:=机器学习,主要区别是模式识别是从工业界发展起来的概念,机器学习主要源于计算机学科。
  • 数据挖掘:=机器学习+数据库,大部分数据挖掘中的算法是机器学习算法在数据库中的优化。
  • 统计学习:≈机器学习,与机器学习高度重叠,机器学习中的大多数方法来自统计学,但是统计学习者重点关注的是统计模型的发展与优化,偏数学;而机器学习者更关注的是能够解决问题,偏实践。
  • 计算机视觉cv:=机器学习+图像处理,图像处理技术用于将图像处理为适合进入机器学习模型的输入,机器学习负责从图像中识别出相关的模式。
  • 语音识别:=机器学习+语音处理,语音识别就是音频处理技术与机器学习的结合,一般会与自然语言处理技术相结合。
  • 自然语言处理nlp:=机器学习+文本处理,主要是让机器理解人类语言的一类领域。在nlp中大量使用了编译原理相关技术,例如词法分析、语法分析等,在理解层面使用了语义理解、机器学习等技术。

9、机器学习算法的基本思想
(其中①②③为有监督算法,④⑤为无监督算法,⑥为特殊算法)
回归算法:分为线性回归和逻辑回归,线性回归处理的是数值问题,最后预测出的结果是数字,而逻辑回归属于分类算法,预测的结果是离散的分类。
线性回归一般用“最小二乘法”(假设拟合出的直线代表数据的真实值,观测到的数据代表拥有误差的值,为了尽可能减小误差的影响,需要求解一条直线使得所有误差的平方和最小)拟合一条直线以最佳匹配所有的数据,梯度下降法是解决回归模型中最简单且最有效的方法之一。
逻辑回归在实现方面只是对线性回归的计算结果加上了一个Sigmoid函数,将数值结果转化为0到1之间的概率(数值越大函数越逼近1,数值越小函数越逼近0),接着可以根据这个概率进行预测,直观上来说逻辑回归画出了一条分类线。
神经网络(也称为人工神经网络ANN):诞生起源于对大脑工作机理的研究,使用神经网络来模拟大脑,进行机器学习实验时,在视觉和语音的识别上效果都相当好,在BP算法(加速神经网络训练过程的数值算法)诞生以后,神经网络的发展形成了一股热潮。神经网络的学习机理是分解与整合,使得复杂的图像变成了大量的细节进入神经元,神经元处理后再进行整合识别。
简单的神经网络逻辑架构——分为输入层、隐藏层和输出层,输入层负责接收信号,隐藏层负责对数据的分解与处理,最后的结果被整合到输出层,每层中的一个圆代表一个处理单元(被视作模拟了一个神经元,即一个逻辑回归模型,接收上层的输入,把模型的预测结果作为输出传输到下一个层次),若干个处理单元组成一个层,若干层组成一个神经网络。
支持向量机SVM:从某种意义来说是逻辑回归的强化,通过给予逻辑回归算法更严格的优化条件,支持向量机可以获得比逻辑回归更好的分类界线。通过与高斯“核”(一种特殊的函数,典型特征是可以将低维空间映射到高维空间)的结合,SVM可以表达出非常复杂的分类界线,从而取得很好的分类效果。
聚类算法:计算种群中的距离,根据距离的远近将数据划分为多个族群,典型代表是k-means算法。
降维算法:主要特征是将数据从高维降低到低维层次,最大程度地保留数据信息,维度表示数据的特征量大小,通过降维算法可以去除冗余信息,将特征信息减少,不仅利于表示,在计算上也能带来加速。
降维算法的主要作用是压缩数据、数据可视化、提升机器学习其他算法的效率,通过降维算法可以将具有几千个特征的数据压缩至若干个特征,主要代表是PCA主成分分析算法。
推荐算法:主要特征是可以自动向用户推荐所感兴趣的东西,从而增加购买率,提升效益,最有名的算法是协同过滤算法。一类是基于物品内容的推荐,将与用户购买的内容近似的物品推荐给用户,前提是每个物品都有若干个标签,这样推荐的好处是关联程度较大;另一类是基于用户的相似度进行推荐,将与目标用户兴趣相似的其他用户所购买的物品推荐给目标用户。

10、机器学习的应用——大数据:大数据的核心是利用数据的价值,机器学习正是利用数据价值的关键技术,两者互相促进、相依相存。对于大数据而言机器学习不可或缺,对于机器学习而言,越多的数据越可能提升模型的精确性,同时,复杂的机器学习算法的计算时间也迫切需要分布式计算与内存计算这样的关键技术。
从分析方法看,大数据包含四种分析方法:

  • 大数据,小分析——即数据仓库领域的OLAP分析思路,也即多维分析思想;
  • 大数据,大分析——代表是数据挖掘与机器学习分析法;
  • 流式分析——主要指事件驱动架构;
  • 查询分析——经典代表是NoSQL数据库。

11、机器学习的子类——深度学习:传统的神经网络发展到多隐藏层的情况,具有多个隐藏层的神经网络被称为深度神经网络,基于深度神经网络的学习研究称为深度学习。深度学习属于机器学的子类,基于深度学习的发展极大地促进了机器学习地位的提高,进一步推动了业界对机器学习父类人工智能的重视。

12、机器学习的父类——人工智能:AI的发展不仅取决于机器学习,更取决于深度学习,深度学习技术由于深度模拟了人类大脑的构成,在视觉识别与语音识别上显著性突破了原有机器学习技术的局限,因此有可能是真正实现AI梦想的关键技术。对于目前的人工智能来说,计算能力有分布式计算,反应能力有事件驱动框架,检索能力有搜索引擎,知识存储能力有数据仓库,逻辑推理能力有专家系统,机器学习对应智慧中的最显著特征即归纳和感悟能力。

13、数据分析语言R:基于S语言的一个数据分析和图形显示的程序设计环境,R是S的一种开源实现,是一种用于数据分析和图形的编程环境。主要优势是有一个庞大社区,通过邮件列表、用户贡献的文档和一个非常活跃的堆栈溢出组提供支持,还有CRAN镜像,使得用户可以简单地创建一个包含R包的知识库,这些包有R中的数据和函数,各地的镜像都是R网站的备份文件,完全一样。
功能包括:数据存储和处理系统、数组运算工具(向量、矩阵运算方面功能尤为强大)、完整连贯的统计分析工具、优秀的统计制图功能、简便强大的编程语言、可操纵数据的输入和输出。用户自定义等

14、大数据开发语言Python:是一种面向对象、直译式的计算机程序语言,包含了一组功能完备的标准库,能够轻松完成很多常见任务,语法比较简单,使用缩进来定义语句块。Python具备垃圾回收功能,能够自动管理内存使用,经常被当做脚本语言用于处理系统管理任务和网络程序编写,支持命令式程序设计、面向对象程序设计、函数式编程、面向侧面的程序设计、泛型编程等多种编程范式。
Python的数据处理相关类库非常多,高性能的科学计算类库NumPy和SCIPy给其他高级算法奠定了非常好的基础,matploglib让Python画图变得像MATLAB一样简单,Scikit-learn和Milk实现了很多机器学习算法,基于这两个库实现的Pylearn2,是深度学习领域的重要成员,Theano利用GPU加速实现了高性能数学符号计算和多维矩阵计算,Pandas是在工程领域已经广泛使用的大数据处理类库。