大数据分析、机器学习、智能化等概念梳理

1 引言

最近半年来一直在学习数据分析、机器学习等智能化相关的知识,过程中积累了不少技术和经验,收获很多,启发很大。

2 统计工具的学习

最初,以数据的关联性分析为切入点,展开分析工作,希望在大量、静态的数据中获取有价值的信息。在这一需求背景下,学习了 R 语言,并通过 R 语言完成了一些简单的分析工作。

这里写图片描述

图1 R语言编程环境

但 R 语言更专注和适应于统计学领域,是做学术和实验的绝佳选择,在产品化和集成方面稍显不足。

于是,将关注点转向 Python 的数据分析模块,Numpy&Pandas,Scipy,Matplotlib等。Python 由于其自身的开放、简洁、和灵活性,使其在数据分析领域拥有着得天独厚的优势,相对于 R 在统计方面的专业性,Python 更均衡,更全面。

数据分析其实不仅仅是统计,前期的数据收集、数据处理、抽样、汇聚,以及比较复杂的数据挖掘算法,建模等等任务,Python 都能很好的胜任。

此外,数据分析毕竟是一门专业性很强的工作,需要掌握很多统计学、数学相关的领域知识。比如,如何建立相关模型,如何进行回归,如何理解检验参数,一般线性模型与广义线性模型,非参数校验与参数校验,ROC曲线等等。Python 和 R 只不过是个工具,它们提供了所有可用的方法和函数,但如何使用它们,如何有效的建立模型,得出结论,则需要大量的时间、精力,以及统计分析经验。作为一名程序员,这些才是真正的挑战。

这里写图片描述

图2 Python大数据学习路线

除了 Python 和 R,还花了不少时间学习和使用SPSS。

SPSS 是一个可视化的统计分析平台,其分析结果清晰、直观、易学易用,可对一些简单的数据进行快速建模分析,对于掌握和理解一些专业术语有极大的帮助。它整合集成了统计分析中最常用、最主流的算法、过程、和工具,特别适合对分析、建模的方案进行快速验证。

这里写图片描述

图3 SPSS软件视图

SPSS更适合那些传统统计领域的从业人员,重心放在对工具的使用上,点一点,选一选,无需编程。但是 SPSS 缺少灵活性,尤其是在大数据分析时,SPSS所能完成的功能,也都可以通过python来编程实现。

除了以上三种在数据分析领域普遍使用的工具,还花时间学习了杭州奇越数据科技有限公司的SPM软件。总体来说,SPM与SPSS有很多相似之处,但它比SPSS更专注于算法和大数据分析,能更灵活的应对数据的不同规模、复杂度和结构,对数据进行描述性分析,构建分析模型,或者预测。

SPM内含了多种先进的数据挖掘、机器学习算法模块,如CART、TreeNet、MARS、Random Forests等,学习起来明显比SPSS更难,非统计学专业人员,一般只能使用经典模型进行分析,很难根据数据特征进行调参、优化,或者创建新的分析模型。

这里写图片描述

图3 SPM软件视图

统计分析相关的工具主要了解了以上四种,数据分析是一个极其广泛的领域,社会、金融、互联网、娱乐、气象等等,不同领域都有各式各样定制化的分析工具或系统方案,另外还有很多开源工具,各具特色,但万变不离其宗,数据分析的基本规律、结构和算法原理都一样。

研究了这些统计工具之后,我的感触是,作为程序员,很难做好统计专业的事情,一句话隔行如隔山,我花了挺多时间去看高等数学、概率论与数理统计,也看了不少的技术文档,可以理解一些术语,一些算法,但是很难去使用它们、去建模、去做其他有创造性的事情,尤其是涉及到大数据和复杂结构时。

而且,数据的统计分析是指导我们如何去分析、处理和理解数据,是一个技术概念、一个方法论。那么如何跳出晦涩的、统计相关的技术范畴?有没有系统化的解决方案?

于是,开始进入了第二阶段的探索——知识发现。知识发现是数据分析的目的。

3 知识发现

知识发现就是在数据中发掘知识,将低层次的原始数据转换为高层次的信息。

比如运维系统中,常常几百G的历史记录躺在数据库中,死气沉沉,毫无价值,因为客户根本不关心半年前的主机或者网络设备到底是什么状态,有没有告警,cpu高了还是低了,因为那都是陈年往事了。

那么这些数据中,有没有蕴藏着某些天机呢?可能有,也可能没有,这就需要进行知识发现。沃尔玛尿不湿与啤酒的经典案例,就是知识发现的最佳实践。

这里写图片描述

图4 知识发现过程图

知识发现过程可以概括为三个部分:数据准备、数据挖掘、结果的表达和解释(数据展示)。

1.2.1 数据准备与数据仓库

数据准备其实就是把原始数据提取并转换为可分析数据!当数据量小,数据结构简单的时候,我们甚至可以通过excel来完成数据准备,无非就是进行数据规整、合并、填充、转换等等操作呗;但是随着数据量的增大,比如几百M甚至几G,或者多种不同结构的信息,excel就无能为力了,不过,还可以通过数据库的sql语句来完成。

当数据量进一步增大,数据结构进一步复杂,甚至数据来源于不同结构的存储体系,有些在分布式数据库中,有些在关系型数据库中,有些可能在mysql里,有些可能在oracle里,要对这些不同来源,不同形式的数据进行综合分析,很显然,传统的sql查询也无能为力了。

以淘宝网站的架构变迁为例,在最开始的时候,由于业务规模很小,电商系统的技术门槛是非常低的,简单的前端设计+Apache+几台应用服务器+mysql,网站就可以运营了。这个时候业务量不大,每天的订单数,订单金额,访问量,畅销商品排行,客户消费能力排行等等信息,几张excel表就可以做了,一目了然。

然后,客户和订单越来越多,查询开始变慢,系统开始卡顿,这个时候就需要对网站架构进行升级,增加服务器,增加数据库(分库分表)。业务数据和指标依然可以从数据库中查询,基于数据表信息进行数据的查询处理。

接下来,随着网购时代的真正来临,业务规模指数级增长,数据量陡增,管理团队的规模也越来越大,高层管理人员关心的问题,已经不再是流量,收入,PV,UV这些细枝末节的技术指标了,逐渐演变为趋势性的、集群性、战略性的分析。而这样的需求,再也无法通过传统的数据查询来实现了,因为数据量太大了,原始数据必须抽象转换为更高级的知识才能发挥价值。

此时,数据仓库技术应运而生!

数据仓库,简单的说就是为了知识发现与辅助决策而构建的数据加工系统,支持复杂的分析操作,并且提供直观易懂的查询结果。数据仓库的建立标识着一家公司真正进入信息化阶段!

这里写图片描述

图5 数据仓库结构视图

IBM、Oracle、Sybase、Microsoft、和SAS等IT巨头都曾先后通过收购或研发推出了自己的数据仓库解决方案,可见IT公司对数据仓库的重视。

在了解和学习Hive时,专门使用了4台服务器搭建了一个Hadoop集群,并安装了Hive工具,进行了简单功能的使用。

这里写图片描述

图6 Hive体系结构

当然,建立数据仓库最重要的工作并非工具使用,而是对业务系统和决策需求的分析,确定数据仓库所要解决的真正问题,不同主题下的查询需求等等。

1.2.2 数据挖掘

当数据准备结束,就开始进行数据挖掘了。数据挖掘是知识发现中的核心工作,它利用一系列的方法或算法从数据中获取知识。

数据挖掘的概念来源于机器学习。学习是人类才具有的智能行为,目的在于获取知识。机器学习是研究如何使用计算机来模拟或实现人类的学习行为的技术,是人工智能领域中的重要研究方向。

这里写图片描述

图7 机器学习的方向

数据挖掘根据任务目的的不同,可以分为聚类、分类、关联规则发现等。

聚类算法是将没有类别的数据按照距离的远近亲疏聚集成若干类别,典型的方法有K-means。分类方法是对有类别的数据,找出各类别的描述知识,典型的算法有ID3,C4.5,IBLE等。关联规则是对多个数据项重复出现的概率进行评测,超过指定的阈值时,建立这些数据项之间的关联,典型的算法是Apriori。此外,人工神经网络的相关算法也被应用于数据挖掘中。

在学习过程中,深入的了解和学习了决策树与人工神经网络这两类算法。

决策树是用样本的属性作为结点,用属性的取值作为分支的树结构,利用信息论原理对大量样本的属性进行分析和归纳而产生的。决策树的根结点是所有样本中信息量最大的属性。ID3,C4.5都属于决策树算法。

人工神经网络算法,由大量处理单元互联组成的非线性、自适应信息处理系统。它是在现代神经科学研究成果的基础上提出的,试图通过模拟大脑神经网络处理、记忆信息的方式进行信息处理。目前广泛应用于模式识别、智能机器人、预测估计、自动控制等领域,并成功解决了许多现代计算机难以解决的实际问题。

Keras是目前比较流行、易学易用的python 深度学习框架,可以通过Keras对数据进行网络建模和训练。我在公司环境里搭建了Keras环境,并构建了简单的网络模型,实现图片分类功能。对理解人工神经网络的原理与应用有极大的帮助。

1.2.3 智能决策系统

知识发现的最后一步是结果的表达和解释,其实就是数据展示。

对于小公司或者创业公司的初期,业务数据非常简单,可以通过excel进行图表展示,比如直方图,饼图等就能满足需求了。对于中型公司,它们的数据量已经大到了一定程度,就需要报表系统来进行数据的展示。那么对于阿里、腾讯这样的互联网巨头呢?马云思考的一定是那些战略性的、趋势性的问题,他所想要看的数据已经不再是存储在数据库中的定量的、技术性的数据了,他需要一个智能决策系统。

部署并实际操作体验了以下两个智能决策系统:FineBI和Pentaho。

1 FineBI

这里写图片描述

图8 FineBI主界面

FineBI是帆软公司的产品,是一个初级的、易学易用的决策系统,更准确的应该说是加强版的智能报表系统,更适合中小规模企业使用。
总的来说,FineBI是个入门级的决策系统,基本做到了数据的展现与存储的隔离,能支持多种数据源与数据格式。

2 Pentaho

Pentaho是世界上最流行的开源商务智能软件,以工作流为核心的,强调面向解决方案而非工具组件的,它包括一个web server平台和几个工具软件:报表,分析,图表,数据集成,数据挖掘等,可以说包括了商务智能的方方面面。它偏向于与业务流程相结合的BI解决方案,侧重于大 中型企业应用。它允许商业分析人员或开发人员创建报表,仪表盘,分析模型,商业规则和 BI 流程。

这里写图片描述

图9 Pentaho BI组成

开源BI或者说决策系统是越来越多IT公司的选择,因为其不逊于商业BI的功能,以及天生的开放性和灵活性,当然Pentaho的部署和使用需要投入非常多的技术成本。

4 业务拓扑

业务拓扑是一个实践任务,简单的说就是主动探索环境中对象间的拓扑关系。可以是网络环境中的不同网络节点间的关系,也可以是服务器中不同进程间的关系。建立业务拓扑,本质上是要依靠“关系”去剖析“系统”,是个逆向分析与解构的过程。+

关系具有这些特征:方向性、强度、频度、成本、周期。

可以根据采集的关系数据,对网络节点进行数据分析,如聚类、分类,或者关联分析等。能够建立一个初始的关系网,然后再结合节点本身的信息,进一步的检索、匹配业务信息,丰富关系网的属性。
第一阶段,是发现服务器内部进程间的关系。

使用tcpdump,scapy,netstat,ps等系统工具采集所需的业务信息,以数据流信息为关系,通过graphviz工具对XX业务系统中进程进行拓扑。

这里写图片描述

图10 XX进程间的业务关系图

业务拓扑的后续工作还没有展开,如果是预研性质的去探索可行性、做技术储备和选型,可以继续深入研究。但如果想结合XX的业务场景进行开发、集成,可能还需要花更多的时间在业务需求的分析上。

5 总结

运维智能化是件复杂的事儿,有些事情要想明白,想清楚。

这里写图片描述

图11 冯.诺伊曼结构

上图是冯.诺依曼结构,该结构指明了人工智能探索的方向。要进行运维智能化,方向在哪里?结合自己这半年的体会,开个脑洞,胡乱说说。

智能输入系统:我们要开发智能探针,snmp,wmi这些都太落伍了,智能指针能语音识别,能文字解析,能图像识别,要能联网,能爬各种互联网信息,要能监控移动终端,比如智能手机、手环、手表等等。

智能存储系统:想要单纯的基于pgsql/cassandra去做大数据分析,去做业务智能化,确实是有点浪漫,巧妇难为无米之炊啊!要智能化,怎么说也得分布式、集群之类的吧!首先把规模搞上去,横向扩展起来,然后再纵向分层,读写分离,搞个智能化的数据仓库之类的,这样就比较有感觉了。

智能运算系统:运算这一块是技术活,搞个算法团队,专门琢磨怎么去优化决策树,如何重构卷积网络模型。开源的、经典的算法,组件,统统想办法集成进来,就两个字,准!快!

智能控制系统:除了智能探针,再开发个智能帮手,专门负责实施。运算系统中出来的指令直接分发到智能帮手那里,有令必行,令行禁止。什么升级啊,更新啊,远程配置,控制,全部能干,包省心!

智能展示:既然都智能了,语音识别是必须的吧,领导站在大屏幕前,说到哪里就展示到哪里。画面就更不用说了,必须炫酷,有视觉冲击力。等等等等吧。

智能这件事儿,大了可以很大,小了也可以很小。空调连上网就变成智能家具了,电视连上网就变成智能电视了,本质上他们只是增加了一种输入方式而已。

所以运维智能化的方向在哪里,我们该做什么,怎么做?是思想策略的问题,而非技术问题,或许这就是这半年来最大的心得吧!

猜你喜欢

转载自blog.csdn.net/antony1776/article/details/78291788