本节将介绍一个经典的基于线性分类的概率生成模型——朴素贝叶斯分类器(Naive Bayes Classifier)。
在机器学习笔记之线性分类——高斯判别分析(一)模型思路构建中介绍过,概率生成模型用于分类任务的朴素思想是软分类思想——给定样本 X \mathcal X X条件下,判断后验概率 P ( Y ∣ X ) P(\mathcal Y \mid \mathcal X) P(Y∣X)之间的大小关系。以二分类为例:
P ( Y = 0 ∣ X ) = ? P ( Y = 1 ∣ X ) P(\mathcal Y = 0 \mid \mathcal X) \overset{\text{?}}{=}P(\mathcal Y= 1 \mid \mathcal X) P(Y=0∣X)=?P(Y=1∣X)
而概率生成模型是利用贝叶斯定理,将 后验概率大小关系 转化为 似然和先验概率的乘积形式,即通过乘积大小来反映后验概率的大小关系:
P ( Y = 0 ∣ X ) = ? P ( Y = 1 ∣ X ) → P ( X ∣ Y = 0 ) P ( Y = 0 ) = ? P ( X ∣ Y = 1 ) P ( Y = 1 ) P(\mathcal Y = 0 \mid \mathcal X) \overset{\text{?}}{=} P(\mathcal Y = 1 \mid \mathcal X) \\ \to P(\mathcal X \mid \mathcal Y = 0)P(\mathcal Y =0) \overset{\text{?}}{=} P(\mathcal X \mid \mathcal Y=1)P(\mathcal Y=1) P(Y=0∣X)=?P(Y=1∣X)→P(X∣Y=0)P(Y=0)=?P(X∣Y=1)P(Y=1)
从参数角度观察,概率生成模型是将 求解 P ( Y ∣ X ) P(\mathcal Y \mid \mathcal X) P(Y∣X)的模型参数 转化为 求解 P ( X ∣ Y ) P(\mathcal X \mid \mathcal Y) P(X∣Y)和 P ( Y ) P(\mathcal Y) P(Y)的概率分布参数。
注意上面的表达,先验概率分布 P ( Y ) P(\mathcal Y) P(Y)的参数同样是未知的,先验概率分布同样需要求解。因此,在求解概率分布参数的过程中,使用的是 极大似然估计(MLE),而不是最大后验概率估计(MAP):
最大后验概率估计(MAP)是对‘概率模型’
P ( X ∣ Y ) P(\mathcal X \mid \mathcal Y) P(X∣Y)求解最优参数的过程中,使用一个‘人为设定的经验分布’
P ( Y ) P(\mathcal Y) P(Y)作为先验概率,而该分布中不存在任何参数,设定出来即可直接使用。并且该先验分布的作用只是对‘极大似然估计’方法求解的模型参数起到一个约束作用。
θ ^ = arg max θ L ( θ ) L ( θ ) = log ∏ i = 1 N P ( x ( i ) ∣ y ( i ) ) P ( y ( i ) ) \hat \theta = \mathop{\arg\max}\limits_{\theta} \mathcal L(\theta) \\ \mathcal L(\theta) = \log \prod_{i=1}^N P(x^{(i)} \mid y^{(i)}) P(y^{(i)}) θ^=θargmaxL(θ)L(θ)=logi=1∏NP(x(i)∣y(i))P(y(i))
概率生成模型:高斯判别分析对应样本分布的假设表示如下:
以二分类为例,基于样本的二分类属性,假设先验概率 P ( Y ) P(\mathcal Y) P(Y)为伯努利分布;在分类确定的条件下,假设各分类下的样本分布服从高斯分布:
Y ∼ B e r n o u l l i ( ϕ ) X ∣ Y = 0 ∼ N ( μ 1 , Σ ) X ∣ Y = 1 ∼ N ( μ 2 , Σ ) \mathcal Y \sim Bernoulli(\phi) \\ \mathcal X \mid \mathcal Y = 0 \sim \mathcal N(\mu_1,\Sigma) \\ \mathcal X \mid \mathcal Y = 1 \sim \mathcal N(\mu_2,\Sigma) Y∼Bernoulli(ϕ)X∣Y=0∼N(μ1,Σ)X∣Y=1∼N(μ2,Σ)
观察上述假设,先验概率 P ( Y ) P(\mathcal Y) P(Y)的伯努利分布是基于样本的二分类属性,没的说;但是对似然 P ( X ∣ Y ) P(\mathcal X \mid \mathcal Y) P(X∣Y)的假设显得有些简单:
样本集合 X = { x ( 1 ) , x ( 2 ) , ⋯ , x ( N ) } N × p \mathcal X = \{x^{(1)},x^{(2)},\cdots,x^{(N)}\}_{N \times p} X={x(1),x(2),⋯,x(N)}N×p,集合中的任意样本均是 p p p维向量:
x ( i ) = ( x 1 ( i ) , x 2 ( i ) , ⋯ , x p ( i ) ) T x^{(i)} = (x_1^{(i)},x_2^{(i)},\cdots,x_p^{(i)})^{T} x(i)=(x1(i),x2(i),⋯,xp(i))T
因此,该样本服从的自然也是 p p p维高斯分布。但实际情况是,由于样本特征的复杂性,使得样本各维度特征 ( x 1 , x 2 , ⋯ , x p ) (x_1,x_2,\cdots,x_p) (x1,x2,⋯,xp)可能服从于不同分布。因此,抱着对似然 P ( X ∣ Y ) P(\mathcal X \mid \mathcal Y) P(X∣Y)的假设更加细致的朴素思想,介绍一种经典思想:朴素贝叶斯分类器。
朴素贝叶斯分类器的核心思想是朴素贝叶斯假设,又称条件独立性假设:
在分类确定的条件下(假设包含 k k k个分类),各分类下样本 X l ( l = 1 , 2 , ⋯ , k ) \mathcal X_{l}(l=1,2,\cdots,k) Xl(l=1,2,⋯,k)的任意两个不同特征之间相互独立。数学符号表示如下:
x i ⊥ x j ∣ Y = l ( i , j ∈ { 1 , 2 , ⋯ , p } , i ≠ j , l ∈ { 1 , 2 , ⋯ , k } ) x_i \perp x_j \mid \mathcal Y=l \quad (i,j \in \{1,2,\cdots,p\},i \neq j,l \in \{1,2,\cdots,k\}) xi⊥xj∣Y=l(i,j∈{1,2,⋯,p},i=j,l∈{1,2,⋯,k})
如果将该思想写成似然形式,表达如下:
由于假设的相互独立性,因此‘联合概率分布’
P ( x 1 , x 2 , ⋯ , x p ∣ Y = l ) P(x_1,x_2,\cdots,x_p \mid \mathcal Y=l) P(x1,x2,⋯,xp∣Y=l)可直接写成各项乘积的形式。
P ( X ∣ Y = l ) = P ( x 1 , x 2 , ⋯ , x p ∣ Y = l ) = ∏ i = 1 p P ( x i ∣ Y = l ) P(\mathcal X \mid \mathcal Y = l) = P(x_1,x_2,\cdots,x_p \mid \mathcal Y=l) = \prod_{i=1}^p P(x_i \mid \mathcal Y = l) P(X∣Y=l)=P(x1,x2,⋯,xp∣Y=l)=i=1∏pP(xi∣Y=l)
继续观察朴素贝叶斯假设,相比于高斯判别分析对于 P ( X ∣ Y ) P(\mathcal X \mid \mathcal Y) P(X∣Y)的假设,不否认朴素贝叶斯分类器对 P ( X ∣ Y ) P(\mathcal X \mid \mathcal Y) P(X∣Y)的假设更加细致,精确到了样本 X \mathcal X X的各个维度;
但从 假设本身(假设方式) 来考虑朴素贝叶斯假设,它的假设是非常简单,甚至是非常苛刻的:各维度之间相互独立,意味着样本集合 X \mathcal X X的各特征之间 x i ( i = 1 , 2 , ⋯ , p ) x_i(i=1,2,\cdots,p) xi(i=1,2,⋯,p)必须存在严格界限。相反,如果各维度间存在关联关系,使用朴素贝叶斯分类器来执行分类任务可能没有良好的分类效果。
朴素贝叶斯假设如此严苛,那么构建该假设的动机是什么? 自然是 简化运算。由于条件独立性假设,在使用极大似然估计求解各维度对应分布的参数时,其他维度分布均可视为常数,求导过程中直接消掉即可。
数据集合 D a t a = { ( x ( i ) , y ( i ) ) } i = 1 N Data = \{(x^{(i)},y^{(i)})\}_{i=1}^N Data={(x(i),y(i))}i=1N,任意 x ( i ) x^{(i)} x(i)均属于 p p p维向量:
x ( i ) = ( x 1 ( i ) , x 2 ( i ) , ⋯ , x p ( i ) ) p × 1 T ( i = 1 , 2 , ⋯ , N ) x^{(i)} = (x_1^{(i)},x_2^{(i)}, \cdots,x_p^{(i)})_{p \times 1}^{T} \quad (i=1,2,\cdots,N) x(i)=(x1(i),x2(i),⋯,xp(i))p×1T(i=1,2,⋯,N)
任意 y ( i ) y^{(i)} y(i)均属于标量,且只包含两种标签信息:
y ( i ) ∈ { 0 , 1 } ( i = 1 , 2 , ⋯ , N ) y^{(i)} \in \{0,1\} \quad (i=1,2,\cdots,N) y(i)∈{0,1}(i=1,2,⋯,N)
我们的分类思想依然没有变化,仍然是软分类思想:
P ( Y = 0 ∣ X ) = ? P ( Y = 1 ∣ X ) P(\mathcal Y = 0 \mid \mathcal X) \overset{\text{?}}{=}P(\mathcal Y= 1 \mid \mathcal X) P(Y=0∣X)=?P(Y=1∣X)
软分类思想的概率表达形式如下:
Y p r e d ^ = arg max Y ∈ { 0 , 1 } P ( Y ∣ X ) \hat {\mathcal Y_{pred}} = \mathop{\arg\max}\limits_{\mathcal Y \in \{0,1\}} P(\mathcal Y \mid \mathcal X) Ypred^=Y∈{0,1}argmaxP(Y∣X)
根据贝叶斯定理,将上式进行转化:
Y p r e d ^ = arg max Y ∈ { 0 , 1 } P ( X ∣ Y ) P ( Y ) \hat {\mathcal Y_{pred}} = \mathop{\arg\max}\limits_{\mathcal Y \in \{0,1\}}P(\mathcal X \mid \mathcal Y)P(\mathcal Y) Ypred^=Y∈{0,1}argmaxP(X∣Y)P(Y)
和线性判别分析相似,同样对 P ( Y ) , P ( X ∣ Y ) P(\mathcal Y),P(\mathcal X \mid \mathcal Y) P(Y),P(X∣Y)的概率分布进行假设:
由于
x i x_i xi是样本
x x x在i维度上的分量,通常是一个实数值,因此这里定义
x i x_i xi服从的分布是‘一维高斯分布’。
至此,已经将 P ( Y ) , P ( X ∣ Y ) P(\mathcal Y),P(\mathcal X \mid \mathcal Y) P(Y),P(X∣Y)的概率分布假设完毕,后面对概率分布参数求解过程和高斯判别分析完全相同,即使用 极大似然估计 方法。
令 θ \theta θ为 待求解的概率分布参数,似然函数 L ( θ ) \mathcal L(\theta) L(θ)定义如下:
L ( θ ) = log ∏ i = 1 N [ P ( x ( i ) ∣ y ( i ) ) P ( y ( i ) ) ] = ∑ i = 1 N log [ P ( x ( i ) ∣ y ( i ) ) P ( y ( i ) ) ] \begin{aligned} \mathcal L(\theta) & = \log \prod_{i=1}^N \left[P(x^{(i)} \mid y^{(i)}) P(y^{(i)})\right] \\ & = \sum_{i=1}^N \log \left[P(x^{(i)} \mid y^{(i)}) P(y^{(i)})\right] \end{aligned} L(θ)=logi=1∏N[P(x(i)∣y(i))P(y(i))]=i=1∑Nlog[P(x(i)∣y(i))P(y(i))]
基于条件独立性假设, x ( i ) x^{(i)} x(i)的任意一个维度均服从一个概率分布,则有:
P ( x ( i ) ∣ y ( i ) ) = ∏ j = 1 p P ( x j ( i ) ∣ y ( i ) ) P(x^{(i)} \mid y^{(i)}) = \prod_{j=1}^p P(x_j^{(i)} \mid y^{(i)}) P(x(i)∣y(i))=j=1∏pP(xj(i)∣y(i))
将基于条件独立性假设的 P ( x ( i ) ∣ y ( i ) ) P(x^{(i)} \mid y^{(i)}) P(x(i)∣y(i))带入上式,则有:
L ( θ ) = ∑ i = 1 N { log [ P ( x ( i ) ∣ y ( i ) ) ] + log [ P ( y ( i ) ) ] } = ∑ i = 1 N { log [ ∏ j = 1 p P ( x j ( i ) ∣ y ( i ) ) ] + log [ P ( y ( i ) ) ] } = ∑ i = 1 N { ∑ j = 1 p log [ P ( x j ( i ) ∣ y ( i ) ) ] + log [ P ( y ( i ) ) ] } \begin{aligned} \mathcal L(\theta) & = \sum_{i=1}^N \left\{\log \left[P(x^{(i)} \mid y^{(i)})\right] + \log \left[P(y^{(i)})\right]\right\} \\ & = \sum_{i=1}^N \left\{\log \left[\prod_{j=1}^p P(x_j^{(i)} \mid y^{(i)})\right] + \log \left[P(y^{(i)})\right]\right\} \\ & = \sum_{i=1}^N \left\{\sum_{j=1}^p \log \left[P(x_j^{(i)} \mid y^{(i)})\right] + \log \left[P(y^{(i)})\right]\right\} \end{aligned} L(θ)=i=1∑N{log[P(x(i)∣y(i))]+log[P(y(i))]}=i=1∑N{log[j=1∏pP(xj(i)∣y(i))]+log[P(y(i))]}=i=1∑N{j=1∑plog[P(xj(i)∣y(i))]+log[P(y(i))]}
最后将对应假设的 P ( x j ( i ) ∣ y ( i ) ) , P ( y ( i ) ) P(x_j^{(i)} \mid y^{(i)}),P(y^{(i)}) P(xj(i)∣y(i)),P(y(i))的分布带入,对 L ( θ ) \mathcal L(\theta) L(θ)进行极大似然估计即可。
θ ^ = arg max θ L ( θ ) \hat {\theta} = \mathop{\arg\max}\limits_{\theta} \mathcal L(\theta) θ^=θargmaxL(θ)
对于朴素贝叶斯分类器中的条件独立性假设十分抽象,这里我们反过来思考:什么样的样本能够完整符合朴素贝叶斯分类器的全部要求?
这里以机器学习(周志华著)的西瓜数据集3.0为例,从样本的角度观察条件独立性假设以及各维度的概率分布情况。
至此,线性分类模型系列暂时结束,下面将介绍新的系列,一种特殊的硬分类模型——支持向量机(Support Vector Machine,SVM)
相关参考:
机器学习(周志华著)
机器学习-线性分类9-朴素贝爷斯分类器(Naive Bayes Classifier)