数据预处理——离散化

@ 2018-02-07

1. 什么是数据离散化

有些数据挖掘算法,特别是某些分类算法(如朴素贝叶斯),要求数据是分类属性形式(类别型属性)这样常常需要将连续属性变换成分类属性(离散化,Discretization)。另外,如果一个分类属性(或特征)具有大量不同值,或者某些之出现不频繁,则对于某些数据挖掘任务,通过合并某些值减少类别的数目可能是有益的。

与特征选择一样,最佳的离散化方法是对于用来分析数据的数据挖掘算法,产生最好结果的方法,而直接使用这种判别标准通常是不实际的,因此,离散化一般需要满足这样一种判别标准,它与所考虑的数据挖掘任务的性能好坏直接相关。

通常离散化应用于分类或关联分析中所使用的属性上。一般来说,离散化的效果取决于所使用的算法,以及用到的其他属性。然而,属性离散化通常单独考虑。

连续属性变换为类别属性设计两个子任务:1. 决定需要多少个类别值;2. 确定如何将连续属性映射到这些分类值。在第一步中,将连续属性值排序后,通过指定n-1个分割点(split point)把它们分成n个区间;在第二步中,将一个区间中的所有值映射到相同的类别上。因此,离散化问题就是决定选择多少个分割点和确定分割点位置的问题,结果可以用区间集合 {(x0,x1],(x1,x2],...,(xn1,xn]} { ( x 0 , x 1 ] , ( x 1 , x 2 ] , . . . , ( x n − 1 , x n ] } 表示,其中 x0 x 0 x1 x 1 可以分别为 − ∞ + + ∞ ,或者用一系列不等式 x0<xx1,...,xn1<x<xn x 0 < x ≤ x 1 , . . . , x n − 1 < x < x n 表示。

2. 非监督离散化

用于分类的离散化方法之间的根本区别在于使用类信息(监督,supervised)还是不使用类信息(无监督,unsupervised)。如果不使用类信息,则常使用一些相对简单的方法。例如,等宽(equal width)方法将属性的值域划分为具有相同宽度的区间,而区间的个数由用户指定,这种方法可能由于受离群点的影响而性能不佳,因此等频率(equal frequency)或等深(equal depth)方法通常更为可取,等频率方法试图将相同数量的对象放进每个区间。作为非监督离散化的另一个例子,可以使用诸如K均值等聚类方法。最后,目测检查数据有事也可能是一种有效的方法。下面是示例:

x=[1,1,5,5,5,5,8,8,10,10,10,10,14,14,14,14,15,15,15,15,15,15,18,18,18,18,18,18,18,18,18,20,2,20,20,20,20,20,20,21,21,21,25,25,25,25,25,28,28,30,30,30]  
x=pd.Series(x)  
s=pd.cut(x,bins=[0,10,20,30]) # 此处是等宽的离散化方法,bin表示区间的间距

3. 监督离散化

非监督离散化方法通常比不离散化好,但是使用附加的信息(类标号)常常能够产生更好的结果,因为未使用类标号知识所构成的区间常常包含混合的类标号。一种概念上的简单方法是以极大化区间纯度的方式确定分割点,然而实践中这种方法可能需要人为确定区间的纯度和最小的区间大小。为了解决这一问题,一些基于统计学的方法用每个属性值来分隔区间,并通过合并类似于根据统计检验得出的相邻区间来创造较大的区间。基于熵的方法是最优前途的离散化方法之一,下面给出一个简单的基于熵的方法。
首先,需要定义熵(entropy)。设k是不同的类标号数, mi m i 是某划分的第 i i 个区间中值的个数,而mij是区间 i i 中类j的值的个数。第 i i 个区间的熵ei由如下等式给出:

ei=j=1kpijlog2pij e i = − ∑ j = 1 k p i j l o g 2 p i j

其中, pij=mij/mi p i j = m i j / m i 是第 i i 个区间中类j的概率(值的比例)。该划分的总熵 e e 是每个区间的熵的加权平均,即
e=i=1nwiei

其中, m m 是值的个数,wi=mi/m是第 i i 个区间的值的比例,而n是区间个数。直观上,区间的熵是区间纯度的度量。如果一个区间只包含一个类的值(表示该区间非常纯),则熵为0并且不影响总熵。如果一个区间中的值类出现的频率相等(该区间尽可能不纯),则其熵最大。

一种划分连续属性的简单方法:开始将初始值切分成两部分,让两个结果区间产生最小熵,该技术只需要把每个值看做可能的分割点即可,因为嘉定区间包含有序值的集合;然后,取一个区间,通常选取具有最大熵的区间,重复此分割过程,直到区间的个数达到用户指定的个数,或者满足终止条件。

在二维中,点是很好分开的,但在一维中,情况并非如此,一般而言,分别离散化每个属性通常只保证次最优的结果。

【后续补上基于熵的离散化代码】


Reference
1.《数据挖掘导论第2章》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值