文章目录
- 前言
- 第1章 数据挖掘基础
- 第2章 Python数据分析简介
- 第3章 数据探索
- 第4章 数据预处理
- 数据清洗
- 数据集成
- 数据变换(非常重要)
- 数据规约
- Python常用的数据预处理函数
- 第5章 挖掘建模
- 分类与预测
- 聚类分析
- 关联规则
- 时序模式
- 离群点检测
- 第6章 电力窃漏电用户自动识别
- 第7章 航空公司客户价值分析
- 第8章 中医证型关联规则挖掘
- 第9章 基于水色图像的水质评价
- 第10章 家用电器用户行为分析与事件识别
- 第11章 应用系统负载分析与磁盘容量预测
- 第12章 电子商务网站用户行为分析及服务推荐
- 第13章 财政收入影响因素分析及预测模型
- 第14章 基于基站定位数据的商圈分析
- 第15章 电商产品评论数据情感分析
前言
机械工业出版社,张良均、王路等著
数据挖掘是从大量数据中,挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程;它是利用各种分析工具,在大量数据中寻找其规律、发现模型与数据之间关系的过程,是统计学、数据库技术、人工智能技术的综合。
数据挖掘的任务类型可以分为:数据探索、数据预处理、分类与预测、聚类分析、时序预测、关联规则挖掘、智能推荐、偏差检测等。
第1章 数据挖掘基础
数据挖掘项目的一般流程:
- 定义挖掘目标:在理解业务的基础上,明确需要达成的目标,并且提出衡量的可量化指标;
- 数据探索:对样本数据进行探索和审核,从而对初始数据有初步的认识,包括异常值分析、缺失值分析、相关性分析、周期性分析;
- 数据预处理:对样本数据进行数据清洗,增强其可用性,包括:数据筛选、数据变量转换、缺失值处理、异常值处理、重复值处理、数据标准化、归一化、主成分分析、属性选择、数据规约等;
- 挖掘建模:结合挖掘目标,确定本次建模属于数据挖掘应用中的哪类问题(分类、预测、聚类、关联规则、时序模式、智能推荐等),应该选用哪种算法进行模型构建;
- 模型评价:从多个模型中自动找出最好的一个,根据业务指标对模型进行合理的解释和应用;
第2章 Python数据分析简介
使用Python进行数据挖掘,存在较大的缺陷,这是由于当前时代拥有井喷的海量数据,单机的Python无法处理如此大量的数据,且训练模型的速度非常之慢;在实际生产中,大量数据往往存储在HDFS上,开发者会基于Spark进行一站式的数据挖掘工作,其分布式计算的设计能大大提高计算的速度。但使用Python仍有其价值,例如在模型的快速搭建方面、demo设计方面。
常用的Python数据挖掘相关库
- Numpy: 提供数组功能,以及高效的数据处理函数;
- Scipy: 提供矩阵运算模块;
- Matplotlib: 数据可视化、制图库;
- Pandas: 最强大的数据分析和数据探索工具;
- StatsModels: 统计学和计量经济学相关库,包括描述统计、模型估计、推断;
- Scikit-Learn: 机器学习库;
- Keras: 深度学习库;
- Gensim: 文本处理库;
第3章 数据探索
根据收集到的原始数,接下来要考虑的问题是:数据质量是否满足模型构建的要求?是否出现了异常的数据状态?数据有没有明显的规律和趋势?各因素各字段之间有没有什么关联性?
通过对数据集进行数据质量分析、数据特征分析,对数据的结构和规律进行分析的过程,就是数据探索。数据探索是对数据进行初步研究,发现数据的内在规律,有助于选择合适的数据预处理、数据清洗技术,也是进行模型选择的前置必要工序。
数据质量分析
- 缺失值分析:删除缺失值的记录、对缺失值进行插补、不处理;
- 异常值分析:异常值也称为离群点,是指样本中的个别值,其数值明显偏离其余的观测值。
- 简单统计分析:对变量设置取值区间,在区间之外的被认为是异常值。例如年龄范围为1-100,则200为异常值;
- 标准差分析:若测定值与平均值的偏差,超过标准差的若干倍,则被视为异常值;对于正态分布的数据,其倍数取3;
- 箱型图分析:箱型图能客观的反应数据的本来面貌,其异常值定义为:数值小于(下四分位 - 1.5×四分位数间距),或数值大于(上四分位 + 1.5×上四分位数);
- 一致性分析:指数据互相矛盾,例如一张订单对应两个手机号;
数据特征分析
- 分布分析:获取特定字段取值的频率分布、周期性分布、贡献度分布等;
- 统计量分析:均值、中位数、众数、极差、标准差、变异系数、四分位数;
- 相关性分析:分析连续变量之间的线性相关程度的强弱,并用适当的统计指标表示出来的过程;Pearson相关系数、Spearman秩相关系数、判定系数;
Python常用函数
import pandas as pd
import matplotlib as plt
data = pd.read_excel("/home/text.xlsx")
data.sum()
data.mean()
data.var()
data.std()
data.corr(method='person')
data.cov()
data.skew()
data.kurt()
data.describe()
data.cumsum()
data.cumprod()
data.cummax()
data.cummin()
pd.rolling_sum()
pd.rolling_mean()
pd.rolling_var()
pd.rolling_std()
pd.rolling_corr()
pd.rolling_cov()
pd.rolling_skew()
pd.rolling_kurt()
plt.figure(figsize = (7, 5))
plt.plot()
plt.pie()
plt.hist()
plt.boxplot()
plt.plot(logy = True)
plt.plot(yerr = True)
plt.show()
第4章 数据预处理
对原始数据进行预处理,提高数据质量,从而提升模型的训练效果。在数据挖掘的过程中,数据预处理的工作量占到整个过程的60%
数据清洗
- 删除记录;
- 数据插补。插值法处理缺失值;
- 不处理;
数据集成
数据仓库的工作,这里略过。
数据变换(非常重要)
数据变换主要是对数据进行规范化处理,将数据转化为适当的形式,以适用于挖掘任务和算法的需要。
- 简单函数变化。即对原始数值取平方值、开方值、对数值等,从而对区间很大的数据变得缩小、可分析,或使得非平稳序列变为平稳序列。例如,客户的收入范围为一万元到一亿元,区间跨度太大,不便于分析,因此需要对其取对数,缩小其范围以便于分析;
- 规范化(归一化)。不同的指标往往具有不同的量纲,且数值间的差别可能特别大,如果不处理可能会影响到数值分析的结果。为了消除指标之间的量纲和取值范围的差异影响,需要进行标准化,将数据进行适当的缩放,使之落入到一个特定区域内部。多适用于对距离敏感的算法。
- 最小-最大规范化。也被称为离差标准化,是对原始数据的线性变换,将数据映射到[0, 1]的区间之内;其公式为
y = (x - min) / (max - min)
- 零-均值规范化。也被称为标准差标准化,经处理后的数据的均值为0,标准差为1,也是最常用的标准化方法;其公式为
y = (x - mean) / std
- 小数定标规范化。将属性值映射到[-1, 1]的区间之内,其公式为
y = x / (10 ^ k)
- 连续属性离散化。对于一些分类算法,例如ID3、Apriori算法,要求数据是分类属性;因此,常常需要将连续属性变为分类属性,即连续属性的离散化。
- 等宽法。将属性值划分为若干个区间,每个区间对应一个离散值;例如,分数区间为[1, 100],划分为10个区间,则[0, 10]取值为1,[11, 20]取值为2,以此类推;
- 等频法。将属性值的数量平均分配为若干部分,每个部分对应一个离散值;例如,分数有100个取值,则每10个分数取值为1,另10个分数取值为2,以此类推;
- 聚类法。将连续属性值按聚类算法进行划分为若干簇,再将同一个簇内部的属性值做统一标记;
- 属性构造。在数据挖掘的过程中,为了提取更有用的信息,需要根据已有的属性,构造出新的属性,并将新属性加入到属性集合中;通俗来说,就是根据现在的字段,人为的创造新的字段;
- 小波变换。
数据规约
在极大的数据集上,进行复杂的数据挖掘,需要花费很长的时间;而数据规约可以产生更小但保持原数据完整性的新数据集,在规约后的数据集上进行分析和挖掘将大大提升其效率。数据规约的意义有:
-
降低无效、错误数据维度对建模的影响;
-
通过少量、且具有代表性的数据训练模型,大幅减少训练时间;
-
降低数据存储的成本;
-
属性规约。属性规约通过属性合并来创建新维度,或者直接通过删除不相关的的属性来减少维度。属性规约的目的是,寻找出最小的属性子集,并确保新数据子集的概率分布尽可能的接近于原来数据集的概率分布。属性规约常用的方法如下:
- 合并属性。将一些旧属性合并成数量更少的新属性;
- 逐步向前选择。
- 逐步向后删除。
- 决策树归纳。利用决策树的归纳方法,对初始数据进行分类的归纳学习,获得一个初始决策树;没有出现在该树的节点的属性就是无限属性,直接删除即可;
- PCA主成分分析(重点)。用较少的属性去解释原始数据中的大部分属性,也即是将许多相关性很高的属性转化为不相关的属性;
-
数值规约。根据属性的取值范围,将取值类型变小,有点类似于连续属性的离散化;
Python常用的数据预处理函数
第5章 挖掘建模
经过上述的数据探索、数据预处理,得到了直接用于建模的数据。接下来根据业务目标,建立对应的数据挖掘模型。数据挖掘基于机器学习和统计学,和业务的结合异常紧密;在业务上,可以将数据挖掘的情景分为几类:分类与预测、聚类分析、关联规则、时序模型、离群点检测。
这本书的这一章中,算法讲的非常粗略。其章节的分类,是按照实际的业务情景来展开描述的;具体的要理解某种算法,需要结合西瓜书、《统计学习方法》、博客来进行。但是demo代码是可以参考的。
分类与预测
分类与预测是预测问题的两种主要类型,它们都属于监督学习,其中,预测又被称为回归。分类问题预测的是离散值,例如预测一名客户的性别;回归问题预测的是连续值,例如预测一名学生的成绩。
- 回归分析
- 决策树
- 人工神经网络
- 贝叶斯网络
- 支持向量机
- 分类与预测算法评价:绝对误差与相对误差、平均绝对误差、均方误差、均方根误差、平均绝对百分误差、Kappa统计、识别准确度、识别精确率、反馈率、ROC曲线、混淆矩阵
聚类分析
与分类不同,聚类是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。聚类模型可以建立在无标记的数据上,因此属于非监督学习。
关联规则
“啤酒与尿布”问题。
时序模式
- 时间序列算法
- 时间序列的预处理
- 平稳时间序列分析
- 非平稳时间序列分析
离群点检测
- 离群点检测方法
- 基于模型的离群点检测方法
- 基于聚类的离群点检测方法
第6章 电力窃漏电用户自动识别
第7章 航空公司客户价值分析
第8章 中医证型关联规则挖掘
第9章 基于水色图像的水质评价
第10章 家用电器用户行为分析与事件识别
第11章 应用系统负载分析与磁盘容量预测
第12章 电子商务网站用户行为分析及服务推荐
第13章 财政收入影响因素分析及预测模型
第14章 基于基站定位数据的商圈分析
第15章 电商产品评论数据情感分析