数据挖掘-朴素贝叶斯算法

如题所述

第1个回答  2022-07-12

朴素贝叶斯算法,主要用于对相互独立的属性的类变量的分类预测。(各个属性/特征之间完全没有关系,叫做相互独立,事实上这很难存在,但是这个方法依然比较有效。)

大学的概率论里一般都学过这个贝叶斯定理,简单阐述如下:

若事件 , ,…构成一个事件且都有正概率,则对任意一个事件Y,有如下公式成立:则有

如果X表示特征/属性,Y表示类变量,如果类变量和属性之间的关系不确定,那么X和Y可以视作随机变量,则 为Y的后验概率, 为Y的先验概率。
以图为例:

我们需要根据身高、体重、鞋码判断是男是女,则Y就是性别,X就是(身高、体重、鞋码)这一组特征。如果我们要先算是男的概率,则先验概率就是 ,而后验概率则是我们未来将要输入的一组特征已知的情况下,Y=男的概率(要预测的分类的概率),这样的话,根据贝叶斯定理,我们就可以用 来求出 ,这就是贝叶斯定理在预测中的应用。

假设Y变量取y值时概率为P(Y=y),X中的各个特征相互独立,则有公式如下:
其中每个特征集X包含d个特征。
根据公式,对比上面的图来说,如果性别是男的时候,身高是高,体重是重,鞋码为大的概率就等于

有了这个公式,结合之前的贝叶斯公式,就能得到给定一组特征值的情况下, 这组特征属于什么样的类别的概率公式:
其中的X代表一组特征, 代表一组中的一个。
对于所有的Y来说,P(X)时固定的,因此只要找出使分子 最大的类别就可以判断预测的类别了。

的概率分为两种情况来区别,一种是对分类特征的概率确定,一种是连续特征的概率确定。

接下来借用《数据挖掘导论》上的例子来说明概率确定的方式。

对于分类的特征,可以首先找到训练集中为y值的个数,然后根据不同的特征类型占这些个数中的比例作为分类特征的概率。
例如上表中求不拖欠贷款的情况下,有房的人数就是 ,不拖欠贷款的有7个,其中有房的是3个。以此类推可以求出婚姻状况的条件概率。
年收入是连续特征,需要区分对待。

根据上述算法,如果要求没有拖欠贷款情况下,年收入是120K的概率,就是

如果要预测测试记录 X =(有房=否,婚姻状况=已婚,年收入=120K)这个样本是否可能拖欠贷款,则需要计算两个概率: 和
则有:
由于 是不变的(对于Y=是和Y=否),则只考虑上面的分子即可,那么抛开P(X)不看,则有:


其中7/10就是P(Y=否),α是P(X)
同理可得P(Y=是|X) = 1 * 0 * 1.2e-1 = 0.
这样一比较,那么分类就是否。

看这个例子中,如果有一个特征的条件概率是0,那么整体的概率就是0,从而后验概率也一定是0,那么如果训练集样本太少,这种方法就不是很准确了。
如果当训练集样本个数比特征还少的时候,就无法分类某些测试集了,因此引入 m估计(m-estimate) 来估计条件概率,公式如下:

其中,n是类 中的样本总数, 是类 中取 的样本数, 是称为等价样本大小的参数, 是用户指定的参数,p可以看作在类 中观察特征值 的先验概率。等价样本大小决定先验概率 和观测概率 之间的平衡。

引入m估计的根本原因是样本数量过小。所以为了避免此问题,最好的方法是等效的扩大样本的数量,即在为观察样本添加m个等效的样本,所以要在该类别中增加的等效的类别的数量就是等效样本数m乘以先验估计p。

在之前的例子中,设m=3,p=1/3(m可以设置为特征数量,p则是倒数)。则:
从而可以重新计算 。从而解决了某个条件概率为0的问题。

面对相互独立的特征比较适用,如果有相关的特征,则会降低其性能。

相似回答