为提高数据挖掘中海量数据的处理效率,通常要对连续数值型变量进行离散化处理,减少变量取值个数以实现样本量的缩减;有的数据挖掘方法不支持对数值型变量的分析,也需要进行离散化处理。离散化处理统计主要采用变量值分组方法,数据挖掘中称其为分箱,应通过Field Ops卡中的Binning节点实现分箱。
常用的分箱方法
一、组距分组
组距分组是统计中实现分箱的最基本方法,包括不等距分组和等距分组。例如之前提到的学生成绩的多级评定就是-个典型的不等距分组。给定组距或者组数,所产生的分组是等距分组。好的等距分组应基于对变量取值的全面了解和数据分析的实际需要。
需要注意的是,如果分组的变量将作为输入变量用于对输出变量的分类预测,那
么不恰当的组距分组可能会导致某些组中的样本量很多,而另些组中的样本量.
很少的情况。这对后续分类模型的建立是极为不利的,因为模型对少量样本组.
的学习会存在“先天不足”。
二、分位数分组
分位数分组的基本思想是将样本等份成若干份,各组所包含的样本个数相同,且组
限是相应分位点上的分位值。例如,可将样本等分为4份,于是分位点依次是25%、50%
和75%,在这些点上的变量值将分别作为4个组的组限。
需要注意的是,分位数分组形成组,各组的样本量理论上是相同的,但有时也会出现例外。例如,假设有10%的样本,其变量值都等于某个值。此时,应将它们划在同一个组,以确保取值相同的样本处在同一组中。由此导致的必然结果是该组样本量偏大,虽然不尽理想,但仍是较为合理的策略。
另外,Clementine 还对分位数分组方法进行了拓展,以解决某些现实问题。拓展思路是在指定组数的前提下,依据各组变量值总和近似的原则进行分组。这样,变量值较小的组,样本量较多,变量值较大的组,样本量相对较少。例如,有2, 3, s, 6, 7,12六个数,若分成3组,则三组分别是(2, 3,5)、(6, 7). (12)。
这样的分组方法可解决某些现实问题。例如,西餐快餐店中多个窗口同时营业,各窗口排队的顾客人数大致相同,但各个窗口所对应的生产线上的服务生,其制作效率会有高有低。为保证各窗口服务速度基本持平,避免顾客抱怨,最简单的方法是将效率低的多个服务生安排在同一-生产线上,而安排少数几个效率高的服务生在另外的生产线上。当然,出于生产线资源的限制,更现实的方式是高效率搭配低效率。但如果现实问题涉及极为庞大的数据量,这种高低或大小搭配的解就会很多。
三、单变量值分组
单变量值分组也称为秩分组,它将所有变量值按降序或升序排序,秩相同的变量归在同一组内。例如,有2,3, 5, 6, 6, 7,12 七个数,秩分组的结果依次是1, 2, 3,4.5,6, 7,秩相同的取顺序的平均数。
四、均值-标准差分组
均值-标准差分组以变量均值加减1个(或2个或3个)标准差的值为组限,将变量值分为3组(或5组或7组)。
五、基于最短描述长度原则(Minimal Description Length Principle, MDLP) 的熵分组
基于MDLP的熵分组是Fayyad和Irani于1993年提出的,它是一种有指导的数据分箱方法。其基本思想是,如果分组后的输入变量对输出变量取值的解释能力显著低于分组之前,那么这样的分组是没有意义的。所以,待分组变量(视为输入变量)应在输出变量的“指导”下进行分组。
MDLP所体现的是科学界公认的原则,即在条件相同的情况下,简单的理论比复杂的理论更可靠,最好的科学理论应该是最简单的。在数据挖掘中,大多数的算法都存在误差,事实上不存在一一个完美的算法能够解释所研究的全部数据。但人们能够找到一种算法,它可以解释除例外以外的其他绝大部分数据。于是,要做就是阐述清楚算法和算法的例外即可。尽管这个算法并不完美,但与更复杂的算法相比,它简洁的优势足以弥补其无法解释例外数据的缺陷。因为,从信息论角度看,只需要较短的信息就可描述简单理论,简单理论所反映的数据规律只需较短信息就可被描述。
MDLP最初是数据压缩的评价标准,在数据挖掘中主要应用于评价数据编码方案的优劣。从信息传递角度看,短小的数据编码比冗长的编码传输效率更高。MDLP认为,数据编码应由描述数据规律的模型编码,以及对无法用模型解释的例外数据的编码两部分组成。如果前者编码越少,说明模型越精简。如果后者编码越少,说明模型对数据的概括能力越强。希望编码的总长度最小。于是,符合模型的大批数据只需通过算法就可以表述,而不符合模型的少量数据才需单独表述。
基于MDLP的熵分组的核心测度指标是信息熵和信息增益。信息熵是信息量的测度指标。从数据分析角度看,极端情况下如果某输入变量只有-一个取值,也就是所有样本在该变量上取相同的值,没有差异,那么这个输入变量事实上并没有给输出变量的分类预测带来任何有意义的信息,可认为其信息量为0。因此,信息量的多少代表了变量取值差异的程度,信息熵则是相应的具体测度指标。
样本集合S中,对于一个具有k个分类的输出变量C,如果取第i个类别的比例为1,其他类别的比例均为0,即P(C,S)=1,P(C,S)=0(j≠i),此时变量C取值的不确定性是最小的,所包含的信息量也是最少的;如果
![2a0bb570a2fc30c8b3d66221f120c544.png](https://i-blog.csdnimg.cn/blog_migrate/08808476c88ccef245d7167db3549a5b.png)
则变量C取值的不确定性是最大的,所包含的信息量也是最多的。于是,信息熵Ent(S)定义为
![d2592bf532c33c9c1535cfb53c5d9be9.png](https://i-blog.csdnimg.cn/blog_migrate/2be52d55360b0874b6003bea3736ae91.png)
显然,信息熵Ent(S)值越大,变量C取值的平均不确定性越大,信息量越大。对于输入变量A (待分组变量),指定一个分组组限值T可将样本集合S被划分为S1和S2,此时,信息熵Ent(A,T;S)定义为
![11b5e841f760c59fa8c473bdad0e6a25.png](https://i-blog.csdnimg.cn/blog_migrate/ea78179ab0d9181a0d0d29e74e8de86d.png)
其中,|S1|、|S2|、|S3|为样本集S1、S2、 S3的样本量。于是,输入变量A的组限值T带来的信息增益Gains(A,T;S)定义为:
![a2cf8e1fd964d5f2d58e7ae61f2a6c40.png](https://i-blog.csdnimg.cn/blog_migrate/947b49ec91a1e78c09514344d0d12cec.png)
例如:超市记录了14 名顾客在某类商品前停留挑选的时间(秒数)以及年龄段、性别和最后是否购买的数据,用以研究挑选时间长短和其他因素对购买决策的影响。现应依据是否购买(输出变量)对停留时间(待分组变量)进行分组。停留时间排序后的数据如下表所示。
![0c96cb65f3ca3085afe4e124d5bbb488.png](https://i-blog.csdnimg.cn/blog_migrate/34c663acd5405e2652bdf12b80320a92.png)
对有14个样本的数据集s,挑选时间记为输入变量A,是否购买记为输出变量C.首先,计算分组前变量C的熵
![e0a9eb18c95ee44bcc36fc658f92a716.png](https://i-blog.csdnimg.cn/blog_migrate/1169d128b680bb93012272e3d12f713e.png)
=0.8609
于是,信息增益Gains(A,T;S)= Ent(S) - Ent(A,T;S)= 0.9402 - 0.8909 = 0.0793容易理解,在组限值T值所划分的组S1和S2中,如果变量C分别均取yes或no,那么这个组限值T对预测变量C的取值来说应该是最理想的,且此时的熵最小,信息增益最大。可见,信息增益越大,依据组限值T分组输入变量A越有意义。
按照上述计算方法,可分别计算出组限值T取所有可能值分组后的熵Ent(A,T;S)和信息增益Gains(A,T;S),并选择信息增益最大且有“意义”的组限值T首先进行分组。这个过程可在所得的各个分组中不断重复,直到重复不再有“意义”为止。
那么,何谓有意义?通常的标准是:
![0f01623232df67c5d4f7cd9aaa92dcc0.png](https://i-blog.csdnimg.cn/blog_migrate/434d276ef2181d999b22f1132b160a31.png)
其中,N为样本总量|S1|。
![8b55a4ca2a64ad37caabcfad31cccbe9.png](https://i-blog.csdnimg.cn/blog_migrate/d31e3eb26293d2927d7a99608c653e45.png)
其中,k、kz为样本集S1、S2 所包含的变量C的类别数。也就是说,当信息增益不大于所计算的标准时,就无需再继续下去了。
本例中,
![da97162bf92fa087aa461df1d7b31561.png](https://i-blog.csdnimg.cn/blog_migrate/f0d140c9f98bbad419395a2dab9c4a94.png)
以80.5分组所得到的信息增益不大于标准,因此不能以此分组。
需要说明的是,该标准体现的正是MDLP原则。从信息论信号传递的角度看,分组前,要传递变量C (如果设1代表yes, 0代表no)则需传递每个值(1 或0);分组后,首先需传递代表组限值T的编码,然后是小于组限值T的变量值和大于组限值T的变量值。尽管这种方式需额外传递组限值T的编码,但当样本量较大时,节省信息量所带来的益处将远远超出额外传递所付出的代价。事实上,
![79c00c033094ab34e8554d1989d05d6f.png](https://i-blog.csdnimg.cn/blog_migrate/5eb4b74ece21d22e9f8353551de6f463.png)
所反应的就是这种传递代价。如果分组所带来的信息增益大于这种代价,也就是说,分组所带来的有助于输出变量预测的信息量,大于为描述这个算法所需的信息量,那么这种分组就是有意义的,是值得的。
欢迎大家加入人工智能圈参与交流
人工智能学习圈 - 知乎www.zhihu.com![5abea321d912318723fac48d11d1652f.png](https://i-blog.csdnimg.cn/blog_migrate/9677d104a7d317654be927dd136a5612.png)