`

关于连续值离散化[MODL]

阅读更多

将连续值离散化的问题,在数据挖掘和机器学习的任务中并不鲜见,当然离散化的方法也有很多。

本文将要介绍的是一种基于数据标签(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):

为了描述的方便,我们给出如下一些标记:

 

 

基于上述标记,则我们的模型空间为如下集合:

同时对模型做如下假定:

  1. 分段数“I”服从 1~n的均匀分布
  2. 给定分段数“I”后,不同的分段结果之间的概率相等
  3. 给定 I 和 ni,每个类标签值的分布在各个分段内的概率是均等的。
  4. 每个分段内的类值分布概率是独立的

 根据上述假设,则模型先验概率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

 

 

 

 

 

  • 大小: 23.3 KB
  • 大小: 2.7 KB
  • 大小: 6.6 KB
  • 大小: 1.9 KB
  • 大小: 4.8 KB
  • 大小: 13 KB
  • 大小: 8.8 KB
  • 大小: 8 KB
  • 大小: 16 KB
  • 大小: 6.2 KB
分享到:
评论

相关推荐

    连续数值的离散化方法

    ### 连续数值的离散化方法:深度解析与应用 #### 引言:连续与离散特征的差异 在数据科学与机器学习领域,数据集的特征通常被划分为两大类:连续特征与离散特征。连续特征,即定量特征,其值取自连续的区间,能够...

    连续系统离散化方法

    连续系统离散化方法是将连续时间域中的信号或系统转换为离散时间域中的表示,这一过程在数字信号处理、控制系统设计以及计算机科学的多个领域中广泛应用。离散化是实现数字计算和硬件实现的基础,因为它使得复杂的...

    连续系统离散化问题

    连续系统离散化问题 1. 香农定理与控制系统采样周期 1) --香农定理 2)采样周期导致信号滞后—影响系统稳定

    连续系统离散化.rar_离散_离散化_离散系统_连续 离散_连续系统离散化GUI设计

    离散化是将连续系统转换为离散系统的过程,它在计算机科学、信号处理和控制系统等领域具有重要应用。本文将详细探讨连续系统离散化的原理、方法以及如何设计GUI(图形用户界面)来实现这一过程。 一、离散化原理 ...

    线性连续时间状态空间表达式的离散化

    "线性连续时间状态空间表达式的离散化" 线性连续时间状态空间表达式的离散化是数字计算机对连续时间状态方程求解或对连续受控对象采用数字计算机进行在线控制的关键步骤。该过程将连续时间系统化为离散时间系统,...

    一种基于熵的连续属性离散化算法1

    【熵与连续属性离散化】 在数据挖掘和机器学习领域,连续属性的离散化是一个关键步骤,它能够简化数据,降低算法复杂度,提高学习效率,并增强分类结果的可解释性。离散化的基本目标是将连续数值型的属性转化为离散...

    离散化设计(双线性变换等)

    连续域—离散化设计是指在连续域中设计好控制律,然后将其离散化,以便在数字计算机上实现控制算法。这种方法的优点是充分利用对连续系统的分析和设计经验,离散化方法简单,结论明确。工程应用广泛,飞控系统数字化...

    论文研究-基于对象分布的连续属性离散化方法.pdf

    连续属性离散化是将连续属性值转换为有限个区间或者离散值的过程,它是数据预处理的重要步骤。本文研究的离散化方法是基于对象分布的连续属性离散化方法,这种方法利用了信息系统中对象的分布特性,并结合了模糊聚类...

    连续型变量的离散化-监督与无监督原理

    - **基本原理**:监督离散化的核心思想是通过将连续特征划分为多个区间,使得每个区间内的样本具有相似的目标变量值,而不同区间的样本具有不同的目标变量值。 - **常见方法**: - **最小熵法**:基于熵的概念来...

    论文研究-连续属性离散化的MaxDiff方法.pdf

    标题“论文研究-连续属性离散化的MaxDiff方法.pdf”涉及了数据挖掘领域中的一个重要话题——连续属性的离散化处理。在数据挖掘过程中,粗糙集理论是一种常用于数据分析、模式识别和知识发现的方法。粗糙集理论要求...

    RoughSet中基于聚类的连续属性离散化方法.pdf

    ### RoughSet中基于聚类的连续属性离散化方法 #### 概述 RoughSet理论是由波兰数学家Z.Pawlak提出的,旨在处理不确定数据和模糊知识的一种数学框架。该理论广泛应用于知识发现、数据挖掘等领域,尤其擅长于知识...

    传递函数离散化相关方法

    传递函数离散化是连接模拟世界与数字世界的桥梁,通过不同的离散化方法,可以有效地将连续时间系统转换为数字系统,以便于计算机的实时控制和信号处理。掌握这些基本概念和技术对于从事控制系统设计和信号处理的...

    几种常用的连续状态方程离散方法总结-用于卡尔曼滤波方程.pdf

    离散化是将连续状态方程转换为适合离散卡尔曼滤波算法的过程,这是因为实际应用中的系统状态方程往往是连续的,而卡尔曼滤波的数学模型是基于离散时间序列的。本文主要总结了如何对连续状态方程进行离散化处理,以便...

    disc_MDLP.rar_matlab 离散化_数据离散化_离散化 matlab_连续 离散_连续数据离散

    数据离散化的方法 对于不能处理连续问题的算法 可先进行离散化 然后在进行相关工作

    基于LVQ神经网络的连续属性离散化方法.pdf

    连续属性的离散化是将连续值属性转换为离散值,以便更好地进行数据分析和挖掘。然而,在现实世界数据库中,存在大量的连续值属性,需要对其进行离散化处理。 本文提出了一种基于LVQ神经网络的离散化方法,利用LVQ...

Global site tag (gtag.js) - Google Analytics