大数据
大数据这个词早出现在上世纪90年代的美国,直到2012年后才火起来。大数据没有一个明确的概念,之所以称之为大是因为数据量太大超过了单台计算机的资源,这时就需要分布式的数据处理工具,以便能在用户可容忍的时间内进行数据处理。大数据从业人员肯定会去了解谷歌的mapreduce论文和hadoop开源工具。然而海量数据本来是静态,只有通过对数据进行分析和利用才能让数据产生价值。正所谓量变产生质变。
人工智能
人工智能在1956年的达特茅斯会议上被提出来,它研究的是如何制造智能机器或模拟人类的智能行为。大数据与人工智能之间可以说是相辅相成,人工智能的基础是数据,而数据的利用又离不开人工智能。各个领域海量数据的收集,并进行人工处理标识后成为人工智能学习的指导数据。人工智能研究的方向主要有:模式识别、机器学习、机器翻译、自然语言处理、计算机视觉、专家系统、逻辑推理等等。
机器学习
机器学习就是利用事物本身具有的数据特征用数学来表达并构建模型,然后完成既定任务,总的来说模型就是特征到任务结果的某种数学规律。对于实际工程中,我们的模型是能尽量简单就尽量简单,模型并非是看起来高端才牛逼,真正牛逼的模型是简单又有效。机器学习的数学知识涉及到高等数学、线性代数、概率论、数理统计、优化理论、数理逻辑等等。
常见机器学习算法
机器学习常见的算法涉及以下:
线性回归,比较简单且直观的回归算法,线性回归可以有n个属性值,然后每个属性的线性组合组成一个预测函数,通过定义误差函数然后小化样本整体的误差来确定预测函数的参数。
逻辑斯蒂回归,可以说它是广义线性模型,原来的线性回归无法用于分类任务,那么通过一个sigmoid函数可以将其用于分类任务,这便是逻辑斯蒂回归。线性函数被映射到了S函数中,以0.5为分割点可作为二分类。逻辑斯蒂回归往多分类推广则变为softmax回归,可用于多分类任务。
朴素贝叶斯,它是概率论中非常经典的方法,核心就是贝叶斯定理,通过条件独立假设来简化模型,通过样本来学习联合概率分布,其中涉及到先验概率分布和条件概率分布。
决策树,根据属性构造一个树形的决策策略,按各个属性值不断往下便能确定终的结果。训练时可以以信息增益作为准则。
支持向量机,它规定了优分类线不仅能正确将两类分开,而且还要使分类间隔大,当然对于高维空间则是超平面。它的本质问题是凸二次规划问题的极小问题,这方面涉及到凸优化理论。对于线性不可分的情况可以引入核函数,将低维空间线性不可分的点映射到高维空间中,从而使得它们可分。
集成学习(boosting、bagging、stacking),集成学习核心思想是结合多个模型算法来完成任务,这个假设了单个算法学习的知识是局限的,多个算法组合则能发挥各个算法模型的长处,从而增加模型性能。boosting、bagging、stacking分别是三种不同的集成方式,boosting的个体学习器有强依赖关系,每个个体学习器依赖于前一个个体学习器的输出,bagging个体学习器之间没有依赖关系且通过一定的结合策略产生终输出,stacking则是一种分层特征学习的结构。
神经网络(感知机、BP神经网络、卷积神经网络、循环神经网络),神经网络基础版本是感知机和BP神经网络,通过模拟人脑神经一样构建起一个神经网络,并通过梯度下降之类的学习模型参数。后面通过加深网络层数和引入卷积等操作发展成卷积神经网络,此外还有改造成循环神经网络等,也就是后来的深度学习。
聚类(kmeans、密度聚类、层次聚类),聚类就是通过一定的算法将属性相近的个体聚集到一起,并将属性不同的个体尽量隔离远一点。kmeans是基于距离的聚类,密度聚类则是寻找被低密度区域分离的高密度区域,层次聚类congratulation上往下将大集群进行分割。
降维(PCA、LDA),PCA主成分分析将数据congratulation原来的坐标转换到新坐标使得可以用更少维度来表示数据,LDA线性判别分析将高维样本投印到佳鉴别矢量空间以达到压缩特征空间维度的效果。
数据工程流程
数据获取,从不同数据源收集数据获取数据到统一装置中。
数据存储,借助存储介质将收集到的数据持久化保存,比如硬盘。
数据清洗,将不符合规范的数据进行特定处理,使得数据达到准确完整一致等要求。
数据建模,定义满足业务所需要的数据要求的过程,一般需要业务建模师参与。
数据处理,对数据的采集、存储、检索、加工、变换、传输等操作,从海量数据中抽取提取有价值的数据。
数据分析,使用数据挖掘技术从海量数据中获取有价值的信息。
数据可视化,将数据以直观的可视化方式展示给用户。
常用大数据工具
hadoop受谷歌MapReduce论文启发而实现的经典的开源大数据处理工具,目前大数据工具主要包括以下。
HDFS,分布式文件系统。
HBase,分布式数据库。
MapReduce,由用户编写的运行在hadoop集群上的并行程序。
zookeeper,作为分布式程序的协调中心。
hive,基于hadoop的数据仓库管理工具。
pig,大数据分析工具。
yarn,hadoop集群资源管理系统。
sqoop,hadoop与传统数据库之间进行数据交换的工具。
chukawa,分布式数据收集分析系统。
hcatalog,管理hadoop产生的数据表存储管理系统。
redis,分布式缓存系统。
kafka,分布式消息系统。
Cassandra,分布式结构和数据存储。
neo4j,nosql图数据库。
spark,分布式计算引擎。
storm,分布式实时计算系统。
elasticsearch,分布式全文搜索。
flume,分布式日志采集系统。
flink,分布式流处理引擎。
本公众号专注于人工智能、读书与感想、聊聊数学、计算机科学、分布式、机器学习、深度学习、自然语言处理、算法与数据结构、Java深度、Tomcat内核等。
作者简介:笔名seaboat,擅长人工智能、计算机科学、数学原理、基础算法。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《人工智能原理科普》。
支持作者,购买作者书籍!