前言

机器学习笔记-朴素贝叶斯分类这篇文章中已经对朴素贝叶斯分类器做了详细的介绍,从原理,模型和例题各方面介绍了朴素贝叶斯。但是那篇文章中针对的全部都是离散属性,并没有说明如何处理连续属性。本文给出贝叶斯分类处理连续属性的方法。

连续特征

  连续属性,即连续的数值,且数值之间存在顺序关系,即1,2,3等等,这种属性称为连续属性,在常规的机器学习任务中,连续属性要比离散属性更好处理,例如在GBDT中,对类别属性处理起来非常麻烦,因为梯度提升树是基于顺序切割最优点的,所以不适合类别数据。
这里有个很容易弄混的点,那就是离散数据、类别数据、连续数据这三个概念,我下面简单介绍一下:
  统计数据可以分为两类:类别数据和数值数据。数值数据又可以分为两类:离散数据和连续数据。

类别数据:只能归于某一类别的非数字型的数据,称为类别数据。其中非数字型非常重要,比如说性别、上市公司的分类、满意度等等,这些只有种类的数据叫做类别数据,而类别数据根据数据的含义又可以分为有序类别数据和无序类别数据,例如满意度是有序类别数据,我们可以将其转化为1,2,3,4,5五个等级进行处理。而性别是无序类别数据,我们可以转化为0和1,具体怎么转化没有固定的要求。
数值数据: 数值数据定义为按数字尺度测量的观测值,何为尺度,其实这个不唯一,例如我们的厘米刻度尺是尺度,我们的收入是尺度,这些都是尺度,具体情况具体讨论。数值数据又可以分为连续数据和离散数据。连续数据有一年12个月每个月赚了多少钱,身高体重等等。离散数据有一个很大的特点就是有限个,并且其取值是可以一一列出的,例如上市公司的个数,小区的人数,这些看似是连续数据,但是它是离散数据。是不是感觉有点绕,我是这样记的,连续数据是可以在有限区间内取无穷个值,它的取值是连续不断的,不能一一列举。那么我们来看,年龄是连续数据还是离散数据呢?年龄有10,20,30,但是没有10.5,20.5,30.5,所以年龄是离散数据。那么一袋米的重量,这个肯定就是连续数据了,因为重量可以取无限个。

  这些概念一般情况下是不深入挖掘的,我们只需要知道在贝叶斯分类器中处理的是离散数据或者说是类别数据即可,再通俗点,就是有限个数据。而对于连续型数据,我们需要另找它法。

高斯概率分布

  在贝叶斯分类中,我们要做的就是根据先验概率和条件概率以及贝叶斯定理来估计后验概率,而连续型特征和离散型特征最大的区别就在于计算概率的方式不同。如果是有限个离散的特征,那么我们集散概率的方式就可以用极大似然估计或者是贝叶斯估计。但是连续数据不能用这两种方法,对于连续数据,我们需要引入正太分布来处理。也就是概率密度函数。

所以在面对连续数据时,我们只需要将连续数据的概率分布计算方式换一下即可,其他的并没有太大的变化。

  除此之外,处理连续数据还有一个方法,那就是将连续数据离散化,设定一个个空间,有点像模糊隶属度或者Lightgbm中的直方图分布,感觉有点像。其实处理起来并不复杂,当然更多情况下,使用的还是高斯函数多一些。