1. 离散化技术分类
连续属性的离散化方法也可以被称为分箱法,即将一组连续的值根据一定的规则分别放到其术语的集合中。
离散化技术可以根据如何对数据进行离散化加以分类,可以根据是否使用类信息或根据进行方向(即自顶向下或自底向上)分类。
如果离散化过程使用类信息,则称它为监督离散化(superviseddiscretization);否则是非监督的(unsupervised)。
如果首先找出一点或几个点(称作分裂点或割点)来划分整个属性区间,然后在结果区间上递归地重复这一过程,则称它为自顶向下离散化或分裂。自底向上离散化或合并正好相反,首先将所有的连续值看作可能的分裂点,通过合并相邻域的值形成区间,然后递归地应用这一过程于结果区间。
2.无监督离散化与监督离散化
根据数据是否包含类别信息可以把它们分成有监督的数据和无监督的数据。有监督的离散化要考虑类别信息而无监督的离散化则不需要。
2.1 无监督离散化
假设属性的取值空间为
X={X1,X2,⋯,Xn}
,离散化之后的类标号是
Y={Y1,Y2,⋯,Ym}
,则无监督离散化的情况就是
X
已知而
(1) 等宽算法
根据用户指定的区间数目
K
,将属性的值域
(2) 等频算法
等频算法也是根据用户自定义的区间数目,将属性的值域划分成
K
个小区间。他要求落在每个区间的对象数目相等。譬如,属性的取值区间内共有
(3) K-means聚类算法
首先由用户指定离散化产生的区间数目
K
,K-均值算法首先从数据集中随机找出
2.2 监督离散化
监督离散化就是事先
X
和
以下介绍的自下而上或者自上而下的分类方法都属于监督离散化方法。
3. 齐次性的卡方检验
在介绍两种基于卡方检验的离散化算法之前,先来介绍一下齐次性的卡方检验。
数据:有
r
个总体。
从每个总体中抽取一个随机变量,记第
每个样本的每个观测值可以归为
c
个不同类别中的一类。记
ni=Oi1+Oi2+⋯+Oic
对于所有的样本
i
,将数据排列成以下的
类1 | 类2 | ⋯ | 类c | 总和 | |
---|---|---|---|---|---|
总体1 | O11 | O12 | ⋯ | O1c |
n1
|
总体2 | O21 | O22 | ⋯ | O21 | n2 |
⋯ | ⋯ | ⋯ | ⋯ | ⋯ | ⋯ |
总体r | Or1 | Or2 | ⋯ | Orc | nr |
总和 | C1 | C2 | ⋯ | Cc |
N
|
假设:
记
H0
:同一列中所有的概率相等(即对任意的j,
p1j=p2j=⋯=prj
)。
H1
:每列中至少存在两个概率不相等(即给定
j
,存在
检验统计量
χ2
为:
χ2=∑i,j(Oij−tij)2tij
,其中,
tij=niCjN
或者:
χ2=N∗(∑i,jO2ijniCj−1)
零分布:
χ2
的零分布是渐进自由度为
(r−1)(c−1)
的卡方分布。在近似水平
α
下的临界域对应于
χ2
值大于
X1−α
,
X1−α
是自由度为
(r−1)(c−1)
的卡方分布的
1−α
分位数,当
χ2
值大于
X1−α
时拒绝原假设
H0
,否则,接受
H0
。
p
值是自由度为
例:
吸烟 | 不吸烟 | 总计 | |
男 | 20 | 5 | 25 |
女 | 10 | 15 | 25 |
总计 | 30 | 20 | 50 |
首先假设
H0
:性别和吸烟相关。
根据公式求得
χ2=8.33
,自由度为1,查表可得
p
值小于
4. 自上而下的卡方分裂算法
该分裂算法是把整个属性的取值区间当做一个离散的属性值,然后对该区间进行划分,一般是一分为二,即把一个区间分为两个相邻的区间,每个区间对应一个离散的属性值,该划分可以一直进行下去,直到满足某种停止条件,其关键是划分点的选取。
分裂步骤:
依次计算每个插入点的卡方值,当卡方值达到最大时,将该点作为分裂点,属性值域被分为两块。
然后再计算卡方值,找到最大值将属性值域分成三块。
停止准则:
当卡方检验显著,即
p
值
当卡方检验不显著,即
p
值
5. ChiMerge算法
ChiMerge算法是一种基于卡方值的自下而上的离散化方法。和上一种算法正好相反。
分裂步骤:
第一步:根据要离散的属性对实例进行排序:每个实例属于一个区间
第二步:合并区间,计算每一对相邻区间的卡方值
停止准则:
当卡方检验不显著,即
p
值
当卡方检验显著,即
p
值
6. 基于熵的离散化方法
本方法也是一种自上而下的离散化方法。首先,定义一下熵的概念:
ei=−∑kj=1pijlog2pij
其中,
pij=mijmi
是第
i
个区间中类
其中
wi=mim
是第
i
个区间的值的比例,
划分过程:
首先将属性的取值值域按照值得大小排序。 把每个值看作是可能的分割点,依次把区间分成两部分计算它们的熵值,取熵值最小的作为第一次划分点。
然后选取一个区间,通常选择熵值最大的区间重复此过程。
当区间个数达到用户指定的个数或某个用户指定的终止条件则停止继续分裂。
参考资料
《连续属性的离散化》
《数据挖掘导论》