# 机器学习基础:大数据与深度学习的关系
概念
大数据
通常被定义为“超出常用软件工具捕获的数据集,管理和和处理的能力”的数据集。
机器学习
关心的问题是如何构建计算机程序使用经验自动改进,就是利用计算机、概率论、统计学等知识,通过给计算机程序输入数据,让计算机学会新知识,是实现人工智能的途径,但这种学习不会让机器产生意识。机器学习的过程,就是通过训练数据寻找目标函数。数据质量会影响机器学习精度,所以数据预处理非常重要。
数据挖掘
是从数据中提取模式特性的算法应用。在数据挖掘中,重点在于算法应用,而不是算法本身。顾名思义就是从海量数据中“挖掘”隐藏信息,按照教科书的说法,这里的数据是“大量的、不完全的、有噪声的、模糊的、随机的实际应用数据”,信息指的是“隐含的、规律性的、人们事先未知的、但又是潜在有用的并且最终可理解的信息和知识”。在商业环境中,企业希望让存放在数据库中的数据能“说话”,支持决策。所以,数据挖掘更偏向应用。为了做好数据挖掘,企业又要建立数据仓库。
深度学习
只是机器学习(Machine Learning)的一种类别,一个子领域。机器学习 > 深度学习。
关系
机器学习与数据挖掘的关系
数据挖掘是一个过程,在此过程中机器学习算法被用作提取数据集中潜在有价值模式的工具,里面包括了很多种approach。任务也可以不同,可以是预测(prediction),分类(classification),聚类(clustering),识别(recognition),重建(reconstruction),约束(regularization),甚至降噪(denoising),超分辨(super-resolution),除马赛克(Demosaicing)等等....
大数据与深度学习
深度学习是一种模拟模拟大脑的行为,可以从所学习的对象的机制以及行为等等很多相关的地方学习,模仿行为以及思维。深度学习对于大数据的发展有帮助,深度学习对于大数据技术开发的每一个阶段均有帮助,不管书数据的分析、建模还是挖掘,只有深度学习,这些东西才会一一得到实现。深度学习转变了解决问题的思维,很多时候发现问题到解决问题,走一步看一步,不是一个主要的解决问题的手段,在深度学习基础上,要求我们从开始到最后都要基于同一个目标,为了优化那个最终的目标去畸形数据处理以及将数据放在数据应用平台上去,大数据的深度学习需要一个框架,在大数据方面的深度学习都是从基础的角度出发,深度学习需要一个框架或者一个系统的总体而言,需要将你的大数据通过深度分析变为现实这就是他们的直接关系。
领域名词解释
Linuxlucene:全文检索引擎的架构。
HadoopHDFS:分布式存储系统,包含NameNode,DataNode。
NameNode:元数据,DataNode。
DataNode:存数数据。
**yarn**:可以理解为MapReduce的协调机制,本质就是Hadoop的处理分析机制,分为ResourceManager NodeManager。
**MapReduce**:软件框架,编写程序。 Hive:数据仓库
可以用SQL查询,可以运行Map/Reduce程序。用来计算趋势或者网站日志,不应用于实时查询,需要很长时间返回结果。HBase:数据库。非常适合用来做大数据的实时查询。Facebook用Hbase存储消息数据并进行消息实时的分析。
**ZooKeeper**:针对大型分布式的可靠性协调系统。Hadoop的分布式同步等靠Zookeeper实现,例如多个NameNode,active
standby切换。 Sqoop:数据库相互转移,关系型数据库和HDFS相互转移。
**Mahout**:可扩展的机器学习和数据挖掘库。用来做推荐挖掘,聚集,分类,频繁项集挖掘。Chukwa:开源收集系统,监视大型分布式系统,建立在HDFS和Map/Reduce框架之上。显示、监视、分析结果。
**Ambari**:用于配置、管理和监视Hadoop集群,基于Web,界面友好。
**ClouderaCloudera Manager**:管理、监控 诊断 集成 Cloudera CDH:(Cloudera's Distribution,including Apache
Hadoop) Cloudera对Hadoop做了相应的改变,发行版本称为CDH。
**Flume**:日志收集系统,支持在日志系统中定制各类数据发送方,用来收集数据。
**Cloudera Impala**:对存储在Apache Hadoop的HDFS,HBase的数据提供直接查询互动的SQL。
**机器学习/RR**:用于统计分析、绘图的语言和操作环境,目前有**Hadoop-Rmahout**:提供可扩展的机器学习领域经典算法的实现,包括聚类、分类、推荐过滤、频繁子项挖掘等,且可通过Hadoop扩展到云中。
**stormStorm**:分布式,容错的实时流式计算系统,可以用作实时分析,在线机器学习,信息流处理,连续性计算,分布式RPC,实时处理消息并更新数据库。
**Kafka**:高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据(浏览,搜索等)。相对Hadoop的日志数据和离线分析,可以实现实时处理。目前通过Hadoop的并行加载机制来统一线上和离线的消息处理
**Redis**:由c语言编写,支持网络、可基于内存亦可持久化的日志型、key-value型数据库。
**SparkScala**:一种类似java的完全面向对象的编程语言。
**jblas**:一个快速的线性代数库(JAVA)。基于BLAS与LAPACK,矩阵计算实际的行业标准,并使用先进的基础设施等所有的计算程序的ATLAS艺术的实现,使其非常快。
**Spark**: Spark是在Scala语言中实现的类似于Hadoop MapReduce的通用并行框架,除了Hadoop MapReduce所具有的优点,但不同于MapReduce的是job中间输出结果可以保存在内存中,从而不需要读写HDFS,因此Spark能更好的适用于数据挖掘与机器学习等需要迭代的MapReduce算法。可以和Hadoop文件系统并行运作,用过Mesos的第三方集群框架可以支持此行为。
**Spark SQL**: 作为Apache Spark大数据框架的一部分,可用于结构化数据处理并可以执行类似SQL的Spark数据查询
**Spark Streaming**: 一种构建在Spark上的实时计算框架,扩展了Spark处理大数据流式数据的能力。 Spark
**MLlib**:
MLlib是Spark是常用的机器学习算法的实现库,目前(2014.05)支持二元分类,回归,聚类以及协同过滤。同时也包括一个底层的梯度下降优化基础算法。MLlib以来jblas线性代数库,jblas本身以来远程的Fortran程序。
**Spark GraphX:**
GraphX是Spark中用于图和图并行计算的API,可以在Spark之上提供一站式数据解决方案,可以方便且高效地完成图计算的一整套流水作业。
**Fortran**:最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。
**BLAS**:基础线性代数子程序库,拥有大量已经编写好的关于线性代数运算的程序。
**LAPACK**:著名的公开软件,包含了求解科学与工程计算中最常见的数值线性代数问题,如求解线性方程组、线性最小二乘问题、特征值问题和奇异值问题等。
**ATLAS**:BLAS线性算法库的优化版本。 Spark
**Python**:Spark是由scala语言编写的,但是为了推广和兼容,提供了java和python接口。
**Python:**
一种面向对象的、解释型计算机程序设计语言。 云计算平台Docker:开源的应用容器引擎。
**kvm**:(Keyboard Video Mouse)。
**openstack**:开源的云计算管理平台项目。