数据规约
在大数据集上进行复杂的数据分析和挖掘需要很长的时间,数据规约产生更小但保持原 数
据完整性的新数据集。在规约后的数据集上进行分析和挖掘将更有效率。
- 数据规约的意义在于:
□ 降低无效、错误数据对建模的影响,提高建模的准确性;
□ 少量且具代表性的数据将大幅缩减数据挖掘所需的时间;
□ 降低储存数据的成本。
属性规约
属性规约通过属性合并来创建新属性维数,或者直接通过删除不相关的属性(维)来减少数据维数,从而提高数据挖掘的效率、降低计算成本。属性规约的目标是寻找出最小的属性子集并确保新数据子集的概率分布尽可能地接近原来数据集的概率分布。
- 属性规约常用方法
属性规约方法 | 方法描述 |
---|---|
合并属性 | 将一些旧属性合为新属性 |
逐步向前选择 | 从一个空属性集开始,每次从原来属性集合中选择一个当前最优的属性添加到当前属性子集中。直到无法选择出最优属性或满足一定阈值约束为止 |
逐步向后删除 | 从一个全属性集开始,每次从当前属性子集中选择一个当前最差的属性并将其从当前属性子集中消去。直到无法选择出最差属性为止或满足一定阈值约束为止 |
决策树归纳 | 利用决策树的归纳方法对初始数据进行分类归纳学习,获得一个初始决策树,所有没有出现在这个决策树上的属性均可认为是无关属性,因此将这些属性从初始集合中删除,就可以获得一个较优的属性子集 |
主成分分析 | 用较少的变量去解释原始数据中的大部分变量,即将许多相关性很高的变量转化成彼此相互独立或不相关的变量 |
逐步向前选择、逐步向后删除和决策树归纳是属于直接删除不相关属性(维)方法。主成分分析是一种用于连续属性的数据降维方法,它构造了原始数据的一个正交变换,新空间的基底去除了原始空间基底下数据的相关性,只需使用少数新变量就能够解释原始数据中的大部分变异。在应用中,通常是选出比原始变量个数少,能解释大部分数据中的变量的几个新变量,即所谓主成分,来代替原始变量进行建模。
方法解析
- 合并属性
- 逐步向前选择
- 逐步向后删除
- 决策树归纳
- 主成分分析的计算步骤如下:
1)设原始变量的 n 次观测数据矩阵为:
2)将数据矩阵按列进行中心标准化。为了方便,将标准化后的数据矩阵仍然记为X。
3)求相关系数矩阵 的定义为:
其中,
4)求&的特征方程的特征根。
5)确定主成分个数根据实际问题确定,一般取80%。
6)计算m个相应单位特征向量:
7)计算主成分:
在 Python 中,主成分分析的函数位于 Scikit-Leam 下:
sklearn.decomposition.PCA(n_components = None, copy = True, whiten = False)
参数说明:
- (1) n components
意义:PCA 算法中所要保留的主成分个数n,也即保留下来的特征个数眼
类型:int 或者 string,缺省时默认为 None,所有成分被保留。赋值为int,比如 n compo-nents=l,将把原始数据降到一个维度。赋值为string,比如n components-mle',将自动选取特征个数n,使得满足所要求的方差百分比。 - (2) copy
类型:bool, True 或者 False,缺省时默认为 True.
意义:表示是否在运行算法时,将原始训练数据复制一份。若为 True,则运行 PCA 算法后,原始训练数据的值不会有任何改变,因为是在原始数据的副本上进行运算;若为 False,则运行 PCA算法后,原始训练数据的值会改,因为是在原始数据上进行降维计算。 - (3) whiten
类型:bool,缺省时默认为False。
意义:白化,使得每个特征具有相同的方差。
#主成分分析 降维
import pandas as pd
#参数初始化
inputfile = '../data/principal_component.xls'
outputfile = '../tmp/dimention_reducted.xls' #降维后的数据
data = pd.read_excel(inputfile, header = None) #读入数据
from sklearn.decomposition import PCA
pca = PCA()
pca.fit(data)
print("模型的各个特征向量:")
print(pca.components_) #返回模型的各个特征向量
print("各个成分各自的方差百分比:")
print(pca.explained_variance_ratio_ )#返回各个成分各自的方差百分比
从上面的结果可以得到特征方程 有7个特征根、对应的7个单位特征向量以及各个成分各自的方差百分比(也称为贡献率)。其中,方差百分比越大,说明向量的权重越大。
当选取前4个主成分时,累计贡献率已达到97.37%,说明选取前3个主成分进行计算已经相当不错了,因此可以重新建立PCA模型,设置n_components = 3,计算出成分结果。
pea = PCA(3)
pea.fit(data)
low_d = pea. transform (data) #用它来降低维度
# pd.DataFrame (low_d) . to_excel (outputfile) #保存结果
# pea.inverse_transform (low_d) #必要时可inverse_transform()函数来复原数据
low_d
原始数据从8维被降维到了3维,关系式由公式确定,同时这3维数据占了原始数据95%以上的信息。
数值规约
数值规约指通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法两类。
有参数方法是使用一个模型来评估数据,只需存放参数,而不需要存放实际数据,例如回归(线
性回归和多元回归)和对数线性模型(近似离散属性集中的多维概率分布)。无参数方法就需要
存放实际数据,例如直方图、聚类、抽样(采样)。
- (1)直方图
直方图使用分箱来近似数据分布,是一种流行的数据规约形式。属性 A 的直方图将 A 的数
据分布划分为不相交的子集或桶。如果每个桶只代表单个属性值/频率对,则该桶称为 单桶。通
常,桶表示给定属性的一个连续区间。 - (2)聚类
聚类技术将数据元组(即记录,数据表中的一行)视为对象。它将对象划分为簇,使一 个
簇中的对象相互“相似”,而与其他簇中的对象“相异”。在数据规约中,用数据的簇替换 实
际数据。该技术的有效性依赖于簇的定义是否符合数据的分布性质。 - (3)抽样
抽样也是一种数据规约技术,它用比原始数据小得多的随机样本(子集)表示原始数据 集。
假定原始数据集。包含 N 个元组,可以釆用抽样方法对。进行抽样。下面介绍常用的 抽样方法。- s 个样本无放回简单随机抽样:从。的 N 个元组中抽取 s 个样本(s < AT),其中。中任 意元组被抽取的概率均为 1/N,即所有元组的抽取是等可能的。
- s 个样本有放回简单随机抽样:该方法类似于无放回简单随机抽样,不同在于每次一个元组从。中抽取后,记录它,然后放回原处。
- 聚类抽样:如果 D 中的元组分组放入 M 个互不相交的“簇”,则可以得到 s 个簇的简 单随机抽样,其中 s<M。例如,数据库中元组通常一次检索一页,这样每页就可以视为一 个簇。
- 分层抽样:如果 D 划分成互不相交的部分,称作层,则通过对每一层的简单随机抽样就 可以得到 D 的分层样本。例如,可以得到关于顾客数据的一个分层样本,按照顾客的每个年 龄组创建分层。
用于数据规约时,抽样最常用来估计聚集査询的结果。在指定的误差范围内,可以确定 (使用中心极限定理)估计一个给定的函数所需的样本大小。通常样本的大小 s 相对于 N 非常 小。而通过简单地增加样本大小,这样的集合可以进一步求精。
- (4)参数回归
简单线性模型和对数线性模型可以用来近似描述给定的数据。(简单)线性模型对数据建模,
使之拟合一条直线。