在朴素贝叶斯法中,学习意味着估计 P ( Y = c k )和 P ( X ( j ) = x ( j ) | Y = c k )。可以应用极大似然估计法估计相应的概率。先验概率 P ( Y = c k )的极大似然估计是
设第 j 个特征 x ( j ) 可能取值的集合为{ a j 1 , a j 2 ,…, a jSj },条件概率 P ( X ( j ) = a jl | Y = c k )的极大似然估计是
式中, 是第 i 个样本的第 j 个特征; a jl 是第 j 个特征可能取的第 l 个值; I 为指示函数。
下面给出朴素贝叶斯法的学习与分类算法。
算法4.1(朴素贝叶斯算法(naïve Bayes algorithm))
输入:训练数据 T ={( x 1 , y 1 ),( x 2 , y 2 ),…,( x N , y N )},其中 是第 i 个样本的第 j 个特征, , a jl 是第 j 个特征可能取的第 l 个值, j =1,2,…, n , l =1,2,…, S j , y i ∈{ c 1 , c 2 ,…, c K };实例 x ;
输出:实例 x 的分类。
(1)计算先验概率及条件概率
(2)对于给定的实例 x =( x (1) , x (2) ,…, x ( n ) ) T ,计算
(3)确定实例 x 的类
例4.1 试由表4.1的训练数据学习一个朴素贝叶斯分类器并确定 x =(2, S ) T 的类标记 y 。表中 X (1) , X (2) 为特征,取值的集合分别为 A 1 ={1,2,3}, A 2 ={ S,M,L} , Y 为类标记, Y∈C ={1,−1}。
表4.1 训练数据
解 根据算法4.1,由表4.1,容易计算下列概率:
对于给定的 x =(2, S ) T 计算:
因为 P ( Y =−1) P ( X (1) =2| Y =−1) P ( X (2) = S | Y =−1)最大,所以 y =−1。
用极大似然估计可能会出现所要估计的概率值为0的情况。这时会影响到后验概率的计算结果,使分类产生偏差。解决这一问题的方法是采用贝叶斯估计。具体地,条件概率的贝叶斯估计是
式中 λ ≥0。等价于在随机变量各个取值的频数上赋予一个正数 λ >0。当 λ =0时就是极大似然估计。常取 λ =1,这时称为拉普拉斯平滑(Laplacian smoothing)。显然,对任何 l =1,2,…, S j , k =1,2,…, K ,有
表明式(4.10)确为一种概率分布。同样,先验概率的贝叶斯估计是
例4.2 问题同例4.1,按照拉普拉斯平滑估计概率,即取 λ =1。
解 A 1 ={1,2,3}, A 2 ={ S,M,L} , C ={1,−1}。按照式(4.10)和式(4.11)计算下列概率:
对于给定的 x =(2, S ) T ,计算:
由于 P ( Y =−1) P ( X (1) =2| Y =−1) P ( X (2) = S | Y =−1)最大,所以 y =−1。