数据预处理
数据挖掘中主要用于数据预处理的方法有以下几种:
1. 聚集(Aggregation)
2. 抽样(Sampling)
3. 维归约(DimensionalityReduction)
4. 特征子集选择(Feature subset selection)
5. 特征创建(Feature creation)
6. 离散化(Discretization)和二元化(Binarization)
7. 属性变换
练习时测试用的测试数据集可以在【Repository>>Samples>>data】中获取示例数据集;
聚集(Aggregation)
聚集是指将两个或多个对象合并成单个对象;
聚集的目的
– 减少数据
· 减少属性或数据对象的个数
· 节省数据挖掘算法的运行时间和空间
– 尺度提升
· 城市聚集成区域、省、国家,等等
· 产生新的模式
– 更“稳定”的数据
· 聚集的数据会有较小的变异性
· 突出数据的趋势和轨迹
聚集方法在Rapidminer中的实现:
Rapidminer中聚集对应的算子是 【Aggregate】;
>>基本流程
>>参数面板
抽样(Sampling)
抽样是指选择数据对象子集,抽取的对象称作样本;
抽样的目的
降低数据处理的费用和时间;
随机抽样方式
· 无放回抽样:被选中的对象从待选对象集中删除;
· 有放回抽样:被选中的项不从待选对象集中删除,相同的对象可能被多次抽出;
随机抽样方法
· 简单随机抽样:选取任何对象的概率相等;
· 分层抽样:划分待选对象集为多个子集,分别从各个子集随机抽样(一般根据类标号划分子集),有以下2种方式:
– 每组大小不同,但从每组抽取的对象个数相同;
– 抽取的对象个数正比于组的大小;
抽样方法在Rapidminer中的实现
1)简单随机抽样(不放回) -> 【Sample】
>>基本流程
几个Sample可选的区别:
absolute:按照指定样本容量进行抽样;
relative:按照指定样本抽取的比例进行抽取;
probablity:按照指定抽取比例,抽取接近该比例的样本,可以通过更改随机种子来修改这个随机值;
2)简单随机抽样(放回)-> 【Sample(Bootstrapping)】
这种抽样方法主要用于扩充样本容量,设置的抽取数量可以大于原数据集容量
>>基本流程
>>参数面板
3)随机分层抽样 -> 【Sample(Stratified)】
维归约(DimensionalityReduction)
维归约是指降低数据的维度,即减少数据属性的个数
维归约的目的
· 避免维灾难 (curse of dimensionality);
· 降低数据挖掘算法的时间和内存需求;
· 使数据更容易可视化;
· 可以删除不相关的属性并降低噪声;
维归约的常用方法——主成份分析(PCA)
目标是找出新的属性(主成分)
– 原属性的线性组合
– 相互正交
– 捕获数据的最大变差
在Rapidminer中的实现
主成分分析PCA -> 【Principal Component Analysis】
>>参数面板
dimensionality reduction 降维参数的几个可选值(主要用于删除异常点):
none:保持原来的数据集规模;
keep_variance:删除原数据集中积累方差大于指定的阈值的记录;
fixed_number:输出的结果集保持在指定的数据容量;
特征子集选择(Feature subset selection)
特征子集选择是指选择一部分属性实施数据挖掘任务;
特征子集选择的目的
消除冗余特征和不相关特征
· 冗余特征
– 重复了包含在一个或多个其他属性中的许多信息
– 例子:产品的购买价格和所支付的销售税额
· 不相关特征
– 仅含有对于当前数据挖掘任务几乎无用的信息
– 例子:学生的ID号码对于预测学生的总平均成绩是不相关的
特征选择的常见方式和方法
1)嵌入方式 – 特征选择作为数据挖掘算法的一部分自然地出现(如构造决策树的算法)
2)过滤方式 – 在数据挖掘算法运行前进行特征选择
3)包装方式
• 穷举方法 – 尝试所有可能的特征子集,然后选取产生最好结果的子集
• 前向/后向选择方法
– 前:从空集开始逐步添加特征,选取产生最好结果的子集
– 后:从全集开始逐步删除特征,选取产生最好结果的子集
※一般使用包装方法时,不会使用穷尽方法,而是使用向前/向后选择方法;
在Rapidminner中的实现
1)手动设置特征选择参数 -> 【Select Attributes】
>>基本流程
>>参数面板
常用的attribute filter type:
subset:选择属性子集;
regular_expression:对所有属性使用正则表达式过滤(主要用于字符串特征处理);
numeric_value_filter:对所有numeric类型数据使用指定规则进行过滤(主要用于序数、区间、比率类型进行处理);
value_type:对所有子集进行数据类型过滤;
2)向前/向后选择方法 -> 【Optimize Select】
>>基本流程
3)穷举方法 ->【Optimize Select(Brute Force)】
方式基本同向前/向后选择方法;
特征创建(Feature creation)
特征创建是指由原来的属性创建新的属性集 特征创建的目的
– 更有效地捕获数据集中的重要信息 – 消除噪声的影响 – 新属性个数比原来的属性个数少,可以取得降维的所有好处
三种创建新属性的方法
– 特征提取:依赖于特定领域,比如人脸识别 – 映射数据到新空间:如傅立叶变换(Fourier transform) – 特征构造:如密度=质量/体积
在Rapidminer中的实现
创建新的特征属性:【Generate Attribute】 傅里叶变换:【Fourier transition】
离散化(Discretization)和二元化(Binarization)
离散化是指将连续属性转变成离散属性 离散化目的
– 使数据能运用于不能处理连续属性的数据挖掘算法(主要目的) – 降低离群点/异常点的影响
二元化 – 离散化的一种特例 – 将连续属性转变成二元属性 离散化方法
①监督(supervised)方法 ——使用类标
– 基于熵(entropy)的方法:找产生最小总熵的分界点
– 熵(物理):事物内部元素分布的均匀程度;元素分布越均匀,熵越高
– 熵(信息):数值区间内类分布的均匀程度;类分布越均匀,熵越高
– 总熵是分区熵的加权平均
②非监督(unsupervised)方法——不使用类标 等宽离散化 等频离散化 :在K均值离散化不起作用时使用; K均值离散化 :一般使用;
在Rapidminer中的实现
离散化监督方法:【Discretive by Entropy】
等宽离散化:【DIscretive by Binning】
等频离散化:【Discretive by Frequency】
属性/变量变换 • 变量变换是指变换变量的所有取值
– 简单函数: xk, log(x), ex, |x| – 标准化或规范化
• 例子:将一个变量标准化成一个具有均值0和标准差1的新变 x’=(x-mean(x))/std(x)
变量变换的目的
– 将数据转换成特定分布(如正态分布)的数据 – 压缩数据 – 相似度/相异度计算时统一属性的尺度
在Rapidminer中的实现
属性变换:【Normailze】 常用method参数列表: z-transformation 标准化转换 range transformation 值域转化(常用于压缩属性);