目录
第一章 数据挖掘基础
数据挖掘的基本任务包括利用分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等方法,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。
数据挖掘建模过程 | |||||
目标定义 | 数据采集 | 数据整理 | 构建模型 | 模型评价 | 模型发布 |
|
|
|
|
|
|
数据抽样 | 数据预处理 | 数据探索性分析 | 数据展示 | 空间数据分析 |
|
|
|
|
|
1. 数据抽样
概率抽样,又称随机抽样,是指依据随机原则,按照某种事先设定好的程序,从总体中抽取部分单元的抽样方法。
非概率抽样,又称非随机抽样,最主要的特征是抽取样本时不依据随机原则。
1.1 概率抽样
- 简单随机抽样
- 分层随机抽样:对总体样本的每层进行简单随机抽样
- 整群抽样:将总体划分为若干个群,以群为单位进行的简单抽样
- 系统抽样:首先抽取一个或一组起始单元的编号,然后按照某种和起始编号有关的规则确定其余入样的单元编号,直到抽满n个为止。常见的为等距系统抽样,即按照简单随机抽样方式抽取一个起始编号,固定间隔k抽取其余编号,抽满n个为止
- 多阶段抽样:指分多个阶段抽取到最终的样本。
- 不等概率抽样
- 二重抽样:指在抽样时分两步进行。由于对总体信息不了解,首先从总体N中抽取一个较大的样本n,对其进行调查以获得总体的某些辅助信息,然后进行第二重抽样,第二重抽样的样本量n’较小,一般从第一重样本中进行抽取,第二重抽样的结果才是主调查。
1.2 非概率抽样
- 便利抽样:又称方便抽样,指调查者在抽取样本时依据方便原则,以达到最大限度降低调查成本的目的。
- 滚雪球抽样:在对稀有总体进行调查时,往往采取滚雪球抽样。滚雪球抽样即在调查某一特定的总体时,先找到该总体的若干个体,再通过这些个体去识别其他符合要求的个体,然后再请新找到的个体去识别更多的个体,以此类推,直到获得足够的样本量。
- 判断抽样:指在抽取样本时,调查者根据调查目的,以及对调查对象情况的了解,人为地确定样本单元。
- 配额抽样:又称定额抽样,即将总体中的各单元按照一定的标准划分为若干类型,将样本数额分配到各个类型中。
2. 数据探索
数据探索和预处理的目的是保证样本数据的质量,从而保证模型质量打下基础。
常用的数据探索方法主要包括两方面:数据质量分析;数据特征分析
数据质量分析:缺失值、异常值、数据一致性分析
数据特征分析:分布分析、对比分析、统计量分析、周期性分析、贡献度分析、相关性分析。
3. 数据预处理
当采样数据维度过大时,如何进行降维处理、缺失值处理等都是数据预处理要解决的问题。
常用的数据预处理主要包括:数据清洗、数据集成、数据变换、数据规约等。
- 数据清洗:主要是删除原始数据中的无关数据、重复数据、平滑噪声数据、筛选掉与挖掘主题无关的数据,处理缺失值、异常值等。缺失值处理的方法可分为三类:删除记录、数据插补和不处理。
- 数据集成:即将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。
- 数据转换:主要是对数据进行规范化处理,将数据转换成“适当的”形式,以适应于挖掘任务及算法的需要。常用的数据变换方法有:简单函数变换、规范化、连续属性离散化、属性构造、小波变换。
- 数据规约:数据规约产生更小的蛋保持原数据完整性的新数据集。数据规约主要包括:属性规约和数值规约。属性规约通过合并创建新属性维度,或者直接通过删除不相关的属性(维)来减少数据维度,从而提高数据挖掘的效率、降低计算成本。属性规约的目标是找出最小的属性子集并确保新数据子集的概率分布尽可能接近原来数据集的概率分布。数值规约则是通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法两类。
hadoop生态系统
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,以HDFS(hadoop distributed file system)分布式文件系统和MapReduce(Google MapReduce的开源实现)为核心的为用户提供系统底层细节透明的分布式基础架构。
Hadoop生态系统主要包括:Hive、HBase、Spark、Storm、Pig、Sqoop、Flume、ZooKeeper、Mahout、Shark、Phoenix、Tez、Ambari,每个项目简介:
Hive:用于Hadoop的一个数据仓库系统,它提供了类似于SQL的查询语言,通过使用该语言,可以方便地进行数据汇总,特定查询以及分析存放在hadoop兼容文件系统中的大数据。
Hbase:一种分布的、可伸缩的、大数据存储库,支持随机、实时读/写访问。
Spark:一个开源的数据分析集群计算框架,最初由加州大学伯克利分校AMPLab开发,建立于HDFS之上。Spark与Hadoop一样,用于构建大规模、低延时的数据分析应用。Spark采用Scala语言实现,使用Scala作为应用框架。
Storm:一个分布式的、容错的实时计算系统,由BackType开发,后被Twitter收购。Storm属于流处理平台,多用于实时计算并更新数据库。Storm也可被用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可用于“分布式RPC”,以并行的方式运行大型的运算。
Pig:分析大数据集的一个平台,该平台由一种表达数据分析程序的高级语言和对这些程序进行评估的基础设施一起组成。
Sqoop:为高效传输批量数据而设计的一种工具,其用于Apache Hadoop和结构化数据存储库如关系数据库之间的数据传输。
Flume:一种分布式的、可靠的、可用的服务,其用于高效搜集、汇总、移动大量日志数据。
ZooKeeper:一种集中服务,其用于维护配置信息,命名,提供分布式同步,以及提供分组服务。
Mahout:一种基于Hadoop的机器学习和数据挖掘的分布式计算框架算法集,实现了多种MapReduce模式的数据挖掘算法。
Shark:即Hive on Spark,一个专为Spark打造的大规模数据仓库系统,兼容Apache Hive。无需修改现有的数据或者查询,就可以用100倍的速度执行Hive QL。Shark支持Hive查询语言、元存储、序列化格式以及自定义函数,与现有Hive部署无缝集成,是一个更快、更强大的替代方案。
Phoenix:一个构建在Apache HBase之上的一个SQL中间层,完全使用Java编写,提供了一个客户端可嵌入的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase 手残,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。
Tez:一个基于Hadoop YARN之上的DAG(有向无环图,directed acyclic graph)计算框架。它把Map/Reduce过程拆分成若干个子过程,同时可以把多个Map/Reduce任务组合成一个较大的DAG任务,减少了Map/Reduce之间的文件存储。同时合理组合其子过程,减少任务的运行时间。
Ambari:一个供应、管理和监视Apache Hadoop集群的开源框架,它提供一个直观的操作工具和一个健壮的Hadoop API,可以隐藏复杂的Hadoop操作,使集群操作大大简化。
参考书籍:《大数据探索性分析》《hadoop大数据分析与挖掘实战》