人工智能算法大全:基于MATLAB
上QQ阅读APP看书,第一时间看更新

2.1 原理介绍

Chi-Merge是监督的、自底向上的(即基于合并的)数据离散化方法。它依赖于卡方分析:具有最小卡方值的相邻区间合并在一起,直到满足确定的停止准则。

2.1.1 算法思想

Chi-Merge算法的基本思想可以概括为对于数据的离散化,相对类频率在一个区间内应当完全一致。如果两个相邻的区间具有非常类似的类分布,则这两个区间可以合并;否则,它们应当保持分开。而低卡方值表明它们具有相似的类分布。

所以在把数据离散化时,对每一个特征分别执行,刚开始对特征值排序,每个样本点是一个区间,随后通过计算每两个相邻区间的卡方值,来把卡方值小的两个区间合并,直到满足最后的条件。对于终止条件,可以选择卡方值的阈值,也可以选择区间的个数。若选择以阈值作为终止条件,对于大于阈值的两个区间不再合并,所以阈值越大,合并区间的次数越多,离散后的区间数量少,区间大。若选择区间个数作为终止条件,则满足区间个数时停止。本文中代码采用的是选择区间个数,即离散后离散值的个数作为终止条件。但是这个区间个数只是一个期望的个数,根据每个特征的计算结果不同,具体离散值的个数可能会有小的变动。

2.1.2 算法流程

Chi-Merge算法的总体流程是循环遍历每一个特征及其子区间,并判断区间对预测分类目标的效率,根据卡方指标来合并区间,从而达到连续特征离散化的目的,具体流程如下。

1)for m=1:M,其中M是数据的特征数,接下来是分别对每个特征执行离散化。

① 选定特征m和对应的样本标签, 把数据按特征值升序排列。

② 计算每一个特征值在不同标签下出现的次数, 把每个特征值视为一个区间。

③ 判断是否要将所有特征离散化时与离散区间的个数保持一致。 若是, 则把给定的区间数判定为目标区间数; 若不是, 则把当前特征下给定的区间数判定为目标区间数。

④ While区间数>目标区间数。

a. 按以下公式计算两个相邻区间的卡方值。

首先设k为类别数量,Aiji个区间第j类的实例数量,则第i个区间的实例数量。第j类的实例数量(相邻区间意味着只有两个区间)。 总实例数N为sum(R)或sum(C), N是两个区间所有实例的总数,Ni是第i个区间的实例个数。

Aij的期望为, 两个区间之间的卡方值是:

b. 合并卡方值最小的两个区间, 并把该区间对应的特征值设为小的那一个。

c. 区间个数-1。

End

⑤ 把每个区间的特征值作为分裂点。

end

2)得到所有特征的分裂点。

3)把原数据中根据在某一个属性下,由介于两个相邻的分裂点的样本,计算它们特征值的均值。把此均值当作此区间内所有样本在该属性下的离散值。当属性值大于最大的分裂点时,计算满足该条件样本的均值,再当作此时样本的离散值。