统计学习方法【4】- 朴素贝叶斯

声明:该文章为作者整理和简略的,非原创,是多方资料的整合,为方便所以标注的原创,有错别字欢迎指正,仅作为学习用途
朴素贝叶斯法是基于贝叶斯定理(文中有讲,不必担心不懂)与特征条件独立假设(文中有讲,不必担心不懂)的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x x ,利用贝叶斯定理求出后验概率最大的输出 y y .

一、朴素贝叶斯法(生成学习)的学习与分类

1、基本方法

设输入空间 χ R n \chi \subseteq R^n n n 维向量的集合,输出空间为类标记集合 γ = { c 1 , c 2 , . . . , c k } \gamma = \{ c_1, c_2, ..., c_k\} 。输入为特征向量 x χ x \in \chi ,输出为类标记 y γ y \in \gamma X X 是定义在输入空间 χ \chi 上的随机向量, Y Y 是定义在输出空间 γ \gamma 上的随机向量, P ( X , Y ) P(X, Y) X X Y Y 的联合概率分布,训练数据集
τ = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } \tau =\{ (x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\}
P ( X , Y ) P(X, Y) 独立同分布产生。

朴素贝叶斯法通过训练数据集学习联合概率分布 P ( X , Y ) P(X, Y) ,具体地,学习以下先验概率分布及条件概率分布。先验概率分布:
P ( Y = c k ) , k = 1 , 2 , . . , K P(Y = c_k) , k = 1, 2, .., K

条件概率分布:
P ( X = x Y = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . , X ( n ) = x ( n ) Y = c k ) , k = 1 , 2 , . . , K P(X = x|Y = c_k) = P(X^{(1)} = x^{(1)}, ..., X^{(n)} = x^{(n)} | Y= c_k), k = 1, 2, .., K
于是学习联合概率分布 P ( X , Y ) P(X, Y) .

条件概率分布 P ( X = x Y = c k ) P(X = x|Y=c_k) 有指数级数量的参数,其估计实际是不可行的,事实上,假设 X ( j ) X^{(j)} 可取值有 S j S_j 个, j = 1 , 2 , . . . , n j = 1, 2, ..., n Y Y 可取值有 K K 个,那么参数的个数为 K j = 1 n S j K\prod_{j = 1}^nS_j

朴素贝叶斯法对条件概率分布作了**条件独立性的假设**,由于这是一个较强的假设,朴素贝叶斯法也由此得名。具体地,条件独立性假设是:

P ( X = x Y = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . , X ( n ) = x ( n ) Y = c k ) = j = 1 n P ( X ( j ) = x ( j ) Y = c k ) (1) P(X=x|Y = c_k) = P(X^{(1) } = x^{(1)}, ..., X^{(n)} = x^{(n)}|Y = c_k) = \prod_{j = 1}^nP(X^{(j)} = x^{(j)}|Y = c_k) \tag{1}

朴素贝叶斯实际上学习到生成数据的机制,属于生成模型。条件独立假设等于是说用于分类的特征在确定的条件下都是条件独立的,这一假设使朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。

朴素贝叶斯分类时,对给定的输入 x x ,通过学习到的模型计算后验概率分布 P ( Y = c k X = x ) P(Y = c_k| X = x) ,然后将后验概率最大的类作为 x x 的类输出,后验概率计算根据贝叶斯定理进行:
P ( Y = c k X = x ) = P ( X = x Y = c k ) P ( Y = c k ) k P ( X = x Y = c k ) P ( Y = c k ) (2) P(Y = c_k|X = x) = \frac{P(X= x|Y = c_k)P(Y = c_k)}{\sum_kP(X = x|Y = c_k)P(Y = c_k)}\tag{2}
将公式(1)代入公式(2)有:
P ( Y = c k X = x ) = P ( Y = c k ) j P ( X ( j ) = x ( j ) Y = c k ) k P ( Y = c k ) j P ( X ( j ) = x ( j ) Y = c k ) , k = 1 , 2 , . . . , K P(Y =c_k|X = x) = \frac{P(Y = c_k)\prod_jP(X^{(j)} = x^{(j)}|Y = c_k)}{\sum_kP(Y = c_k)\prod_jP(X^{(j)} = x^{(j)}|Y = c_k)}, k = 1, 2, ..., K

这是朴素贝叶斯分类的基本公式,于是,朴素贝叶斯分类器可表示为
y = f ( x ) = a r g m a x c k P ( Y = c k ) j P ( X ( j ) = x ( j ) Y = c k ) k P ( Y = c k ) j P ( X ( j ) = x ( j ) Y = c k ) (3) y = f(x) = argmax_{c_k} \frac{P(Y = c_k) \prod_jP(X^{(j)} = x^{(j)}|Y = c_k)}{\sum_kP(Y = c_k) \prod_jP(X^{(j)} = x^{(j)}|Y = c_k)}\tag{3}

注意,在式(3)中分母对所有 c k c_k 都是相同的,所以:
y = a r g m a x c k P ( Y = c k ) j P ( X ( j ) = x ( j ) Y = c k ) y = argmax_{c_k} P(Y = c_k)\prod_jP(X^{(j)} = x^{(j)}| Y = c_k)

2、后验概率最大化的含义

朴素贝叶斯法将实例分到后验概率最大的类中,这就等价于期望风险最小化,假设选择0-1损失函数:
L ( Y , f ( X ) = { 1 , Y f ( X ) 0 , Y = f ( X ) L(Y, f(X) = \left\{ \begin{aligned} 1, &&Y \neq f(X)\\ 0, && Y = f(X) \end{aligned} \right.

其中 f ( X ) f(X) 是分类决策函数,这是期望风险函数为
R e x p ( f ) = E [ L ( Y , f ( X ) ) ] R_{exp}(f) = E[L(Y, f(X))]

期望是对联合分布 P ( X , Y ) P(X, Y) 取的,有此取条件期望
R e x p = E x k = 1 K [ L ( c k , f ( X ) ) ] P ( c k X ) R_{exp} = E_x \sum_{k = 1}^K[L(c_k, f(X))]P(c_k|X)

为了使期望风险最小化,只需对 X = x X = x 逐个极小化,由此得到:
f ( x ) = a r g m i n y γ k = 1 K L ( c k , y ) P ( c k X = x ) f(x ) = argmin_{y \in \gamma}\sum_{k = 1}^{K}L(c_k, y)P(c_k|X = x)

= a r g m i n y γ k = 1 K P ( y c k X = x ) = argmin_{y \in \gamma} \sum_{k = 1}^K P(y \neq c_k|X = x)

= a r g m i n y γ k = 1 K ( 1 P ( y c k X = x ) ) = argmin_{y \in \gamma} \sum_{k = 1}^K (1 - P(y \neq c_k|X = x))

= a r g m a x y γ k = 1 K P ( y = c k X = x ) =argmax_{y \in \gamma} \sum_{k = 1}^K P(y= c_k|X = x)
这样一来,根据期望风险最小化准则就得到了后验概率最大化准则:
f ( x ) = a r g m a x c k P ( c k X = x ) f(x) = argmax_{c_k}P(c_k|X = x)

二、朴素贝叶斯法的参数估计

1、极大似然估计

在朴素贝叶斯法中,学习意味着估计 P ( Y = c k ) P(Y = c_k) P ( X ( j ) = x ( j ) Y = c k ) P(X^{(j)} = x^{(j)} | Y = c_k) ,可以应用极大似然法估计相应的概率,先验概率 P ( Y = c k ) P(Y = c_k) 的极大似然估计是:
P ( Y = c k ) = i = 1 N I ( y i = c k ) N , k = 1 , 2 , . . . , K P(Y = c_k) = \frac{\sum_{i=1}^NI(y_i = c_k)}{N}, k = 1, 2, ..., K
设第 j j 个特征 x ( ) j x^{()j} 可能取值的集合 { a j 1 , a j 2 , . . . , a j s j } \{ a_{j1}, a_{j2}, ..., a_{js_j} \} ,条件概率 P ( X ( j ) = a j l Y = c k ) P(X^{(j)} = a_{jl}| Y = c_k) 的极大似然估计是:
P ( X ( j ) = a j l Y = c k ) = i = 1 N I ( X i ( j ) = a j l , y i = c k ) i = 1 N I ( y i = c k ) , j = 1 , 2 , . . . , n ; l = 1 , 2 , . . , S j ; k = 1 , 2 , . . . , K P(X^{(j) } = a_{jl}|Y = c_k) = \frac{\sum_{i = 1}^NI(X_i^{(j)}= a_{jl}, y_i = c_k)}{\sum_{i = 1}^NI(y_i = c_k)}, j = 1,2, ..., n; l = 1, 2, .., S_j; k = 1, 2, ..., K

其中, x i ( j ) x_i^{(j)} 是第i个样本的第 j j 个特征; a j l a_{jl} 是第 j j 个特征可能取的第 l l 个值; I I 为指示函数。

朴素贝叶斯算法
**输入:**训练数据集 τ = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . , ( x N , y N ) } \tau = \{ (x_1, y_1), (x_2, y_2), .., (x_N, y_N)\} ,其中 x i = ( x i ( 1 ) , x i ( 2 ) , x i ( n ) ) T x_i = (x_i^{(1)}, x_i^{(2)}, x_i^{(n)})^T x i ( j ) x_i^{(j)} 是第 i i 个样本的第 j j 个特征, x i ( j ) { a j 1 , a j 2 , . . , a j s j } x_i^{(j)} \in \{ a_{j1}, a_{j2}, .., a_{js_j}\} a j l a_{jl} 是第 j j 个特征可能取的第 l l 个值, j = 1 , 2 , . . , n , l = 1 , 2 , . . , S j , y i { c 1 , c 2 , . . . , c k } j = 1, 2, .., n, l = 1, 2, .., S_j, y_i \in \{c_1, c_2, ..., c_k\}
输出:实例 x x 的分类

(1)计算先验概率及条件概率
P ( Y = c k ) = i = 1 N I ( y i = c k ) N , k = 1 , 2 , . . , K (4) P(Y = c_k) = \frac{\sum_{i = 1}^NI(y_i = c_k)}{N}, k =1, 2, .., K \tag{4}

P ( X ( j ) = a j l Y = c k ) = i = 1 N I ( I i ( j ) = a j l , y i = c k ) i = 1 N I ( y i = c k ) , j = 1 , 2 , . . , n ; l = 1 , 2 , . . , , S j ; k = 1 , 2 , . . , K (5) P(X^{(j)} = a_{jl}| Y = c_k) = \frac{\sum_{i = 1}^NI(I_i^{(j) } = a_{jl}, y_i = c_k)}{\sum_{i = 1}^NI(y_i = c_k)}, j = 1, 2, .., n; l = 1, 2, .., ,S_j; k = 1, 2, .., K \tag{5}

(2)对于给定的实例 x = ( x ( 1 ) , x ( 2 ) , . . . , x ( n ) ) T x = (x^{(1)}, x^{(2)}, ..., x^{(n)})^T 计算
P ( Y = c k j = 1 n P ( X ( j ) = x ( j ) Y = c k ) ) , k = 1 , 2 , . . . , k P(Y = c_k\prod_{j = 1}^nP(X^{(j) } = x^{(j)}|Y = c_k)), k = 1, 2, ..., k

(3)确定实例 x x 的类
y = a r g m a x c k P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) Y = c k ) y = argmax_{c_k}P(Y= c_k)\prod_{j = 1}^nP(X^{(j)} = x^{(j)}| Y = c_k)

2、贝叶斯估计

用极大似然估计可能会出现所要估计的概率值为0的情况,这时会影响到后验概率的计算结果,是分类产生偏差,解决这一问题的方法是采用贝叶斯估计,条件概率的贝叶斯估计是:
P λ ( X ( j ) = a j l Y = c k ) = i = 1 N I ( x i ( j ) = a j l , y i = c k ) + λ i = 1 N I ( y i = c k ) + S j λ (5) P_\lambda(X^{(j)} = a_{jl}| Y = c_k) = \frac{\sum_{i=1}^NI(x_i^{(j)} =a_{jl}, y_i = c_k) + \lambda}{\sum_{i = 1}^NI(y_i = c_k) + S_j\lambda} \tag{5}

式中 λ 0 \lambda \geq 0 ,等价于在随机变量各个取值的频率上赋予一个正数 λ \lambda , 当 λ = 0 \lambda = 0 时就是极大似然估计,常取 λ = 1 \lambda = 1 ,这时称为拉普拉斯平滑(Laplace smoothing),显然,对任何 l = 1 , 2 , . . . , S j , k = 1 , 2 , . . , k l = 1, 2, ..., S_j, k = 1, 2, .., k ,有:
P λ ( X ( j ) = a j l Y = c k ) > 0 P_\lambda(X^{(j)} = a_{jl}|Y=c_k) > 0
l = 1 S j P ( X ( j ) = a j l Y = c k ) = 1 \sum_{l = 1}^{S_j} P(X^{(j)} = a_{jl}|Y = c_k) = 1
先验概率的贝叶斯估计为:

P λ ( Y = c k ) = i = 1 N I ( y i = c k ) + λ N + K λ P_\lambda(Y= c_k) = \frac{\sum_{i = 1}^NI(y_i = c_k) + \lambda}{N + K\lambda}

参考文献:
【1】统计学习方法——李航

猜你喜欢

转载自blog.csdn.net/weixin_43763859/article/details/106381402