【机器学习】数据挖掘/知识发现/人工智能相关概念梳理
1引言前段时间,花了很多精力在了解、学习和思考有关——大数据/数据挖掘/知识发现/人工智能等等的知识/概念。思维上很受启发,对一些曾经很模糊的概念,也有了较为清晰的认识。
另一方面,作为一个程序员,我开始认真思考一些比较深层次的问题,比如,“信息的本质”,“软件的本质”,“数据的本质”,“语言的本质”,“系统的本质与系统论”,“编程语言原理”,信息在传输过程中的损耗,“对象与关系”,“如何评估智能化的程度”,“神经网络”,“计算机与大脑”等等等等。很有趣,也很有意义,而且让我对现实生活和现实世界有了新的认知。
另外,对“冯.诺依曼”体系结构,也有了进一步的认知,它与现代计算机结构的关系,以及对编程语言的影响。
本文主要是把自己学习中遇到的工具、概念、过程,做一些整理和记录。
2统计工具的学习首先,以运维监控信息为原数据,以关联性分析为切入点,展开分析,希望在大量、静态的数据中获取有价值的信息。在这一需求背景下,学习了R语言,并通过R语言完成了一些简单的分析工作。
图1R语言编程环境
R语言更专注和适应于统计学领域,是做学术和实验的绝佳选择,在产品化和集成方面稍显不足。于是,将关注点转向Python的数据分析模块,Numpy&Pandas,Scipy,Matplotlib等。Python由于其自身的开放、简洁、和灵活性,使其在数据分析领域拥有着得天独厚的优势,相对于R在统计方面的专业性,Python更均衡,更全面。
此外,数据分析毕竟是一门专业性很强的工作,需要掌握很多统计学、数学相关的领域知识。比如,如何建立相关模型,如何进行回归,如何理解检验参数,一般线性模型与广义线性模型,非参数校验与参数校验,ROC曲线等等。Python和R只不过是个工具,它们提供了所有可用的方法和函数,但如何使用它们,如何有效的建立模型,得出结论,则需要大量的时间、精力,以及统计分析经验。作为一名程序员,这些才是真正的挑战。
图2Python大数据学习路线
除了Python和R,还花了不少时间学习和使用SPSS。
SPSS是一个可视化的统计分析平台,其分析结果清晰、直观、易学易用,可对一些简单的数据进行快速建模分析,对于掌握和理解一些专业术语有极大的帮助。它整合集成了统计分析中最常用、最主流的算法、过程、和工具,特别适合对分析、建模的方案进行快速验证。
图3SPSS软件视图
SPSS更适合那些传统统计领域的从业人员,重心放在对工具的使用上,点一点,选一选,无需编程。但是SPSS缺少灵活性,尤其是在大数据分析时,SPSS所能完成的功能,也都可以通过python来编程实现。
除了以上三种在数据分析领域普遍使用的工具,还花时间学习了杭州奇越数据科技有限公司的SPM软件。总体来说,SPM与SPSS有很多相似之处,但它比SPSS更专注于算法和大数据分析,能更灵活的应对数据的不同规模、复杂度和结构,对数据进行描述性分析,构建分析模型,或者预测。
SPM内含了多种先进的数据挖掘、机器学习算法模块,如CART、TreeNet、MARS、RandomForests等,学习起来明显比SPSS更难,非统计学专业人员,一般只能使用经典模型进行分析,很难根据数据特征进行调参、优化,或者创建新的分析模型。
图3SPM软件视图
统计分析相关的工具主要了解了以上四种,数据分析是一个极其广泛的领域,社会、金融、互联网、娱乐、气象等等,不同领域都有各式各样定制化的分析工具或系统方案,另外还有很多开源工具,各具特色,但万变不离其宗,数据分析的基本规律、结构和算法原理都一样。
研究了这些统计工具之后,我的感触是,我们毕竟是程序员,很难做好统计专业的事情,一句话隔行如隔山,我花了挺多时间去看高等数学、概率论与数理统计,也看了不少的技术文档,可以理解一些术语,一些算法,但是很难去使用它们、去建模、去做其他有创造性的事情,尤其是涉及到大数据和复杂结构时。
而且,数据的统计分析是指导我们如何去分析、处理和理解数据,是一个技术概念、一个方法论。那么如何跳出晦涩的、统计相关的技术范畴?有没有系统化的解决方案?
于是,开始进入了第二阶段的探索——知识发现。知识发现是数据分析的目的。
3知识发现知识发现就是在数据中发掘知识,将低层次的原始数据转换为高层次的信息。
比如运维系统中,常常几百G的历史记录躺在数据库中,死气沉沉,毫无价值,因为客户根本不关心半年前的主机或者网络设备到底是什么状态,有没有告警,cpu高了还是低了,因为那都是陈年往事了。
那么这些数据中,有没有蕴藏着某些天机呢?可能有,也可能没有,这就需要进行知识发现。沃尔玛尿不湿与啤酒的经典案例,就是知识发现的最佳实践。
图4知识发现过程图
知识发现过程可以概括为三个部分:数据准备、数据挖掘、结果的表达和解释(数据展示)。
3.1数据准备与数据仓库数据准备其实就是把原始数据提取并转换为可分析数据!当数据量小,数据结构简单的时候,我们甚至可以通过excel来完成数据准备,无非就是进行数据规整、合并、填充、转换等等操作呗;但是随着数据量的增大,比如几百M甚至几G,或者多种不同结构的信息,excel就无能为力了,不过,还可以通过数据库的sql语句来完成。
当数据量进一步增大,数据结构进一步复杂,甚至数据来源于不同结构的存储体系,有些在分布式数据库中,有些在关系型数据库中,有些可能在mysql里,有些可能在oracle里,要对这些不同来源,不同形式的数据进行综合分析,很显然,传统的sql查询也无能为力了。
以淘宝网站的架构变迁为例,在最开始的时候,由于业务规模很小,电商系统的技术门槛是非常低的,简单的前端设计+Apache+几台应用服务器+mysql,网站就可以运营了。这个时候业务量不大,每天的订单数,订单金额,访问量,畅销商品排行,客户消费能力排行等等信息,几张excel表就可以做了,一目了然。
然后,客户和订单越来越多,查询开始变慢,系统开始卡顿,这个时候就需要对网站架构进行升级,增加服务器,增加数据库(分库分表)。业务数据和指标依然可以从数据库中查询,基于数据表信息进行数据的查询处理。
接下来,随着网购时代的真正来临,业务规模指数级增长,数据量陡增,管理团队的规模也越来越大,高层管理人员关心的问题,已经不再是流量,收入,PV,UV这些细枝末节的技术指标了,逐渐演变为趋势性的、集群性、战略性的分析。而这样的需求,再也无法通过传统的数据查询来实现了,因为数据量太大了,原始数据必须抽象转换为更高级的知识才能发挥价值。
此时,数据仓库技术应运而生!
数据仓库,简单的说就是为了知识发现与辅助决策而构建的数据加工系统,支持复杂的分析操作,并且提供直观易懂的查询结果。数据仓库的建立标识着一家公司真正进入信息化阶段!
图5数据仓库结构视图
IBM、Oracle、Sybase、Microsoft、和SAS等IT巨头都曾先后通过收购或研发推出了自己的数据仓库解决方案,可见IT公司对数据仓库的重视。
Hive是一个基于Hadoop的数据仓库基础架构,它提供了一系列的工具,可以用来进行数据ETL(Extract-Transform-Load),是一种可以存储、查询和分析Hadoop中数据的技术方案。
在了解和学习Hive时,专门使用了4台服务器搭建了一个Hadoop集群,并安装了Hive工具,进行了简单功能的使用。
图6Hive体系结构
当然,建立数据仓库最重要的工作并非工具使用,而是对业务系统和决策需求的分析,确定数据仓库所要解决的真正问题,不同主题下的查询需求等等。
3.2数据挖掘当数据准备结束,就开始进行数据挖掘了。数据挖掘是知识发现中的核心工作,它利用一系列的方法或算法从数据中获取知识。
数据挖掘的概念来源于机器学习。学习是人类才具有的智能行为,目的在于获取知识。机器学习是研究如何使用计算机来模拟或实现人类的学习行为的技术,是人工智能领域中的重要研究方向。
图7机器学习的方向
数据挖掘根据任务目的的不同,可以分为聚类、分类、关联规则发现等。
聚类算法是将没有类别的数据按照距离的远近亲疏聚集成若干类别,典型的方法有K-means。分类方法是对有类别的数据,找出各类别的描述知识,典型的算法有ID3,C4.5,IBLE等。关联规则是对多个数据项重复出现的概率进行评测,超过指定的阈值时,建立这些数据项之间的关联,典型的算法是Apriori。此外,人工神经网络的相关算法也被应用于数据挖掘中。
在学习过程中,深入的了解和学习了决策树与人工神经网络这两类算法。
决策树是用样本的属性作为结点,用属性的取值作为分支的树结构,利用信息论原理对大量样本的属性进行分析和归纳而产生的。决策树的根结点是所有样本中信息量最大的属性。ID3,C4.5都属于决策树算法。
人工神经网络算法,由大量处理单元互联组成的非线性、自适应信息处理系统。它是在现代神经科学研究成果的基础上提出的,试图通过模拟大脑神经网络处理、记忆信息的方式进行信息处理。目前广泛应用于模式识别、智能机器人、预测估计、自动控制等领域,并成功解决了许多现代计算机难以解决的实际问题。
Keras是目前比较流行、易学易用的python深度学习框架,可以通过Keras对数据进行网络建模和训练。我在公司环境里搭建了Keras环境,并构建了简单的网络模型,实现图片分类功能。对理解人工神经网络的原理与应用有极大的帮助。
3.3智能决策系统知识发现的最后一步是结果的表达和解释,其实就是数据展示。
对于小公司或者创业公司的初期,业务数据非常简单,可以通过excel进行图表展示,比如直方图,饼图等就能满足需求了。对于中型公司,它们的数据量已经大到了一定程度,就需要报表系统来进行数据的展示。那么对于阿里、腾讯这样的互联网巨头呢?马云思考的一定是那些战略性的、趋势性的问题,他所想要看的数据已经不再是存储在数据库中的定量的、技术性的数据了,他需要一个智能决策系统。
部署并实际操作体验了以下两个智能决策系统:FineBI和Pentaho。
FineBI图8FineBI主界面
FineBI是帆软公司的产品,是一个初级的、易学易用的决策系统,更准确的应该说是加强版的智能报表系统,更适合中小规模企业使用。
总的来说,FineBI是个入门级的决策系统,基本做到了数据的展现与存储的隔离,能支持多种数据源与数据格式。2.Pentaho
Pentaho是世界上最流行的开源商务智能软件,以工作流为核心的,强调面向解决方案而非工具组件的,它包括一个webserver平台和几个工具软件:报表,分析,图表,数据集成,数据挖掘等,可以说包括了商务智能的方方面面。它偏向于与业务流程相结合的BI解决方案,侧重于大中型企业应用。它允许商业分析人员或开发人员创建报表,仪表盘,分析模型,商业规则和BI流程。
图9PentahoBI组成
开源BI或者说决策系统是越来越多IT公司的选择,因为其不逊于商业BI的功能,以及天生的开放性和灵活性,当然Pentaho的部署和使用需要投入非常多的技术成本。
4业务拓扑业务拓扑是一个实践任务,简单的说就是主动探索环境中对象间的拓扑关系。可以是网络环境中的不同网络节点间的关系,也可以是服务器中不同进程间的关系。建立业务拓扑,本质上是要依靠“关系”去剖析“系统”,是个逆向分析与解构的过程。
关系具有这些特征:方向性、强度、频度、成本、周期。
可以根据采集的关系数据,对网络节点进行数据分析,如聚类、分类,或者关联分析等。能够建立一个初始的关系网,然后再结合节点本身的信息,进一步的检索、匹配业务信息,丰富关系网的属性。
第一阶段,是发现服务器内部进程间的关系。 使用tcpdump,scapy,netstat,ps等系统工具采集所需的业务信息,以数据流信息为关系,通过graphviz工具对BTSO系统中进程进行拓扑。
图10进程间的业务关系图
业务拓扑的后续工作还没有展开,如果是预研性质的去探索可行性、做技术储备和选型,可以继续深入研究。但如果想结合业务场景进行开发、集成,可能还需要花更多的时间在业务需求的分析上。
5总结智能化是件复杂的事儿,有些事情要想明白,说清楚,这样讨论和交流业务问题时才会有思想基础和共鸣。
图11冯.诺伊曼结构
上图是冯.诺依曼结构,该结构指明了人工智能探索的方向。我们要进行运维智能化,我们的方向在哪里?我结合自己这半年的体会,开个脑洞,胡乱说说。
1.智能输入系统:我们要开发智能探针,snmp,wmi这些都太落伍了,智能指针能语音识别,能文字解析,能图像识别,要能联网,能爬各种互联网信息,要能监控移动终端,比如智能手机、手环、手表等等。
2.智能存储系统:想要单纯的基于pgsql/cassandra去做大数据分析,去做业务智能化,确实是有点浪漫,巧妇难为无米之炊啊!要智能化,怎么说也得分布式、集群之类的吧!首先把规模搞上去,横向扩展起来,然后再纵向分层,读写分离,搞个智能化的数据仓库之类的,这样就比较有感觉了。
3.智能运算系统:运算这一块是技术活,搞个算法团队,专门琢磨怎么去优化决策树,如何重构卷积网络模型。开源的、经典的算法,组件,统统想办法集成进来,就两个字,准!快!
4.智能控制系统:除了智能探针,再开发个智能帮手,专门负责实施。运算系统中出来的指令直接分发到智能帮手那里,有令必行,令行禁止。什么升级啊,更新啊,远程配置,控制,全部能干,包省心!
5.智能展示:既然都智能了,语音识别是必须的吧,领导站在大屏幕前,说到哪里就展示到哪里。画面就更不用说了,必须炫酷,有视觉冲击力。等等等等吧。
脑洞就开到这儿,书归正传,智能这件事儿,大了可以很大,小了也可以很小。空调连上网就变成智能家具了,电视连上网就变成智能电视了,本质上他们只是增加了一种输入方式而已。
数据挖掘与知识发现
确定知识发现的目标:确定知识发现的目的,要发现那些知识。
数据采集:从网络爬虫、数据库导出、CSV文件等数据源获取目标数据采集到指定的系统中。“数据质量决定数据挖掘的上限,而算法仅仅是逼近这个上限。”
数据探索:采集到的数据往往不可以直接使用,需用采用可视化技术,将数据的特征展现出来,探索数据特征的基本统计描述、数据特征间的相似性/相异性。
数据预处理:主要包括数据清理、数据集成、数据规约、数据变换和离散化等几个部分
(1)数据清理:主要包括缺失值与异常值的清理
(2)数据集成:将多种数据源集到一起,放在一个数据仓库的过程。在数据集成的过程中会出现实体识别(EntityResolution)、冗余属性识别、数据值冲突等问题。
(3)数据规约:在保证原始数据信息不丢失的前提下,减少分析使用的数据量。数据规约中最常使用的方式是维归约。维归约的含义是将原先高维的数据合理地压缩成低维数据,而减少数据量,常用的方法为特征的提取,如线性判别分析LDA和主成分分析PCA。
(4)数据的变换:将原始的特征数据进行归一化和标准化的操作。
(5)数据的离散化可通过聚类、直方图、分箱等方法完成。
数据挖掘(模型选择):对预处理后的数据进行挖掘的过程。传统的数据挖掘将算法大体分为有监督的学习与无监督的学习两种。
知识发现与数据挖掘
知识发现与数据挖掘的概念知识发现的全称是从数据库中发现知识(KDD)。数据挖掘(DM)是从数据库中挖掘知识。知识发现和数据挖掘的目的:从数据集中抽取和精化一般规律或模式。
知识发现的一般过程数据准备数据挖掘结果的解释评估
数据准备:数据选、数据预处理和数据变换。(1)数据选取就是根据用户的需要从原始数据库中抽取的一组数据。(2)数据预处理一般可能包括消除噪声、推导计算缺值数据、消除重复记录、完成数据类型转换等。(3)数据变换是从初始特征中找出真正有用的特征以减少数据开采时要考虑的特征或变量个数。
数据挖掘(1)确定挖掘的任务或目的是什么。如数据总结、分类、聚类、关联规则或序列模式等。(2)使用什么样的挖掘算法。同样的任务可以用不同的算法来实现。选择实现算法有两个考虑因素:(1)不同的数据的特点,因此需要用与之相关的算法来挖掘;(2)用户或实际系统的要求,有的用户可能希望获取描述型的、容易理解的知识,而有的用户系统的目的是获取预测准确度尽可能高的预测型知识。
结果解释和评价数据挖掘阶段发现的知识模式中可能存在冗余或无关的模式,所以还要经过用户或机器的评价。若发现所得模式不满足用户要求,则需要退回到发现阶段之前,如重新选取数据,采用新的数据变换方法,设定新的数据挖掘参数值,甚至换一种挖掘算法。对发现的模式进行可视化,或者把结果转换为用户易懂的另一种表示,如把分类决策树转换为“if-then…”规则。
知识发现的任务数据总结:对数据进行浓缩,给出它的紧凑描述。概念描述:从学习任务相关的数据中提取总体特征。分类:提出一个分类函数或分类模型(也常常称作分类器),该模型能把数据库中的数据项映射到给定类别中的一个。聚类:根据数据的不同特征,将其划分为不同的类。包括统计方法、机器学习方法、神经网络方法和面向数据库的聚类方法等。相关性分析:发现特征之间或数据之间的相互依赖关系。偏差分析:寻找观察结果与参照量之间的有意义的差别。建模:通过数据挖掘,构造出能描述一种活动、状态或现象的数学模型。
知识发现的主要方法:1.统计方法:从事物的外在数量上的表现去推断事物可能的规律性。常见的有回归分析、判别分析、聚类分析以及探索分析等。2.粗糙集:粗糙集是具有三值隶属函数的模糊集,即是、不是、也许。常与规则归纳、分类和聚类方法结合起来使用。3.可视化:把数据、信息和知识转化为图形等,使抽象的数据信息形象化。信息可视化也是知识发现的一个有用的手段。4.机器学习方法:包括符号学习和连接学习。
知识发现的对象:1.数据库:当前研究比较多的是关系数据库的知识发现。2.数据仓库:数据挖掘为数据仓库提供深层次数据分析的手段,数据仓库为数据挖掘提供经过良好预处理的数据源。3.Web信息:Web知识发现主要分内容发现和结构发现。内容发现是指从Web文档的内容中提取知识;结构发现是指从Web文档的结构信息中推导知识。4.图像和视频数据:图像和视频数据中也存在有用的信息。比如,地球资源卫星每天都要拍摄大量的图像或录像。欢迎大家加我微信交流讨论(请备注csdn上添加)
智能数据挖掘技术——第一课(基本概念)
目录一、应用二、起因三、数据挖掘1、什么是数据挖掘2、数据挖掘的过程3、数据挖掘任务的分类4、多学科的融合5、大数据的发展历程6、应用实例一、应用1、内容推荐(微信朋友圈广告,短视频)
2、自动驾驶(百度起步较早)
3、人脸识别(无人售卖)
4、资源调度(规划路线,热点图)
二、起因1、计算机、互联网发展
2、传统纸质数据转换为电子数据
3、数据量急速增长导致的一些问题
(1)数据过量,难以消化
(2)数据真假难以辨别
(3)数据安全难以保证
(4)数据形式不一致、难以统一处理
4、随之数据库技术的迅速发展,对于发现数据中存在的关系和规则以此来根据现有数据预测未来1发展趋势。
三、数据挖掘1、什么是数据挖掘从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。
数据分析方法与处理大量数据的复杂算法相结合
广义:数据挖掘是从大量数据中挖掘有趣模式和知识的过程。
相关名词:从数据库中知识发现(KDD)、知识提取、数据/模式分析、数据考古
2、数据挖掘的过程数据挖掘是一个反复迭代的人机交互处理过程。该过程经历多个步骤,很多决策由用户提供 。
数据预处理(耗时最久)、数据挖掘和结果的解释评估(三部分)
3、数据挖掘任务的分类描述性挖掘任务:刻画数据的一般特性(聚类、关联)
预测性挖掘任务:在当前的数据上进行推断,以进行预测(分类、回归或预测)
4、多学科的融合数据挖掘是多学科交叉的产物。
(1)数据量大(GP到PB要求算法可伸缩、数据无法放入内存)
(2)维度高(成百上千属性的数据,维度即特征数的增加,计算复杂度迅速提高)
(3)类复杂(相较于传统,数据挖掘需要应对不同领域的不同类型数据)
数据科学的数据驱动方法强调从数据中直接发现模式和关系,特别是从大量数据中,通常不需要广泛的领域知识,成功案例为——深度学习。
数据产生方式的变革促成大数据时代的来临。
5、大数据的发展历程关键技术:分布式存储,分布式处理
相关工具:RapidMiner、SASDataMining、Matlab等
6、应用实例(1)谷歌基于检索词条的数学模型分析来判断传染源位置(相关度达97%)
(2)Netflix根据用户喜好和操作分析制作《纸牌屋》电影
(3)Farecast预测当前机票价格
(4)UPS根据车辆上的传感器进行路线规划以及车辆信息回传
(5)军情六处(数据挖掘底层技术)依据大数据对于恐怖袭击进行排查和预警(热点图,筛选)
(6)推荐和协同过滤系统,该系统进行用户个性化推荐,这个问题或者其中一个组成部分可以被视为预测问题,因此可以应用数据挖掘技术。
数据挖掘和知识发现
数据挖掘和知识发现
数据挖掘是从大量的数据中通过算法搜索隐藏于其中的信息的过程。数据挖掘通常与计算机科学有关,并通过,在线分析处理,情报检索,机器学习,专家系统(像依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。知识发现(KDDKnowlegeDiscoveryinDatabase,KDD):知识发现是所谓“数据挖掘”的一种更广义说法,从从各种信息中,根据不同的需求获得知识的过程。知识发现的目的是向使用者屏蔽原始数据的繁琐细节,从原始数据中提炼出有效的新颖的,潜在的知识,直接向使用者报告。KDD表示将低层数据转换为高层知识的整个过程。区别:虽然数据挖掘是知识发现过程的核心,但它通常仅占KDD的一部分(大约是15%到25%)。因此数据挖掘仅仅是整个KDD过程的一个步骤,对于到底有多少步以及哪一步必须包括在KDD过程中没有确切的定义
技术:典型技术典型的基于算法的知识发现技术包括:或然性和最大可能性估计的贝叶斯理论、衰退分析、最近邻、决策树、K一方法聚类、关联规则挖掘、Web和搜索引擎、数据仓库和联机分析处理(On—lineAnalyticalProcessing,OLAP)、神经网络、遗传算法、模糊分类和聚类、粗糙分类和规则归纳等。这些技术都很成熟,并且在相关书籍文章上都有详细介绍。这里介绍一种基于可视化的方法。创新技术基于可视化方法是在图形学、科学可视化和信息可视化等领域发展起来的,包括:①几何投射技术。是指通过使用基本的组成分析、因素分析、多维度缩放比例来发现多维数据集的有趣投影。②基于图标技术。是指将每个多维数据项映射为图形、色彩或其他图标来改进对数据和模式的表达。③面向像素的技术。其中每个属性只由一个有色像素表示,或者属性取值范围映射为一个固定的彩色图。④层次技术。指细分多维空间,并用层次方式给出子空间。⑤基于图表技术。是指通过使用查询语言和抽取技术以图表形式有效给出数据集。⑥混合技术。是指将上述两种或多种技术合并到一起的技术。
聚类分析:举例说明怎么样聚类分析:聚类分析是把一组数据按照相似性和差异性分为几个类别,其目的是使得属于同一类别的数据间的相似性尽可能大,不同类别中的数据间的相似性尽可能小。它可以应用到客户群体的分类、客户背景分析、客户购买趋势预测、市场的细分等。