前言

阅读时间:20180318-20180322

来源:Kindle

数据挖掘基础

数据挖掘的概念:


从数据中“淘金”,从大量数据(文本)中挖掘出隐含的、未知的、对决策有潜在的关系、模型和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程,这就是数据挖掘。
它是利用各种分析工具在大量数据中寻找其规律和发现模型与数据之间关系的过程,是统计学、数据技术和人工职能技术的综合。

数据挖掘的基本任务:

包括利用分类与预测、聚类分析、关联规则、时序模式、偏差检测、职能推荐等方法,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。

数据挖掘建模过程

![屏幕快照 2018-03-18 上午9.58.40](http://ovblf5i76.bkt.clouddn.com/2018-03-18-
<http://ovblf5i76.bkt.clouddn.com/2018-03-18->屏幕快照 2018-03-18 上午9.58.40.png)

1 目标定义

* 任务理解
* 指标确认
针对具体的挖掘应用需求
明确本次挖掘目标是什么?
系统完成后能达到什么样的效果?

2 数据采集

* 建模抽样
抽样数据的标准,一是相关性、二是可靠性、三是有效性。

抽样的方式
随机抽样:比如按10%比例随机抽样
等距抽样:比如按5%比例,一共100组,取20、40、60、80、100
分层抽样:将样本分若干层次,每个层次设定不同的概率。
从起始顺序抽样:从输入数据集的起始处开始。
分类抽样:依据某种属性的取值来选择数据子集。如按客户名称分类、按地址区域分类等。分类抽样的选取方式就是前面所述的几种方式,只是抽样以类为单位。

*
质量把控

*
实时采集

3 数据整理

* 数据探索
对所抽样的样本数据进行探索、审核和必要的加工处理,是保证最终的挖掘模型的质量所必须的。
常用的数据探索方法主要包括两方面:数据质量分析,数据特征分析。

数据质量分析:得主要任务是检查原始数据中是否存在脏数据。包括缺失值分析、异常值分析、数据一致性分析。
数据特征分析:在质量分析后可通过绘制图标、计算某种特征量等手段进行特征分析,
主要包括
分布分析:能揭示数据的分布特征和分布类型。可用直方图、饼图、条形图等展示

对比分析:将两个相互联系的指标进行比较,从数据量上展示和说明研究对象规模的大小,水平的高低,速度的快慢,以及各种关系是否协调。比如,各部门的销售金额的比较、各年度的销售额对比。

统计量分析:用统计指标对定量数据进行统计描述,常从集中和离中趋势两个方面进行分析。平均水平的指标是对个体集中趋势的度量,最广泛是均值和中位数;反映变异程度的指标则是对个体离开平均水平的度量,使用较广泛的是标准差(方差)、四分卫间距。

周期性分析:分析某个变量是否跟着时间变化而呈现出某种周期变化趋势。
贡献度分析:原理是帕累托法则(又称20/80定律)

相关性分析:分析连续变量之间线性相关程度的强弱,并用适当的统计指标表示出来的过程称为相关分析。判断两个变量是否具有线性相关关系的最直观的方法是直接绘制散点图。多元线性回归。

*
数据清洗
数据清洗主要是删除原始数据集中的无关数据、重复数据、平滑噪音数据,刷选调与挖掘主题无关的数据,处理缺失值,异常值等。
缺失值处理:删除记录、数据插补和不处理。
异常值处理:直接删除、提油现有变量,进行填补。

*
数据变换
数据变换主要是对数据进行规范化处理,将数据转换成“适当”形势,以适用与挖掘任务与算法的需要。
常见的数据变换方法,简单函数变换、规范化、连续属性离散化,属性构造,小波变换。

*
数据规约
数据规约产生更小但保持元数据完整性的新数据集。提高效率。主要包括属性规约和数值规约。

*
数据集成
数据来源往往分布在不同的数据源中,数据集成就是将数据源合并存在一个一致性的数据存储。

4 构建模型

样本抽取完并经预处理,对本次建模进行确认,是分类、聚合、关联规则、时序模式或者职能推荐,以便后续选用哪种算法进行模型构建。这一步是核心环节。
针对餐饮行业的数据挖掘应用,挖掘建模主要基于关联规则算法的动态菜品职能推荐、基于聚类算法的餐饮客户价值分析、基于分类与预测算法的菜品销售预测、基于整体优化
的新店选址。

* 模型发现
* 构建模型
* 验证模型
5 模型评价

为了确保模型有效,需要对其进行测试评价,目的找出一个最好的模型。
为了有效判断一个越策模型的性能表现,需要一组没有参与预测模型建立的数据集,并在该数据集上评价预测模型的精准率。

* 设定评价标准
* 多模型对比
* 模型优化
6 模型发布

* 模型部署
* 模型重构
小结

本章从一个知名餐饮企业经营过程中存在的困惑出发,引出数据挖掘的概念、基本任务、建模过程。
针对建模过程,简要分析了定义挖掘目标、数据取样、数据塔索、数据预处理以及挖掘建模的各个算法概述和模型评价。

如何帮助企业从数据中洞察商机、提取价值,这是现阶段几乎所有企业都关心的问题。通过发生在身边的案例,由浅入深引出深奥的数据挖掘理论,让读者感悟数据挖掘的非凡魅力。点赞
个人看完这一章,对于数据挖掘的落地有了一个大概得了解,我们选择、使用、学习这些大数据的技术应该是结果导向的,这里会让人更清晰去选择技术,使用技术。

Hadoop基础


大数据技术,是指从各种类型的数据中,快速获得由价值信息的能力。适用大技术的技术,包括大规模并行处理(MPP)数据库,数据挖掘,分布式文件系统,分布式数据库,云计算平台,互联网和可扩展的存储系统。

大数据特点4V

* 数据量大(Volume)
* 数据类型复杂(Variety)
* 数据处理速度快(Velocity)
* 数据真实性高(Veracity)
当前,Hadoop已经成为了事实上的标准。
Hadoop除了社区版,还有其他厂商发行的版本。

* Cloudera:最成型的发行版本,拥有最多的部署案例;
* Hortonworks:100%开源的Apache Hadoop唯一提供商。
* MapR:
* Amazon Elastic Map Reduce(EMR):这是一个托管的解决方案。
生态系统


Hadooop生态系统主要包括:Hive、HBase、Pig、Sqoop、Flume、Zookeeper、Mahout、Spark、Storm、Shark、Phoenix、Tex、Ambari



Hive[haɪv]:数据仓库系统

用于Hadoop的一个数据仓库系统,它提供了类似SQL的查询语言,通过使用该语言,
可以方便地进行数据汇总,特定查询以及分析存放在Hadoop兼容文件系统中的大数据。


hive基于hdfs构建了数据仓库系统,它以hdfs作为存储,依赖于数据库(嵌入式的数据库derby或者独立的数据mysql或oracle)存储表schema信息,并完成基于sql自动解析创建mapreduce任务(由于mapreduce计算效率比较差,目前官方推荐的是底层计算模型采用tez或者spark)。
所以hive可以理解为:hdfs原始存储+DB Schema信息存储+SQL解析引擎+底层计算框架组成的数据仓库。

Hbase:分布式数据库

一种分布式、可伸缩的、大数据库存储库,支持随机、实施读/写访问。

Pig:工作流引擎


Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

sqoop[skup]:数据库ETL工具

为高效传输批量数据而设计的一种工具,其用于Apache Hadoop和结构化数据存储库如关系数据库 之间的数据传输。

Flume:日志收集

一种分布式、可靠的、可用的服务,其用于高效搜集、汇总、移动大量日志数据

ZooKeeper[ˈzu:ki:pə(r)]:协同服务管理

一种集中服务、其用于维护配置信息,命名,提供分布式同步,以及提供分组服务。

HDFS:分布式数据存储系统


hdfs是大数据系统的基础,它提供了基本的存储功能,由于底层数据的分布式存储,上层任务也可以利用数据的本地性进行分布式计算。hdfs思想上很简单,就是namenode负责数据存储位置的记录,datanode负责数据的存储。使用者client会先访问namenode询问数据存在哪,然后去datanode存储;写流程也基本类似,会先在namenode上询问写到哪,然后把数据存储到对应的datanode上。所以namenode作为整个系统的灵魂,一旦它挂掉了,整个系统也就无法使用了。在运维中,针对namenode的高可用变得十分关键。

Mahout[məˈhaʊt]:算法集

一种基于Hadoop的机器学习和数据挖掘的分布式计算框架算法集,实现了多重MapReduce模式的数据挖掘算法。

spark:计算模型


一种开源的数据分析集群计算框架,建立于HDFS纸上。于Hadoop一样,用于构建大规模、低延时的数据分析应用。它采用Scala语言实现,使用Scala作为应用框架。


spark是现在大数据中应用最多的计算模型,它与java8的stream编程有相同的风格。封装了很多的计算方法和模型,以延迟执行的方式,在真正需要执行的时候才进行运算。既可以有效的做计算过程的容错,也可以改善我们的编程模型。
Spark是一款很棒的执行引擎,我们可以看到大部分的Spark应用,是作为Hadoop分布式文件系统HDFS的上层应用。
( Spark 典型的取代了已经过时的MapReduce引擎,与Hadoop YARN (Yet Another Resource
Negotiator,另一种资源协调者)或者分布式计算框架Mesos一起工作,有时候同时与两者一起作为一个计划进行)
但是Cutting强调:“还有许多事情Spark是做不到的。”比如:它不是一个全文本搜索引擎;是Solr在Hadoop里扮演着这个角色
。它可以运行SQL查询对抗Spark,但是它没有被设计成一个交互式查询系统,对此,Cutting提出,Impala可以实现交互查询。

如果你只是要需要进行streaming 编程或者batch
编程,那么你需要一个执行引擎,Spark就是很棒的一个。但是人们想做的事情远不止于此,他们想实现交互式SQL(结构化查询语言),他们想实现搜索,他们想做各种涉及系统的实时处理,如Kafka(一种高吞吐量的分布式发布订阅消息系统)…我认为那些认为Spark就是整个堆的人是确实存在的少数情况。

Storm:

一个分布式、容错的实时计算系统。

Shark[ʃɑ:k]:SQL查询引擎

Hive on Spark,一个专门为Spark打造的大规模数据仓库系统,兼容Apache
Hive。无需修改现有的数据或者查询,就可以用100倍的速度执行Hive
SQL。Shark支持Hive查询语言、元存储、序列化格式及自定义函数,与现有Hive部署无缝集成,是一个更快、更强大的替代方案。

Phoenix:

一个构建在Apache HBase之上的一个SQL中间层,完全使用Java编写,提供了一个客户端可嵌入的JDBC驱动。

Tez:

一个机遇Hadoop
YARN之上的DAG计算框架。它把Map/Reduce过程拆分成若干个子过程。同时可以把多个Map/Reduce任务组合成一个较大的DAG任务,减少Map/Reduce之间的文件存储。同时合理组合其子过程,减少任务的运行时间。

Amari:安装部署工具

一个供应、管理和监视Apache Hadoop集群的开源框架,它提供一个直观的操作工具和一个健壮的Hadoop Api,

MapReduce:

说穿了就是函数式编程,把所有的操作都分成两类,map与reduce,map用来将数据分成多份,分开处理,reduce将处理后的结果进行归并,得到最终的结果。

ChuKwa:

YARN[jɑ:n]:Hadoop 资源管理器

Hadoop HDFS

HDFS被设计成适合在通用硬件上的分布式文件系统。具有如下特点

* 具有高度容错性的系统。设计用来部署在低廉的硬件上,提供高吞吐量,适合那些有超大数据集的应用程序,放宽了POSIX的要求这样可以实现以
流的形式(streaming access)访问文件系统中的数据。
* HDFS采用master/slave。一个集群由一个NameNode和多个DataNodes组成。


* Active Namenode:主 Master(只有一个),管理 HDFS 的名称空间,管理数据块映射信息;配置副本策略;处理客户端读写请求。
* Secondary NameNode:NameNode 的热备;定期合并 fsimage 和 fsedits,推送给 NameNode;当
Active NameNode 出现故障时,快速切换为新的 Active NameNode。
* Datanode:Slave(有多个);存储实际的数据块;执行数据块读 / 写。
* Client:与 NameNode 交互,获取文件位置信息;与 DataNode 交互,读取或者写入数据;管理 HDFS、访问 HDFS。
Hive

概念


Hive最初是Facebook面对海量数据和机器学习的需求而产生和发展的,是建立在Hadoop上数据仓库基础架构,它可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能。
Hive作为数据仓库,提供一系列工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
Hive定义了简单的类SQL查询语言,成为HQL,它允许熟悉SQL用户查询数据。

特点

* 支持索引,加快数据查询。
* 不同的存储类型,如纯文本文件、HBase中的文件。
* 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时候。
* 可以直接使用存储在Hadoop文件系统中的数据。
* 内置大量用户函数UDF来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF函数来完成内置函数无法实现的操作。
* 类SQL的查询方式,将SQL查询转换为MapReduce的Job在Hadoop集群上执行

Hive并不能够在大规模数据集上实现低延迟快速的查询,不能提供实时的查询和基于行级的数据更新操作。比如几百MB的数据集上执行查询一般有分钟级的时间延迟。所以它不适合低延迟的应用。最佳应用在大数据集的批处理作业,如网络日志分析。

Hive支持的数据模型

表:存在在HDFS目录底下,固定目录
外部表:跟表差不多,指定目录
分区:
桶:对指定的列计算其哈希值,根绝哈希值切分数据,目的是并行,每个桶对应一个文件。

Hbase

Hbase的应用场景、原理及架构分析
<http://blog.csdn.net/xiangxizhishi/article/details/75388971>
深入了解HBASE架构(转) <https://www.cnblogs.com/ajianbeyourself/p/7790044.html#_label0>
B-,B树,B+ <https://www.cnblogs.com/wjoyxt/p/5501706.html>

概念

Hbase是一个分布式、面向列
的开源数据库,利用HBASE技术可以在廉价PC服务器搭建大规模结构化存储集群。它不是关系型数据库,是一个适合非结构化的数据存储数据库。它利用Hadoop
MapReduce来处理HBase中的海量数据,同时利用Zookeeper作为其协同服务。

采购LSM算法,后面继续深入研究,这个算法,实在内存中对未排序的值进行,拆分排序,比如N个数,每M个拆分一次做排序,那么每次寻找的计算量应该是N/M*log2M

特点

* 线性和模块化可扩展性
* 严格一致的读取和写入
* 表的自动配置和分片
* 支持RegionServers之间的自动故障转移
* 方便的基类支持Hadoop的MapReduce作业与Apache HBase的表
* 易于使用的Java API的客户端访问
* 块缓存和布鲁姆过滤器实时查询
* Thrift网管和REST-FUL Web服务支持XML、protobuf和二进制的数据编码选项;
* 可扩展的基于JRuby(JIRB)的脚本;
* 支持监控信息通过Hadoop子系统导出到文件或Ganglia

Pig和Hive还未HBase提供了高层语言支持,这使得HBase上进行数据统计处理变得非常简单。Sqoop则为HBase提供了RDBMS数据导入功能,使用传统数据库向HBase迁移变得很方面。

原理


HBase构建在HDFS之上,其组件包括
Client、zookeeper、HDFS、Hmaster以及HRegionServer。Client包含访问HBase的接口,并维护cache来加快对HBase的访问。Zookeeper用来保证任何时候,集群中只有一个master,存贮所有Region的寻址入口以及实时监控Region
server的上线和下线信息。并实时通知给Master存储HBase的schema和table元数据。HMaster负责为Region
server分配region和Region server的负载均衡。如果发现失效的Region
server并重新分配其上的region。同时,管理用户对table的增删改查操作。Region Server
负责维护region,处理对这些region的IO请求并且切分在运行过程中变得过大的region。

Hbase底层使用还是Hadoop的HDFS。同时包含3个重要组件,
Zookeeper:为整个HBase集群提供协助的服务(信息传输);
HMaster:监控和操作集群中所有的RegionServer;
HregionServer:服务和管理分区(regions)。

**Region:**Hbase的Table中的所有行都按照row key的字典序排列。Table
在行的方向上分割为多个Region。、Region按大小分割的,每个表开始只有一个region,随 着数据增多,region不断增大,当增大到一个阀值的时候,
region就会等分会两个新的region,之后会有越来越多的 region。


Region是HBase中分布式存储和负载均衡的最小单元。 不同Region分布到不同RegionServer上。

Region虽然是分布式存储的最小单元,但并不是存储 的最小单元。Region由一个或者多个Store组成,每个store保存一个 columns
family。每个Strore又由一个memStore和0至多个StoreFile组成。memStore存储在内存中,StoreFile存储在HDFS上。


HBase和RDBMS的区别

HBASE设计的初衷是针对大数据进行随机地、实时地读写操作。区别

特点类型 HBase RDBMS
数据类型 简单的字符串类型,用户自己处理 有数值、字符串、时间类型等丰富选择
数据操作 简单的插入、查询、删除、清空等操作,表和表分离 有各种各样的函数、连接操作等。
存储模式 基于列存储,每个列由几个文件保存,不同列的文件是分离的 基于表结构和行模式保存
数据维护 更新操作不应该叫更新,实际是插入数据 真正替换
可伸缩性 方便、快速 需要增加中间层,复杂
具体应用 适应海量存储和互联网应用,灵活分布式架构可以组建大的数据仓库
具有ACID特性,丰富的SQL,具备面向磁盘存储、带有索引结构、多线程访问、基于锁的同步访问机制、基于log记录的恢复机制等
HBase数据模型


传统型数据库以行的形式存储数据,每行数据包含多列,每列只有单个值。在HBase中,数据实际存储在一个“映射”中,并且“映射”的键(key)是被排序的。类似JavaScript
Object(JSON)
HBase包含如下几个概念:
1 Row key
一条记录的唯一标示
2 column family
一列数据的集合的存储体,作为列簇
3 Column qualifier
在列簇中的每个列数据的限定符,用于指定数据的属性
4 Cell
实际存储的数据,包含数据和时间戳


小结


这里介绍大数据数据库HBASE的基础概念,分析了HBase的原理,主要包括其与RDBMS的对比、访问接口、数据模型等。最后结构HBase的架构图介绍各个模块组件,包括HMaster、HRegionServer、Zookeeper

大数据挖掘建模平台

本章首先介绍常用的大数据平台,采用开源的TipDM-HB大数据挖掘建模平台。
SOA架构,面向服务架构,以为着服务接口、流程整合、资源可利用、管控。

挖掘建模

经过数据探索与数据预处理,得到了可以建模的数据。
根据挖掘目标和数据形式可以建立分类与预测、聚类分析、关联规则、职能推荐等模型。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信