1.数据挖掘的基本任务
利用分类和预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等方法,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。
2.数据的挖掘和建模过程
- 定义挖掘目标
- 数据取样。
抽取数据的标准:
- 相关性
- 可靠性
- 有效性
衡量取样数据质量的标准:
- 资料完整无缺,各类指标项齐全。
- 数据准确无误,反映的都是正常状态下的水平
抽样的方式:
- 随机抽样
- 等距抽样
- 分类抽样:依据某种属性的取值来选择数据子集。
- 分层抽样
- 从起始顺序抽样
3.数据探索
数据探索可以从数据质量分析、数据特征两个角度出发。
数据质量分析:
检测原始数据中是否存在脏数据,脏数据一般指不符合要求、以及不能直接进行相应分析的数据。
脏数据分类:
- 缺失值:
- 异常值:
- 不一致值
- 重复数据以及含有特殊符号(#、¥、*)的数据
1.异常值的分析:是检测数据是否有录入错误以及含有不合理数据
异常值又称离群点。
分析方法:
- 简单统计量分析
- 正态分布原则
- 箱型图分析、
2.缺失值分析:数据缺失主要包括记录缺失和记录中的某个字段信息的缺失。
分析方法:简单统计分析
3.一致性分析
不一致原因:在数据集合的过程中,由于来自不同的数据源,对重复存放的数据未能进行一致性更新造成的。
数据特征分析
对数据进行质量分析之后,可以通过绘制图表,计算某些特征量等手段进行数据的特征分析。
1.分布分析:分布分析能揭示数据的分布特征和分布类型。
对于定量数据的分布分析可以绘制频率分布表、绘制频率分布直方图、茎叶图进行直观的分析
对于定性分类数据,可以用饼图和条形图显示其分布情况。
2.对比分析:指将来两个相互联系的指标进行比较从数量上展示和说明研究对象规模的大小、水平的高低、速度的快慢以及各种关系是否协调。
分类:绝对数对比和相对数对比
3.统计量分析:用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面分析。
集中趋势度量:均值、中位数、众数
离中趋势度量:极差、标准差、变异系数、四分位数间距
4.周期性分析:指探索某个变量是否随时间的变化而呈现出某种周期性变化趋势。
5.贡献度分析:又称帕累托分析(2/8定律),同样的投入在不同的地方会产生不同的效益。
6.相关性分析
分析连续变量之间的线性相关程度额强弱,并适当的统计指标表示出来的过程又称相关性分析。
分类:直接绘制散点图、绘制散点图矩阵、计算相关系数
数据的探索函数
1.Pandas的统计特征函数
方法 | 函数功能 | 所属库 |
sum() | 样本求和(按列计算) | Pandas |
mean() | 样本算数平均数 | Pandas |
var() | 样本方差 | Pandas |
std() | 样本标准差 | Pandas |
corr() | 样本的Spearman(Person)相关系数矩阵 | Pandas |
cov() | 协方差矩阵 | Pandas |
skew() | 样本值得偏度(三阶矩) | Pandas |
kurt() | 样本值的峰度(四阶矩) | Pandas |
describe() | 给出样本的基本描述(如均值、标准差) | Pandas |
2.拓展统计特征函数
方法 | 功能 | 库 |
cumsum() | 依次给出前1、2....n个数的和 | Pandas |
cumprod() | 依次给出前1、2....n个数的积 | Pandas |
cummax() | 依次给出前1、2....n个数的最大值 | Pandas |
cummin() | 依次给出前1、2....n个数的最小值 | Pandas |
3.统计作图函数
方法 | 功能 | 库 |
plot() | 绘制线性二维图、折线图 | Matplotlib/Pandas |
pie() | 绘制饼形图 | Matplotlib/Pandas |
hist() | 绘制二位条形直方图,可显示数据分配情况 | Matplotlib/Pandas |
boxplot | 绘制样本数据的箱型图 | Pandas |
plot(logy=True) | 绘制y轴的对数图形 | Pandas |
plot(yerr=error) | 绘制误差条形图 | Pandas |
4.数据的预处理
当采样的数据维度过大时,需要进行降维处理、缺失值处理等都是预处理的过程。
目的:提高数据质量,让数据更好的适应挖掘功能工具。
预处理主要包括:数据清洗、数据集成、数据交换、数据规约。
1.数据清洗:
主要删除原始数据集中无关数据、重复数据、平滑噪音数据、筛选掉与挖掘主题无关的数据、处理缺失值、异常值。
- 缺失值处理:删除记录、数据插补、不处理
常用的插补方法:均值/中位数/众数插补、用固定值、最近临插补 、回归方法、插值法(拉格朗日插值法、牛顿插值法)
- 异常值处理:删除有异常的记录、视为缺失值、平均数修正、不处理
2.数据集成
就是将多个数据源合并存放在一个一致的数据存储中的过程。
实体识别:是指从不同数据源识别现实世界的实体,统一不同数据源的矛盾。(同名异义、异名同义、单位不统一)
冗余属性识别:(同一属性多次出现,同一属性命名不一致导致重复)
3.数据变换
- 简单的函数变换
- 规范化:将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。
- 最大-最小规范化
- 零-均值规范化
- 小数定标规范化
- 连续属性离散化;将连续属性变换成分类属性。(离散化的子任务:分类数和如何将连续的属性值映射到分类值。)常用的离散化方法:
- 等宽法
- 等频法
- 基于聚类分析方法
- 属性构造:利用已知属性构造新属性,并加入到现有的属性集中。
- 小波变换:主要运用于信号处理、图像处理、语音处理、模式识别等领域。
4.数据规约
数据规约产生更小但保持原数据的完整性的新数据集。在规约后的数据集上进行分析和挖掘更有效率。
意义:
- 降低无效、错误数据对建模的影响,提高建模的准确性。
- 少量且具代表性的数据将大幅缩减数据挖掘所需的时间。
- 降低存储数据的成本。
属性规约:
通过属性合并来创建新属性维数,或者直接删除不相关的属性(维)来减少数据维数,从而提高数据挖掘的效率、降低计算成本。
目的:寻找出最小的属性子集并确保新数据子集的概率分布尽可能的接近原来的数据集的概率分布。
常用方法:
- 合并属性
- 逐步向前选择
- 逐步向后删除
- 决策树归纳
- 主要成分分析
数值规约:
指通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法。
- 有参数方法:使用一个模型来评估数据,只需存放参数,而不需要存放实际数据。例如回归(线性回归和多元回归)和对数线性模型(近似离散属性集的多维概率分布)
- 无参数方法:需要存放实际数据。(直方图、聚类、抽样、参数回归)
Python主要数据预处理函数
函数名 | 功能 | 库 |
interpolate | 一维、高维数据插入 | Scipy |
unique | 出去数据重复元素、得到单值元素列表 | pandas/numpy |
isnull | 判断是否为空 | Pandas |
notnull | 判断是否为非空 | Pandas |
PCA | 对指标变量矩阵进行主成分分析 | Scikit-learn |
random | 生成随机矩阵 | Numpy |
5.挖掘建模
是数据挖掘的核心环节。主要选择哪种算法构建模型。(分类与预测、聚类、关联规则、时序模式、偏差检测、智能推荐等)
1.分类与预测:
分类和预测是预测问题的两种主要类型。分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数模型,预测给定自变量对应的应变量的值。
分类模型过程:分类算法有两个过程,第一步是学习步,通过归纳分析训练样本集来建立分类模型得到的分类规则;
第二步是分类步,先用已知测试样本集评估分类规则的准确率,如果准确率可以接受,则使用该模型对未知类标号的待测样本集进行预测。
预测模型过程:第一步通过训练集建立预测属性(数值型)的函数模型。第二步是在模型通过检验后进行预测和控制。
常用的分类和预测的算法:
- 回归分析
- 决策树
- 人工神经网络
- 贝叶斯网络
- 支持向量机
2.聚类分析
是在没有给定划分类别的情况下,根据数据相似度进行样本的分组的一种方法。与分类模型需要使用有类标记的样本构成的训练数据不同,聚类模型可以建立在无类标记的数据上,是一种非监督的学习算法。聚类输入是一组未被标记的样本,聚类根据数据自身的距离或者相似度将其划分为若干组,划分的原则是组内距离最小化而组间(外部)距离最大化。
监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,例如分类。
非监督学习:直接对输入数据集进行建模,例如聚类。
半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数。
常用的聚类分析方法:K_Means、k-中心点、系统聚类。
3.关联规则
找出数据集中各项之间的关联关系。而这种关系在数据中并没有直接表示出来。
常用的关联算法:
Apriori、FP-Tree、Eclat算法、灰色关联法。
4.时序模式
给定一个已被观测了的时间序列,预测该序列的未来值。
常用的时序算法:
平滑法、趋势拟合法、组合模型、AR模型、MA模型、ARMA模型、ARIMA模型
5.离群点检测
发现与大部分其他对象显著不同的对象。
离群点的成因:数据来源不同的类、自然变异、数据测量、收集误差。
离群点检测的方法:基于统计、基于邻近度、基于密度、基于聚类。