将连续值离散化的问题,在数据挖掘和机器学习的任务中并不鲜见,当然离散化的方法也有很多。
本文将要介绍的是一种基于数据标签(label)来对连续数据值做离散化分割的监督学习方法。
问题:
考虑有如下数据:
1,0
2,0
3,0
4,0
5,0
6,1
7,1
8,1
9,1
10,1
第一列是连续值数据,而第二列是数据的类别标签(label)
我们希望对数据进行划分,使得划分的结果符合数据的类标签的分布。
即,预期前5个值为一段,后5个值为另一段。
这个问题可能有点太naive,明眼人只要看一眼即可准确地将数据按照需要的方式划分。
可是,我们需要机器像人一样聪明,能做出同样的判断,而且能将这种能力推广到更大更复杂的数据集。
那机器到底是怎么样进行思考的呢?或者是基于什么准则来实现上述数据分段?
这就是我们今天要重点介绍的内容,一种基于贝叶斯后验优化的连续值离散化方法。
我们将上述数据记为D,将要求解的模型记为M。我们的目标是找到在给定数据D时,后验概率最大的那个M,即最大化P(M|D)。
根据贝叶斯公式得到:P(M|D) = P(D|M)P(M) / P(D),而既然D已经给定了,那P(D)不管是多少都是个定值,因此只需要使P(D|M)P(M)最大即可。
P(M):
为了描述的方便,我们给出如下一些标记:
基于上述标记,则我们的模型空间为如下集合:
同时对模型做如下假定:
- 分段数“I”服从 1~n的均匀分布
- 给定分段数“I”后,不同的分段结果之间的概率相等
- 给定 I 和 ni,每个类标签值的分布在各个分段内的概率是均等的。
- 每个分段内的类值分布概率是独立的
根据上述假设,则模型先验概率P(M)可展开如下:
根据假定1,得到:
根据假定2,得到:
根据假定3,4,得到:
则,P(M)的最终形态为:
P(D|M):
即给定模型M,数据D的“似然”,不难得到:
则P(M|D)最终表达为:
最大化P(M|D)等价于最小化如下公式:
最终我们只需要求解一个如上目标的最小化问题即可,具体的求解方法,本文不做详细展开。
具体实现可参考代码:
https://code.csdn.net/u011531384/dml/tree/master/ts/modl.c
https://code.csdn.net/u011531384/dml/tree/master/ts/modl.h
测试代码如下:
#include <stdlib.h> #include "modl.h" int main(){ double v[15] = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0}; int a[15] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 1 ,0 ,0 ,0 ,0 ,0}; int nd = 0,i=0; double * rule = NULL; rule = modl(v,a,15,&nd); if (rule && nd > 0){ printf("split points:%d\n",nd); for (i = 0; i< nd; i++){ printf("%.3f\n", rule[i]); } } else{ printf("no split rule generated\n"); } return 0; }
结果如预期输出:
split points:2
5.5
10.5
相关推荐
连续系统离散化问题 1. 香农定理与控制系统采样周期 1) --香农定理 2)采样周期导致信号滞后—影响系统稳定
连续系统离散化方法
详细描述了连续数据离散化的方法,阐述的比较详细
摘要:连续属性离散化的关键在于合理确定离散化划分点的个数和位置。为了提高无监督离散化的效率 ,给出一种基于熵的连续属性离散化方法。该方法利用连续属性的信息量
定理表明:在考虑决策信息表中属性值之间不可分关系的条件下,若决策信息表的值发生变化,则离散化结果必然发生变化。所以由单一样本构成的连续量决策信息表所得到的离散化结果不能用于实际的连续量系统中。
将连续系统离散化,并设计GUI操作界面,方便变更所要离散的连续系统。
为在应用粗糙集理论处理数据时,对连续属性进行离散化预处理,采用k均值算法对连续属性进行离散化的方法,将属性无监督聚类成两类.通过在UCI数据库上选取的4组数据进行实验,首先离散化,再通过粗糙集约简,最后使用k NN(k...
连续属性的离散化是文本分类任务中数据预处理阶段的一项重要技术。针对机器学习领域中的诸多优秀算法只能处理离散属性的特点,提出一种基于词出现和信息增益相结合的多区间连续属性离散化方法(multi-interval ...
在计算几何问题中,离散化方法是一种较为通用的算法,在解决一些与矩形等直线型有关的题目时,能大大降低算法的时空复杂度。但当问题与圆相关时,直接离散化法有较大困难。本文讨论了离散化法在这类问题中的方法,...
数据离散化的方法 对于不能处理连续问题的算法 可先进行离散化 然后在进行相关工作
探讨了贪心及其改进算法、基于属性重要性、基于信息熵和基于聚类四类连续属性离散化算法,并通过...实验结果表明,数据集离散化的效果不仅取决于使用算法,而且与数据集连续属性的分布和决策数据值的分类也有密切关系。
粗糙集理论用于数据挖掘要求连续数据离散化,在分析目前的离散化算法的基础上,提出了一种局部离散化方法,以期降低断点、规则数量。使用此算法在模拟电路故障数据上进行的试验,表明其性能较好。
为了利用信息系统对象在数据空间中分布,通过对对象的模糊聚类,计算每一类在坐标轴上的统计值。利用正态概率分布特性,引入重叠度和空隙度选取合适的概率,确定最优的区间端点,实现连续属性离散化。
提出了一种基于聚类方法的无监督连续属性离散化算法,称为CAMNA(Clustering and Merging on Numerical Attribute)算法。CAMNA算法通过聚类过程将数值值域划分为多个离散区间,根据类分布的指导信息优化合并相邻...
python零基础学习篇数据处理-课程2.4 数据连续属性离散化.mp4
随着数据挖掘和知识发现等技术的迅速发展,出现了很多数据离散的算法,但是,已有的离散化方法大多是针对固定点上的连续属性值的情况,实际应用中大量存在着连续区间属性值的情况。针对这一问题,提出了一种连续区间...
simulink传递函数的离散化仿真
通过将连续属性离散化和属性约简结合起来,首先对连续型的属性列进行离散化,得到新的决策表;然后再对新的决策表作属性约简,解决了属性约简过程中由于不考虑连续属性而无法求出准确约简属性的问题。最后通过具体...