1、贝叶斯判定准则
贝叶斯判定准则:为最小化风险,只需要在每个样本上选择那个能使条件风险 R ( c ∣ x ) R(c|x) R(c∣x)最小的类别标记,即 h ∗ ( x ) = a r g m i n c ∈ y R ( c ∣ x ) h^*(x) = arg\space min_{c\in y}R(c|x) h∗(x)=arg minc∈yR(c∣x)此时, h ∗ h^* h∗称为贝叶斯最优分类器。需要注意一下, R ( c ∣ x ) R(c|x) R(c∣x)表示对单个样本的来说产生的条件风险,而 h ∗ ( x ) h^*(x) h∗(x)的输入也是单个样本,也就是说给定单个样本x,传入 h ∗ ( x ) h^*(x) h∗(x)之后,输出是一个类别标记。这个类别标记满足使得 R ( c ∣ x ) R(c|x) R(c∣x)取到最小值,所以这里的 h ∗ ( x ) h^*(x) h∗(x)和平时讲的分类模型是一样的,都是给定一个 x x x,能够马上判断出 x x x所属的类别 c c c。
已知条件风险 R ( c ∣ X ) R(c|X) R(c∣X)的计算公式为 R ( c i ∣ x ) = ∑ j = 1 N λ i j P ( c j ∣ x ) R(c_i|x)=\sum_{j=1}^N\lambda _{ij}P(c_j|x) R(ci∣x)=j=1∑NλijP(cj∣x)对于这个式子,考察一下它在最小化分类错误率这个具体的场景下是怎么运用的。如果我们的目标是最小化分类错误率,那么误判损失 λ i j \lambda_{ij} λij对应的就是0-1损失,也即: λ i j = { 0 , i f i = j 1 , o t h e r w i s e \lambda_{ij}=\left\{\begin{matrix} 0,if\space i=j\space\space\space\space\space\\1,otherwise \end{matrix}\right. λij={0,if i=j 1,otherwise观察一下这个式子可以知道,如果分类正确损失就为0,当分类错误的时候损失统一都为1。把这个式子代进 R ( c ∣ x ) R(c|x) R(c∣x)公式中,可以得到: R ( c i ∣ x ) = 1 ∗ P ( c 1 ∣ x ) + . . . + 1 ∗ P ( c i − 1 ∣ x ) + 0 ∗ P ( c i ∣ x ) + 1 ∗ P ( c i + 1 ∣ x ) + . . . + 1 ∗ P ( c N ∣ x ) R(c_i|x)=1*P(c_1|x)+...+1*P(c_{i-1}|x)+0*P(c_i|x)+1*P(c_{i+1}|x)+...+1*P(c_{N}|x) R(ci∣x)=1∗P(c1∣x)+...+1∗P(ci−1∣x)+0∗P(ci∣x)+1∗P(ci+1∣x)+...+1∗P(cN∣x)这个式子其实就是前面的式子,把求和符号展开,以及把误判损失 λ i j \lambda_{ij} λij换成具体的数值得到的式子。公式中的第一个1代表的就是 λ i 1 \lambda_{i1} λi1,公式中的0代表的就是 λ i i \lambda_{ii} λii。把这个式子整理一下,把含有0的项省略,就得到下面的式子: R ( c i ∣ x ) = P ( c 1 ∣ x ) + . . . + P ( c i − 1 ∣ x ) + P ( c i + 1 ∣ x ) + . . . + P ( c N ∣ x ) R(c_i|x)=P(c_1|x)+...+P(c_{i-1}|x)+P(c_{i+1}|x)+...+P(c_{N}|x) R(ci∣x)=P(c1∣x)+...+P(ci−1∣x)+P(ci+1∣x)+...+P(cN∣x)对于这个式子,可以进行进一步的化简,样本x分为每个类别的概率之和为1,也就是: P ( c 1 ∣ x ) + . . . + P ( c n ∣ x ) = 1 P(c_1|x)+...+P(c_n|x)=1 P(c1∣x)+...+P(cn∣x)=1相比于 R ( c i ∣ x ) R(c_i|x) R(ci∣x)的公式,该公式仅仅多了一个 P ( c i ∣ x ) P(c_i|x) P(ci∣x)。所以 R ( c i ∣ x ) R(c_i|x) R(ci∣x)公式可以表示为: R ( c i ∣ x ) = 1 − P ( c i ∣ x ) R(c_i|x)=1-P(c_i|x) R(ci∣x)=1−P(ci∣x)这个公式就是西瓜书上的公式7.5。现在把 R ( c i ∣ x ) R(c_i|x) R(ci∣x)代回到前面的贝叶斯判定准则,最小化错误率的贝叶斯最优分类器为: h ∗ ( x ) = a r g m i n c ∈ y R ( c ∣ x ) = a r g m i n c ∈ y ( 1 − P ( c ∣ x ) ) = a r g m a x c ∈ y P ( c ∣ x ) h^*(x) = arg\space min_{c\in y}R(c|x)=arg\space min_{c\in y}(1-P(c|x))=arg\space max_{c\in y}P(c|x) h∗(x)=arg minc∈yR(c∣x)=arg minc∈y(1−P(c∣x))=arg maxc∈yP(c∣x)也就是说,我们最开始要找的 h ∗ ( x ) h^*(x) h∗(x)是要找使得 R ( c ∣ x ) R(c|x) R(c∣x)条件风险取到最小的类标记c。如今在我们最小化分类错误率的情形下,条件风险 R ( c ∣ x ) R(c|x) R(c∣x)等价于 1 − P ( c ∣ x ) 1-P(c|x) 1−P(c∣x),这时候要找使得 1 − P ( c ∣ x ) 1-P(c|x) 1−P(c∣x)取得最小值的类标记等价于找到使得 P ( c ∣ x ) P(c|x) P(c∣x)取到最大值的类别标记c。
所以我们的问题由最开始的最小化条件风险转化为最大化后验概率 P ( c ∣ x ) P(c|x) P(c∣x),到这里我们就已经知道了怎样对最小化错误率的贝叶斯最优分类器进行建模。而且 P ( c ∣ x ) P(c|x) P(c∣x)是可以进行建模和计算的。接下来先不讲如何建模 P ( c ∣ x ) P(c|x) P(c∣x),先来讲一下多元正态分布参数的极大似然估计。因为这个知识点在后面讲如何建模计算 P ( c ∣ x ) P(c|x) P(c∣x)的时候会用到。所以接下来先来讲一下多元正态分布参数的极大似然估计。
2、多元正态分布参数的极大似然估计
极大似然估计法的核心在于要确定似然函数,因为确定似然函数以后只需要对似然函数进行求最大值,就能解出想要的参数。在极大似然估计法中,通常不会直接对似然函数求最大值,通常是对对数似然函数求最大值,也就是说把似然函数整体取对数后再进行求最大值。对似然函数整体取对数的原因是在求最大值的时候通常要进行求导,如果直接对似然函数进行球求导会很麻烦,取对数之后再进行求导计算会方便很多。西瓜书上也给出另一个解释,原先的似然函数是含有连乘操作的,而连乘操作容易造成下溢,所以整体取对数之后就可以避免下溢。总的来说,对似然函数整体取对数仅仅是为了方便计算。
已知对数似然函数的表达式为: L L ( θ c ) = ∑ x ∈ D c l o g P ( x ∣ θ c ) LL(\theta_c)=\sum_{x\in D_c}\space log\space P(x|\theta_c) LL(θc)=x∈Dc∑ log P(x∣θc)对于这个式子,需要说明一点,西瓜书上取对数的时候直接写的是 l o g log log,也就是说书上并没有明确地指明这个对数的底数是多少;实际上,只要保证对数是单调递增的就可以了。所以log的底数取2或者10或者e都是可以的,通常是取自然常数e为底数。为了便于后面的计算,令log的底数为e,则对数似然函数可化为: L L ( θ c ) = ∑ x ∈ D c l n P ( x ∣ θ c ) LL(\theta_c)=\sum_{x\in D_c}\space ln\space P(x|\theta_c) LL(θc)=x∈Dc∑ ln P(x∣θc)观察这个式子,可以知道,如果公式中的 x x x是离散的, P ( x ∣ θ c ) P(x|\theta_c) P(x∣θc)表示的就是 x x x的分布率,如果 x x x是连续型的,那么 P ( x ∣ θ c ) P(x|\theta_c) P(x∣θc)表示的就是 x x x的概率密度函数。这里我们假定 x x x是服从多元正态分布,所以只需要把 P ( x ∣ θ c ) P(x|\theta_c) P(x∣θc)换成多元正态分布的概率密度函数。下面的就是多元正态概率密度函数的公式,它和一元正态分布的概率密度函数是很类似的。
由于 P ( x ∣ θ c ) = P ( x ∣ c ) ∼ N ( μ c , σ c 2 ) P(x|\theta_c)=P(x|c) \sim N(\mu_c,\sigma_c^2) P(x∣θc)=P(x∣c)∼N(μc,σc2),那么 P ( x ∣ θ c ) = 1 ( 2 π ) d ∣ ∑ c ∣ e x p ( − 1 2 ( x − μ c ) T ∑ c − 1 ( x − μ c ) ) P(x|\theta_c)=\frac{1}{\sqrt{(2\pi)^d|\sum_c|}}exp(-\frac{1}{2}(x-\mu _c)^T\sum_c^{-1}(x-\mu_c)) P(x∣θc)=(2π)d∣∑c∣1exp(−21(x−μc)Tc∑−1(x−μc))其中, d d d表示 x x x的维数, x x x一般都是 d d d行1列的列向量,这个d和公式中的d是等价的。也就是说如果x是一个5行1列的列向量,那么d=5。 ∑ c = σ c 2 \sum_c= \sigma_c^2 ∑c=σc2为对称正定协方差矩阵,类比一元正态分布,在一元正态分布中, σ c 2 \sigma_c^2 σc2表示的是方差,在多元正态分布里面,表示的就是协方差矩阵,这个矩阵是对称正定的。 ∣ ∑ c ∣ |\sum_c| ∣∑c∣表示 ∑ c \sum_c ∑c的行列式,将上式代入到对数似然函数可得 L L ( θ c ) = ∑ x ∈ D c l n [ 1 ( 2 π ) d ∣ ∑ c ∣ e x p ( − 1 2 ( x − μ c ) T ∑ c − 1 ( x − μ c ) ) ] LL(\theta_c)=\sum_{x\in D_c}ln[\space \frac{1}{\sqrt{(2\pi)^d|\sum_c|}}exp(-\frac{1}{2}(x-\mu _c)^T\sum_c^{-1}(x-\mu_c))] LL(θc)=x∈Dc∑ln[ (2π)d∣∑c∣1exp(−21(x−μc)Tc∑−1(x−μc))]这样就得到了一个对数似然函数的具体表达式,接下来为了便于后续计算,对对数似然函数进行一个恒等变形。
首先看一下求和符号 ∑ x ∈ D c \sum_{x\in D_c} ∑x∈Dc,这个求和符号的意思是要遍历 D c D_c Dc这个集合里面每个样本 x x x。令 ∣ D c ∣ = N |D_c|=N ∣Dc∣=N,把公式中的 x x x变为 x i x_i xi,则对数似然函数可化为: L L ( θ c ) = ∑ i = 1 N l n [ 1 ( 2 π ) d ∣ ∑ c ∣ e x p ( − 1 2 ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) ) ] LL(\theta_c)=\sum_{i=1}^Nln[\space \frac{1}{\sqrt{(2\pi)^d|\sum_c|}}exp(-\frac{1}{2}(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c))] LL(θc)=i=1∑Nln[ (2π)d∣∑c∣1exp(−21(xi−μc)Tc∑−1(xi−μc))]接下来为了方便应用对数的运算法则,把中括号中的式子进行简单的拆分: L L ( θ c ) = ∑ i = 1 N l n [ 1 ( 2 π ) d 1 ∣ ∑ c ∣ e x p ( − 1 2 ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) ) ] LL(\theta_c)=\sum_{i=1}^Nln[\space \frac{1}{\sqrt{(2\pi)^d}}\frac {1}{|\sum_c|}exp(-\frac{1}{2}(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c))] LL(θc)=i=1∑Nln[ (2π)d1∣∑c∣1exp(−21(xi−μc)Tc∑−1(xi−μc))] = ∑ i = 1 N { l n 1 ( 2 π ) d + l n 1 ∣ ∑ c ∣ + l n [ e x p ( − 1 2 ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) ) ] } =\sum_{i=1}^N\left \{ln\space \frac{1}{\sqrt{(2\pi)^d}}+ln\frac {1}{|\sum_c|}+ln[exp(-\frac{1}{2}(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c))]\right \} =i=1∑N{ln (2π)d1+ln∣∑c∣1+ln[exp(−21(xi−μc)Tc∑−1(xi−μc))]} = ∑ i = 1 N { − d 2 l n ( 2 π ) − 1 2 l n ∣ ∑ c ∣ − 1 2 ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) } =\sum_{i=1}^N\left \{-\frac{d}{2}ln(2\pi)-\frac{1}{2}ln|\sum_c|-\frac{1}{2}(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c) \right \} =i=1∑N{−2dln(2π)−21ln∣c∑∣−21(xi−μc)Tc∑−1(xi−μc)} = − N d 2 l n ( 2 π ) − N 2 l n ∣ ∑ c ∣ − 1 2 ∑ i = 1 N ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) =-\frac{Nd}{2}ln(2\pi)-\frac{N}{2}ln|\sum_c|-\frac{1}{2}\sum_{i=1}^N(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c) =−2Ndln(2π)−2Nln∣c∑∣−21i=1∑N(xi−μc)Tc∑−1(xi−μc)到这里就完成了对数似然函数的恒等变形。接下来就是要求使得对数似然函数取到最大值的 θ c \theta_c θc,这里要注意下,这里说的 θ c \theta_c θc其实就是 ∣ ∑ c ∣ |\sum_c| ∣∑c∣和 μ c \mu_c μc的一个统称。所以说要求使得对数似然函数取得最大值的 θ c \theta_c θc也就是说要求使得对数似然函数取得最大值的 ∣ ∑ c ∣ |\sum_c| ∣∑c∣和 μ c \mu_c μc。用数学语言表达就是下面的式子。
由于参数 θ c \theta_c θc的极大似然估计 θ c ^ \hat{\theta_c} θc^为 θ c ^ = a r g m a x θ c ^ L L ( θ c ) \hat{\theta_c}=arg\space max_{\hat{\theta_c}}\space LL(\theta_c) θc^=arg maxθc^ LL(θc)所以接下里只需要求出使得对数似然函数 L L ( θ c ) LL(\theta_c) LL(θc)取到最大值的 μ c ^ \hat{\mu_c} μc^和 ∑ c ^ \hat{\sum_c} ∑c^,也就求出了 θ c ^ \hat{\theta_c} θc^。
我们只需要令对数似然函数分别关于 μ c \mu_c μc和 θ c \theta_c θc分别求一阶偏导,令其等于零就可以解出我们想要的 μ c ^ \hat{\mu_c} μc^和 ∑ c ^ \hat{\sum_c} ∑c^。下面首先对对数似然函数关于 μ c \mu_c μc求一阶偏导。
对 L L ( θ c ) LL(\theta_c) LL(θc)关于 μ c \mu_c μc求偏导: ∂ L L ( θ c ) ∂ μ c = ∂ ∂ μ c [ − N d 2 l n ( 2 π ) − N 2 l n ∣ ∑ c ∣ − 1 2 ∑ i = 1 N ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) ] \frac{\partial LL(\theta_c)}{\partial \mu_c}=\frac{\partial}{\partial \mu_c}[-\frac{Nd}{2}ln(2\pi)-\frac{N}{2}ln|\sum_c|-\frac{1}{2}\sum_{i=1}^N(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c)] ∂μc∂LL(θc)=∂μc∂[−2Ndln(2π)−2Nln∣c∑∣−21i=1∑N(xi−μc)Tc∑−1(xi−μc)] = ∂ ∂ μ c [ − 1 2 ∑ i = 1 N ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) ] =\frac{\partial}{\partial \mu_c}[-\frac{1}{2}\sum_{i=1}^N(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c)] =∂μc∂[−21i=1∑N(xi−μc)Tc∑−1(xi−μc)] = − 1 2 ∑ i = 1 N ∂ ∂ μ c [ ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) ] =-\frac{1}{2}\sum_{i=1}^N\frac{\partial}{\partial \mu_c}[(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c)] =−21i=1∑N∂μc∂[(xi−μc)Tc∑−1(xi−μc)]得到的公式没有办法对 μ c \mu_c μc求偏导,所以要考虑将公式拆开。考虑 ( x i − μ c ) T (x_i-\mu _c)^T (xi−μc)T,根据线性代数的知识,转置符号可以直接放进公式里面: ∂ L L ( θ c ) ∂ μ c = − 1 2 ∑ i = 1 N ∂ ∂ μ c [ ( x i T − μ c T ) ∑ c − 1 ( x i − μ c ) ] \frac{\partial LL(\theta_c)}{\partial \mu_c}=-\frac{1}{2}\sum_{i=1}^N\frac{\partial}{\partial \mu_c}[(x_i^T-\mu _c^T)\sum_c^{-1}(x_i-\mu_c)] ∂μc∂LL(θc)=−21i=1∑N∂μc∂[(xiT−μcT)c∑−1(xi−μc)]接着观察一下式子 [ ( x i T − μ c T ) ∑ c − 1 ( x i − μ c ) ] [(x_i^T-\mu _c^T)\sum_c^{-1}(x_i-\mu_c)] [(xiT−μcT)∑c−1(xi−μc)], ∑ c − 1 \sum_c^{-1} ∑c−1( ∑ c \sum_c ∑c的逆)可以放进公式中,进而可以得到下面的公式: ∂ L L ( θ c ) ∂ μ c = − 1 2 ∑ i = 1 N ∂ ∂ μ c [ ( x i T − μ c T ) ( ∑ c − 1 x i − ∑ c − 1 μ c ) ] \frac{\partial LL(\theta_c)}{\partial \mu_c}=-\frac{1}{2}\sum_{i=1}^N\frac{\partial}{\partial \mu_c}[(x_i^T-\mu _c^T)(\sum_c^{-1}x_i-\sum_c^{-1}\mu_c)] ∂μc∂LL(θc)=−21i=1∑N∂μc∂[(xiT−μcT)(c∑−1xi−c∑−1μc)]接着把公式中的小括号拆掉,可以得到下面的式子: ∂ L L ( θ c ) ∂ μ c = − 1 2 ∑ i = 1 N ∂ ∂ μ c [ ( x i T ∑ c − 1 x i − x i T ∑ c − 1 μ c − μ c T ∑ c − 1 x i + μ c T ∑ c − 1 μ c ) ] \frac{\partial LL(\theta_c)}{\partial \mu_c}=-\frac{1}{2}\sum_{i=1}^N\frac{\partial}{\partial \mu_c}[(x_i^T\sum_c^{-1}x_i-x_i^T\sum_c^{-1}\mu_c-\mu _c^T\sum_c^{-1}x_i+\mu _c^T\sum_c^{-1}\mu_c)] ∂μc∂LL(θc)=−21i=1∑N∂μc∂[(xiTc∑−1xi−xiTc∑−1μc−μcTc∑−1xi+μcTc∑−1μc)]这个式子可以进一步进行化简,由于 x i T ∑ c − 1 μ c x_i^T\sum_c^{-1}\mu_c xiT∑c−1μc的计算结果为标量,所以: x i T ∑ c − 1 μ c = ( x i T ∑ c − 1 μ c ) T = μ c T ( ∑ c − 1 ) T x i = μ c T ( ∑ c T ) − 1 x i = μ c T ∑ c − 1 x i x_i^T\sum_c^{-1}\mu_c=(x_i^T\sum_c^{-1}\mu_c)^T=\mu_c^T(\sum_c^{-1})^Tx_i=\mu_c^T(\sum_c^{T})^{-1}x_i=\mu_c^T\sum_c^{-1}x_i xiTc∑−1μc=(xiTc∑−1μc)T=μcT(c∑−1)Txi=μcT(c∑T)−1xi=μcTc∑−1xi公式中求逆运算和转置运算是可以交换的,同时,上面我们已经提到, ∑ c \sum_c ∑c是一个对称正定矩阵,所以转置之后还是本身。
于是求导公式可以进一步化简为: ∂ L L ( θ c ) ∂ μ c = − 1 2 ∑ i = 1 N ∂ ∂ μ c [ ( x i T ∑ c − 1 x i − 2 x i T ∑ c − 1 μ c + μ c T ∑ c − 1 μ c ) ] \frac{\partial LL(\theta_c)}{\partial \mu_c}=-\frac{1}{2}\sum_{i=1}^N\frac{\partial}{\partial \mu_c}[(x_i^T\sum_c^{-1}x_i-2x_i^T\sum_c^{-1}\mu_c+\mu _c^T\sum_c^{-1}\mu_c)] ∂μc∂LL(θc)=−21i=1∑N∂μc∂[(xiTc∑−1xi−2xiTc∑−1μc+μcTc∑−1μc)]
由矩阵微分公式 ∂ a T x ∂ x = a \frac{\partial a^Tx}{\partial x}=a ∂x∂aTx=a, ∂ x T B x ∂ x = ( B + B T ) x \frac {\partial x^TBx}{\partial x}=(B+B^T)x ∂x∂xTBx=(B+BT)x,可得: ∂ L L ( θ c ) ∂ μ c = − 1 2 ∑ i = 1 N [ 0 − ( 2 x i T ∑ c − 1 ) T + ( ∑ c − 1 + ( ∑ c − 1 ) T ) μ c ] \frac{\partial LL(\theta_c)}{\partial \mu_c}=-\frac{1}{2}\sum_{i=1}^N[0-(2x_i^T\sum_c^{-1})^T+(\sum_c^{-1}+(\sum_c^{-1})^T)\mu_c] ∂μc∂LL(θc)=−21i=1∑N[0−(2xiTc∑−1)T+(c∑−1+(c∑−1)T)μc]为了便于后续计算,整理一下公式: ∂ L L ( θ c ) ∂ μ c = − 1 2 ∑ i = 1 N [ − ( 2 ( ∑ c − 1 ) T x i ) + ( ∑ c − 1 + ( ∑ c − 1 ) T ) μ c ] \frac{\partial LL(\theta_c)}{\partial \mu_c}=-\frac{1}{2}\sum_{i=1}^N[-(2(\sum_c^{-1})^Tx_i)+(\sum_c^{-1}+(\sum_c^{-1})^T)\mu_c] ∂μc∂LL(θc)=−21i=1∑N[−(2(c∑−1)Txi)+(c∑−1+(c∑−1)T)μc] = − 1 2 ∑ i = 1 N [ − ( 2 ∑ c − 1 x i ) + 2 ∑ c − 1 μ c ] =-\frac{1}{2}\sum_{i=1}^N[-(2\sum_c^{-1}x_i)+2\sum_c^{-1}\mu_c] =−21i=1∑N[−(2c∑−1xi)+2c∑−1μc] = ∑ i = 1 N ∑ c − 1 x i − N ∑ c − 1 μ c =\sum_{i=1}^N\sum_c^{-1}x_i-N\sum_c^{-1}\mu_c =i=1∑Nc∑−1xi−Nc∑−1μc这个公式就是对数似然函数关于 μ c \mu_c μc的一阶偏导数,接下来令一阶偏导数等于0,解出我们想要的 μ c ^ \hat{\mu_c} μc^ ∂ L L ( θ c ) ∂ μ c = ∑ i = 1 N ∑ c − 1 x i − N ∑ c − 1 μ c = 0 \frac{\partial LL(\theta_c)}{\partial \mu_c}=\sum_{i=1}^N\sum_c^{-1}x_i-N\sum_c^{-1}\mu_c=0 ∂μc∂LL(θc)=i=1∑Nc∑−1xi−Nc∑−1μc=0将这个式子进行简单的移项可以得到 ∑ i = 1 N ∑ c − 1 x i = N ∑ c − 1 μ c \sum_{i=1}^N\sum_c^{-1}x_i=N\sum_c^{-1}\mu_c i=1∑Nc∑−1xi=Nc∑−1μc ∑ c − 1 \sum_c^{-1} ∑c−1是不受求和符号约束的,可以提到前面: ∑ c − 1 ∑ i = 1 N x i = N ∑ c − 1 μ c \sum_c^{-1}\sum_{i=1}^Nx_i=N\sum_c^{-1}\mu_c c∑−1i=1∑Nxi=Nc∑−1μc将这个公式左右两边同时乘上 ∑ c \sum_c ∑c,可以得到下面的公式: N μ c = ∑ i = 1 N x i N\mu_c=\sum_{i=1}^Nx_i Nμc=i=1∑Nxi μ c = 1 N ∑ i = 1 N x i \mu_c=\frac{1}{N}\sum_{i=1}^Nx_i μc=N1i=1∑Nxi令 μ ^ c = μ c \hat \mu_c=\mu_c μ^c=μc,可以得到 μ ^ c = 1 N ∑ i = 1 N x i \hat \mu_c=\frac{1}{N}\sum_{i=1}^Nx_i μ^c=N1i=1∑Nxi这就是西瓜书中的公式7.12。
对 L L ( θ c ) LL(\theta_c) LL(θc)关于 ∑ c \sum_c ∑c求偏导: ∂ L L ( θ c ) ∂ ∑ c = ∂ ∂ ∑ c [ − N d 2 l n ( 2 π ) − N 2 l n ∣ ∑ c ∣ − 1 2 ∑ i = 1 N ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) ] \frac{\partial LL(\theta_c)}{\partial \sum_c}=\frac{\partial}{\partial \sum_c}[-\frac{Nd}{2}ln(2\pi)-\frac{N}{2}ln|\sum_c|-\frac{1}{2}\sum_{i=1}^N(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c)] ∂∑c∂LL(θc)=∂∑c∂[−2Ndln(2π)−2Nln∣c∑∣−21i=1∑N(xi−μc)Tc∑−1(xi−μc)] = ∂ ∂ ∑ c [ − N 2 l n ∣ ∑ c ∣ − 1 2 ∑ i = 1 N ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) ] =\frac{\partial}{\partial \sum_c}[-\frac{N}{2}ln|\sum_c|-\frac{1}{2}\sum_{i=1}^N(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c)] =∂∑c∂[−2Nln∣c∑∣−21i=1∑N(xi−μc)Tc∑−1(xi−μc)] = − N 2 ∂ ∂ ∑ c [ l n ∣ ∑ c ∣ ] − 1 2 ∑ i = 1 N ∂ ∂ ∑ c [ ( x i − μ c ) T ∑ c − 1 ( x i − μ c ) ] =-\frac{N}{2}\frac{\partial }{\partial \sum_c}[ln|\sum_c|]-\frac{1}{2}\sum_{i=1}^N\frac{\partial }{\partial \sum_c}[(x_i-\mu _c)^T\sum_c^{-1}(x_i-\mu_c)] =−2N∂∑c∂[ln∣c∑∣]−21i=1∑N∂∑c∂[(xi−μc)Tc∑−1(xi−μc)]由矩阵微分公式 ∂ ∣ X ∣ ∂ X = ∣ X ∣ ( X − 1 ) T \frac{\partial|X|}{\partial X}=|X|(X^{-1})^T ∂X∂∣X∣=∣X∣(X−1)T, ∂ a T X − 1 b ∂ X = − X − T a b T X − T \frac {\partial a^TX^{-1}b}{\partial X}=-X^{-T}ab^TX^{-T} ∂X∂aTX−1b=−X−TabTX−T可得: ∂ L L ( θ c ) ∂ ∑ c = − N 2 1 ∣ ∑ c ∣ ∣ ∑ c ∣ ( ∑ c − 1 ) T − 1 2 ∑ i = 1 N [ − ∑ c − T ( x i − μ c ) ( x i − μ c ) T ∑ c − T ] \frac{\partial LL(\theta_c)}{\partial \sum_c}=-\frac{N}{2}\frac{1}{|\sum_c|}|\sum_c|(\sum_c^{-1})^T-\frac{1}{2}\sum_{i=1}^N[-\sum_c^{-T}(x_i-\mu_c)(x_i-\mu_c)^T\sum_c^{-T}] ∂∑c∂LL(θc)=−2N∣∑c∣1∣c∑∣(c∑−1)T−21i=1∑N[−c∑−T(xi−μc)(xi−μc)Tc∑−T] = − N 2 ( ∑ c − 1 ) T − 1 2 ∑ i = 1 N [ − ∑ c − T ( x i − μ c ) ( x i − μ c ) T ∑ c − T ] =-\frac{N}{2}(\sum_c^{-1})^T-\frac{1}{2}\sum_{i=1}^{N}[-\sum_c^{-T}(x_i-\mu_c)(x_i-\mu_c)^T\sum_c^{-T}] =−2N(c∑−1)T−21i=1∑N[−c∑−T(xi−μc)(xi−μc)Tc∑−T] = − N 2 ∑ c − 1 + 1 2 ∑ i = 1 N [ ∑ c − 1 ( x i − μ c ) ( x i − μ c ) T ∑ c − 1 ] =-\frac{N}{2}\sum_c^{-1}+\frac{1}{2}\sum_{i=1}^{N}[\sum_c^{-1}(x_i-\mu_c)(x_i-\mu_c)^T\sum_c^{-1}] =−2Nc∑−1+21i=1∑N[c∑−1(xi−μc)(xi−μc)Tc∑−1]令偏导数等于0可得: ∂ L L ( θ c ) ∂ ∑ c = N 2 ∑ c − 1 + 1 2 ∑ i = 1 N [ ∑ c − 1 ( x i − μ c ) ( x i − μ c ) T ∑ c − 1 ] = 0 \frac{\partial LL(\theta_c)}{\partial \sum_c}=\frac{N}{2}\sum_c^{-1}+\frac{1}{2}\sum_{i=1}^{N}[\sum_c^{-1}(x_i-\mu_c)(x_i-\mu_c)^T\sum_c^{-1}]=0 ∂∑c∂LL(θc)=2Nc∑−1+21i=1∑N[c∑−1(xi−μc)(xi−μc)Tc∑−1]=0对这个式子进行移项可以得到: − N 2 ∑ c − 1 = − 1 2 ∑ i = 1 N [ ∑ c − 1 ( x i − μ c ) ( x i − μ c ) T ∑ c − 1 ] -\frac{N}{2}\sum_c^{-1}=-\frac{1}{2}\sum_{i=1}^{N}[\sum_c^{-1}(x_i-\mu_c)(x_i-\mu_c)^T\sum_c^{-1}] −2Nc∑−1=−21i=1∑N[c∑−1(xi−μc)(xi−μc)Tc∑−1]两边同时乘于-2,可得: N ∑ c − 1 = ∑ i = 1 N [ ∑ c − 1 ( x i − μ c ) ( x i − μ c ) T ∑ c − 1 ] N\sum_c^{-1}=\sum_{i=1}^{N}[\sum_c^{-1}(x_i-\mu_c)(x_i-\mu_c)^T\sum_c^{-1}] Nc∑−1=i=1∑N[c∑−1(xi−μc)(xi−μc)Tc∑−1]观察这个式子,可以发现 ∑ c − 1 \sum_c^{-1} ∑c−1是不受求和符号影响的,可以将其提取出来: N ∑ c − 1 = ∑ c − 1 [ ∑ i = 1 N ( x i − μ c ) ( x i − μ c ) T ] ∑ c − 1 N\sum_c^{-1}=\sum_c^{-1}[\sum_{i=1}^{N}(x_i-\mu_c)(x_i-\mu_c)^T]\sum_c^{-1} Nc∑−1=c∑−1[i=1∑N(xi−μc)(xi−μc)T]c∑−1在式子的端同时乘上一个 ∑ c \sum_c ∑c,可以得到: N = ∑ c − 1 [ ∑ i = 1 N ( x i − μ c ) ( x i − μ c ) T ] N=\sum_c^{-1}[\sum_{i=1}^{N}(x_i-\mu_c)(x_i-\mu_c)^T] N=c∑−1[i=1∑N(xi−μc)(xi−μc)T]对这个公式进行简单的移项就可以得到: ∑ c = 1 N [ ∑ i = 1 N ( x i − μ c ) ( x i − μ c ) T ] \sum_c=\frac{1}{N}[\sum_{i=1}^{N}(x_i-\mu_c)(x_i-\mu_c)^T] c∑=N1[i=1∑N(xi−μc)(xi−μc)T]用 ∑ c ^ \hat{\sum_c} ∑c^代替 ∑ c \sum_c ∑c,可以得到: 、 h a t ∑ c = 1 N [ ∑ i = 1 N ( x i − μ c ) ( x i − μ c ) T ] 、hat{\sum_c}=\frac{1}{N}[\sum_{i=1}^{N}(x_i-\mu_c)(x_i-\mu_c)^T] 、hatc∑=N1[i=1∑N(xi−μc)(xi−μc)T]这就是西瓜书中的公式7.13
求解到这里有一个问题。对数似然函数直接求偏导令其等于0解出来的 μ c ^ \hat{\mu_c} μc^和 ∑ c ^ \hat{\sum_c} ∑c^一定能够使得对数似然函数达到最大值吗?答案肯定是一定的,具体的证明过程由于过于繁琐,这里就不进行赘述了。感兴趣的话可以查阅《多元正态分布参数的估计和数据的清洁与变换》。到这里就讲完了多元正态分布的对数似然估计。
3、朴素贝叶斯分类器
前面在讲贝叶斯判定准则的时候已经推导过:最小化分类错误率的贝叶斯最优分类器为: h ∗ ( x ) = a r g m a x c ∈ y P ( c ∣ x ) h^*(x) =arg\space max_{c\in y}P(c|x) h∗(x)=arg maxc∈yP(c∣x)为了得到朴素贝叶斯分类器的表达式,对上面公式中的 P ( c ∣ x ) P(c|x) P(c∣x)用贝叶斯定理做一个恒等变形,根据贝叶斯定理可知: P ( c ∣ x ) = P ( x , c ) P ( x ) = P ( c ) P ( x ∣ c ) P ( x ) P(c|x)=\frac {P(x,c)}{P(x)}=\frac{P(c)P(x|c)}{P(x)} P(c∣x)=P(x)P(x,c)=P(x)P(c)P(x∣c)把这个公式代进贝叶斯最优分类器公式中: h ∗ ( x ) = a r g m a x c ∈ y P ( c ) P ( x ∣ c ) P ( x ) = a r g m a x c ∈ y P ( c ) P ( x ∣ c ) h^*(x) =arg\space max_{c\in y}\frac{P(c)P(x|c)}{P(x)}=arg\space max_{c\in y}P(c)P(x|c) h∗(x)=arg maxc∈yP(x)P(c)P(x∣c)=arg maxc∈yP(c)P(x∣c)仔细看一下上面这个式子中的 a r g m a x c ∈ y P ( c ) P ( x ∣ c ) P ( x ) arg\space max_{c\in y}\frac{P(c)P(x|c)}{P(x)} arg maxc∈yP(x)P(c)P(x∣c),这部分式子是在求使得 P ( c ) P ( x ∣ c ) P ( x ) \frac{P(c)P(x|c)}{P(x)} P(x)P(c)P(x∣c)整体取到最大值的标记 c c c,这部分公式中 P ( c ) P ( x ∣ c ) P ( x ) \frac{P(c)P(x|c)}{P(x)} P(x)P(c)P(x∣c)的分母 P ( x ) P(x) P(x)是和 c c c没有任何关系的。也就是说在变动 c c c的时候 P ( x ) P(x) P(x)的取值是恒定的,而仅仅只有分子是随着 c c c的取值的改变而改变的。所以我们在改变 c c c来寻找 P ( c ) P ( x ∣ c ) P ( x ) \frac{P(c)P(x|c)}{P(x)} P(x)P(c)P(x∣c)最大值时等价于改变 c c c来寻找分子 P ( c ) P ( x ∣ c ) P(c)P(x|c) P(c)P(x∣c)取到最大值,也就等价于 a r g m a x c ∈ y P ( c ) P ( x ∣ c ) arg\space max_{c\in y}P(c)P(x|c) arg maxc∈yP(c)P(x∣c)。
朴素贝叶斯分类器就是在贝叶斯最优分类器公式的基础上加上一个属性条件独立性假设。
属性条件独立性假设的公式为: P ( x ∣ c ) = P ( x 1 , x 2 , . . . , x d ∣ c ) = ∏ i = 1 d P ( x i ∣ c ) P(x|c)=P(x_1,x_2,...,x_d|c)=\prod _{i=1}^d\space P(x_i|c) P(x∣c)=P(x1,x2,...,xd∣c)=i=1∏d P(xi∣c)接下来讲一下上面这个式子的含义,再讲为什么会有这个属性条件独立性假设。首先把似然概率 P ( x ∣ c ) P(x|c) P(x∣c)中的 x x x变为 x 1 , x 2 , . . . , x d x_1,x_2,...,x_d x1,x2,...,xd,而这 x 1 , x 2 , . . . , x d x_1,x_2,...,x_d x1,x2,...,xd根据书上的说法可以知道,既可以代表样本 x x x的某个属性,也可以代表样本 x x x的某个具体取值。在这里, x x x代表 x x x样本的某个属性。这个式子的意思是说,在给定标记 c c c的情形下, x 1 , x 2 , . . . , x d x_1,x_2,...,x_d x1,x2,...,xd这 d d d个属性的联合概率。现在令这个联合概率等于 ∏ i = 1 d P ( x i ∣ c ) \prod _{i=1}^d\space P(x_i|c) ∏i=1d P(xi∣c)。根据概率论可以知道, ∏ i = 1 d P ( x i ∣ c ) \prod _{i=1}^d\space P(x_i|c) ∏i=1d P(xi∣c)的意思是说 x 1 , x 2 , . . . , x d x_1,x_2,...,x_d x1,x2,...,xd这 d d d个属性之间是相互独立的,互不相关的,这显然是不符合实际情形的。因为我们知道任何一个物品的属性之间多多少少都应该有一点关系的,并不能说是完全独立,互不相关的。
那么为什么要做属性之间相互独立的强假设呢?其实这是为了简便计算,也就是牺牲准确率去换取计算效率。下面通过一个简单的例子说明是怎么简便计算的。
假设现在有一种南瓜是有两种属性的,属性 x 1 x_1 x1和属性 x 2 x_2 x2, x 1 x_1 x1的取值为 A , B , C A,B,C A,B,C, x 2 x_2 x2的取值为 D , E , F D,E,F D,E,F,它的类别C有三种取值,分别为 1 , 2 , 3 1,2,3 1,2,3。现在想学习一个南瓜分类器,并且把所有的参数都学习出来,所谓的把所有的参数都学习出来就是要算出各种属性情形下的联合概率。那么一共有多少种联合概率呢?根据排列组合的知识, x 1 x_1 x1一共有3种情况, x 2 x_2 x2有三种取值情况,类别 C C C有三种取值情况,那么一共有27种联合概率。
现在有两种计算方案,一种是假设属性之间不独立,用公式 P ( x 1 , x 2 , . . . , x d ∣ c ) P(x_1,x_2,...,x_d|c) P(x1,x2,...,xd∣c)进行计算;另一种假设属性之间相互独立,用公式 ∏ i = 1 d P ( x i ∣ c ) \prod _{i=1}^d\space P(x_i|c) ∏i=1d P(xi∣c)进行计算。
如果假设属性之间是不独立的,按照式子 P ( x 1 , x 2 , . . . , x d ∣ c ) P(x_1,x_2,...,x_d|c) P(x1,x2,...,xd∣c)计算,一共有27种情形。每一种情形式子的表达式是不一样的,所以有多少种联合概率就需要计算多少次。如果假设属性之间是不独立的就需要计算27次。
如果假设属性之间相互独立,根据公式 ∏ i = 1 d P ( x i ∣ c ) \prod _{i=1}^d\space P(x_i|c) ∏i=1d P(xi∣c)可知,只需要计算出每个属性的自然概率就能组合出整体的自然概率,也就是所谓的联合概率。
那么每个属性的自然概率一共有多少种呢?对于属性 x 1 x_1 x1,取值有3种情况,类别 C C C有3种情况,那么就是 3 ∗ 3 3*3 3∗3种;同样的,对于属性 x 2 x_2 x2,也是有 3 ∗ 3 3*3 3∗3种情况。加起来一共有18种,也就是说现在只需要计算出18种自然概率就可以通过公式 ∏ i = 1 d P ( x i ∣ c ) \prod _{i=1}^d\space P(x_i|c) ∏i=1d P(xi∣c)组合计算出27种联合概率。
显然现在的计算量18是明显比27要小的。可能看起来18并没有比27小多少,所以牺牲的准确度换来的效率不划算。但是你要知道,我们现在假设南瓜的属性只有两个。通常生产环境中的样本肯定是不止两个属性的,通常是有上百上千甚至上万个属性。如果每增加一个属性,如果假设属性间是不独立的,按照公式 P ( x 1 , x 2 , . . . , x d ∣ c ) P(x_1,x_2,...,x_d|c) P(x1,x2,...,xd∣c)计算,计算量是需要在27后面再乘上一个3的。如果假设属性间是独立的,按照公式 ∏ i = 1 d P ( x i ∣ c ) \prod _{i=1}^d\space P(x_i|c) ∏i=1d P(xi∣c)进行计算,只需要在18后面加上一个 3 ∗ 3 3*3 3∗3。也就是说,如果我们按照公式 P ( x 1 , x 2 , . . . , x d ∣ c ) P(x_1,x_2,...,x_d|c) P(x1,x2,...,xd∣c)计算,计算量是随着属性的个数的增长而成指数型增长;但是如果按照公式 ∏ i = 1 d P ( x i ∣ c ) \prod _{i=1}^d\space P(x_i|c) ∏i=1d P(xi∣c)进行计算,计算量的增长速度不会随着属性的增加而呈指数型增长。所以随着属性的增多,两个公式之间的计算量的差距会越来越大。这也就是为什么选择牺牲准确度而换取计算效率的原因。
现在把公式 ∏ i = 1 d P ( x i ∣ c ) \prod _{i=1}^d\space P(x_i|c) ∏i=1d P(xi∣c)代回贝叶斯分类器的表达式里面,就可以得到朴素贝叶斯分类器的表达式: h ∗ ( x ) = a r g m a x c ∈ y P ( x ) ∏ i = 1 d P ( x i ∣ c ) h^*(x)=arg\space max_{c\in y}P(x)\prod _{i=1}^d\space P(x_i|c) h∗(x)=arg maxc∈yP(x)i=1∏d P(xi∣c)得到朴素贝叶斯分类器的表达式之后,讲一下怎么进行参数估计,也就是怎么求先验概率 P ( c ) P(c) P(c)和似然概率 P ( x i ∣ c ) P(x_i|c) P(xi∣c)。
首先讲一下怎么计算先验概率 P ( c ) P(c) P(c)。
对于先验概率 P ( c ) P(c) P(c),它表示的是样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时, P ( c ) P(c) P(c)可通过各类样本出现的频率来进行估计,也即 P ( c ) = ∣ D c ∣ ∣ D ∣ P(c)=\frac{|D_c|}{|D|} P(c)=∣D∣∣Dc∣其中, D D D表示训练集, ∣ D ∣ |D| ∣D∣表示 D D D中的样本个数, D c D_c Dc表示训练集D中第 c c c类样本组成的集合, ∣ D c ∣ |D_c| ∣Dc∣表示集合 D c D_c Dc中的样本个数。
对于 P ( x i ∣ c ) P(x_i|c) P(xi∣c),需要分为两种情形来进行讨论。因为 x I x_I xI表示的是属性,属性可以分为连续值和离散值。
若样本的第 i i i个属性 x i x_i xi取值为连续值,我们假设该属性的取值服从正态分布,也即 P ( x i ∣ c ) ∼ N ( μ c , i , σ c , i 2 ) ⇒ P ( x i ∣ c ) = 1 2 π σ c , i e x p ( − ( x i − μ c , i ) 2 2 σ c , i 2 ) P(x_i|c)\sim N(\mu_{c,i},\sigma _{c,i}^2)\Rightarrow P(x_i|c)=\frac{1}{ \sqrt{2\pi}\sigma_{c,i}}exp(-\frac{(x_i-\mu_{c,i})^2}{2\sigma_{c,i}^2}) P(xi∣c)∼N(μc,i,σc,i2)⇒P(xi∣c)=2πσc,i1exp(−2σc,i2(xi−μc,i)2)其中正态分布的参数可以用极大似然估计法推得: μ c , i \mu_{c,i} μc,i和 σ c , i 2 \sigma _{c,i}^2 σc,i2,即为第 c c c类样本在第 i i i个属性上取值的均值和方差。
注意一下,这里讲的是服从一元正态分布,上面讲的是多元正态分布。但是道理都一样,只需要把前面讲的多元正态分布的概率密度函数换成一元正态分布的概率密度函数,按照同样法方法,分别对 μ c , i \mu_{c,i} μc,i和 σ c , i 2 \sigma _{c,i}^2 σc,i2求一阶偏导,令其等于零,就可以解出 μ c , i \mu_{c,i} μc,i和 σ c , i 2 \sigma _{c,i}^2 σc,i2。
对于 P ( x i ∣ c ) P(x_i|c) P(xi∣c):,若样本的第 i i i个属性 x i x_i xi取值为离散值:同样根据极大似然估计法,可以用其频率值作为其概率值的估计值,也即: P ( x i ∣ c ) = ∣ D c , x i ∣ ∣ D c ∣ P(x_i|c)=\frac{|D_{c,x_i}|}{|D_c|} P(xi∣c)=∣Dc∣∣Dc,xi∣其中, D c , x i D_{c,x_i} Dc,xi表示 D c D_c Dc中在第 i i i个属性上取值为 x i x_i xi的样本组成的集合。
为什么在 x i x_i xi取值为离散值的情形下,用极大似然估计法得到的概率值和频率值是相等的呢?下面举一个例子,做一个详细的说明。
例:现将一枚6面骰子抛掷10次,抛掷出的点数分别为2、3、2、5、4、6、1、3、4、2,试基于此抛掷结果估计这枚骰子抛掷出各个点数的概率。
为什么要举这样的例子呢?骰子抛掷出各种点数和离散属性可能取到的各种值是同一种场景,所以用极大似然估计法去估计骰子抛掷出各种点数的概率等价于用极大似然估计法去估计离散属性取到各种情况的概率。
如果用极大似然估计法最后估计出来骰子抛掷出各个点数的概率就等于频率值的话,同样的,用极大似然估计法去估计离散属性取到各种值的概率同样也等于它们的频率。
下面用极大似然估计法来估计这枚骰子抛掷出各个点数的概率。首先设这枚骰子抛掷出点数 i i i的概率为 P i P_i Pi,根据极大似然估计法可以写出似然函数为: L ( θ ) = P 1 ∗ P 2 3 ∗ P 3 2 ∗ P 4 2 ∗ P 5 ∗ P 6 L(\theta)=P_1*P_2^3*P_3^2*P_4^2*P_5*P_6 L(θ)=P1∗P23∗P32∗P42∗P5∗P6为了便于后续计算,通常将其写成对数似然函数的形式: L L ( θ ) = l n L ( θ ) = l n ( P 1 ∗ P 2 3 ∗ P 3 2 ∗ P 4 2 ∗ P 5 ∗ P 6 ) LL(\theta)=ln\space L(\theta)=ln(P_1*P_2^3*P_3^2*P_4^2*P_5*P_6) LL(θ)=ln L(θ)=ln(P1∗P23∗P32∗P42∗P5∗P6)利用对数的运算法则,可以写成: L L ( θ ) = l n L ( θ ) = l n P 1 + 3 l n P 2 + 2 l n P 3 + 2 l n P 4 + l n P 5 + l n P 6 LL(\theta)=ln\space L(\theta)=ln\space P_1+3ln\space P_2+2ln\space P_3+2ln\space P_4 + ln\space P_5+ln\space P_6 LL(θ)=ln L(θ)=ln P1+3ln P2+2ln P3+2ln P4+ln P5+ln P6下面我们的目标是要求 P 1 P_1 P1, P 2 P_2 P2, P 3 P_3 P3, P 4 P_4 P4, P 5 P_5 P5, P 6 P_6 P6,使得对数似然函数达到最大值。在进行求解之前,有一点需要明确一下, P i P_i Pi之间满足如下约束: P 1 + P 2 + P 3 + P 4 + P 5 + P 6 = 1 P_1+P_2+P_3+P_4+P_5+P_6=1 P1+P2+P3+P4+P5+P6=1所以此时最大化对数似然函数属于带约束的最优化问题,也即: m a x L L ( θ ) = l n P 1 + 3 l n P 2 + 2 l n P 3 + 2 l n P 4 + l n P 5 + l n P 6 max \space \space LL(\theta)=ln\space P_1+3ln\space P_2+2ln\space P_3+2ln\space P_4 + ln\space P_5+ln\space P_6 max LL(θ)=ln P1+3ln P2+2ln P3+2ln P4+ln P5+ln P6 s . t . P 1 + P 2 + P 3 + P 4 + P 5 + P 6 = 1 s.t. \space \space P_1+P_2+P_3+P_4+P_5+P_6=1 s.t. P1+P2+P3+P4+P5+P6=1
为了求解带约束的最优化问题,现在不加证明地给出一个结论。
定理:对于一个优化问题
m
i
n
f
(
x
)
min \space \space f(x)
min f(x)
s
.
t
.
g
i
(
x
)
≤
0
(
i
=
1
,
.
.
.
,
n
)
s.t. \space \space g_i(x)\leq 0 \space \space(i=1,...,n)
s.t. gi(x)≤0 (i=1,...,n)
h
j
(
x
)
=
0
(
j
=
1
,
.
.
.
,
n
)
\space \space \space \space \space \space \space \space h_j(x)=0 \space \space(j=1,...,n)
hj(x)=0 (j=1,...,n)若
f
(
x
)
f(x)
f(x),
g
i
(
x
)
g_i(x)
gi(x),
h
j
(
x
)
h_j(x)
hj(x)一阶连续可微,并且
f
(
x
)
f(x)
f(x),
g
i
(
x
)
g_i(x)
gi(x)是凸函数,
h
j
(
x
)
h_j(x)
hj(x)是线性函数,那么满足如下KKT条件的点
x
∗
x^*
x∗一定是优化问题的最优解。
{
▽
x
L
(
x
∗
,
μ
∗
,
λ
∗
)
=
▽
f
(
x
∗
)
+
∑
i
=
1
n
μ
i
∗
▽
g
i
(
x
∗
)
+
∑
j
=
1
m
λ
j
∗
▽
h
j
(
x
∗
)
=
0
h
j
(
x
∗
)
=
0
g
i
(
x
∗
)
≤
0
μ
i
∗
≥
0
μ
i
∗
g
i
(
x
∗
)
=
0
\left\{\begin{matrix} \triangledown _xL(x^*,\mu^*,\lambda ^*)=\triangledown f(x^*)+\sum_{i=1}^n\mu_{i}^*\triangledown g_i(x^*)+\sum_{j=1}^m\lambda_j^*\triangledown h_j(x^*)=0\\ h_j(x^*)=0\\ g_i(x^*)\leq0\\ \mu_i^*\geq 0\\ \mu_i^*g_i(x^*)=0 \end{matrix}\right.
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧▽xL(x∗,μ∗,λ∗)=▽f(x∗)+∑i=1nμi∗▽gi(x∗)+∑j=1mλj∗▽hj(x∗)=0hj(x∗)=0gi(x∗)≤0μi∗≥0μi∗gi(x∗)=0
对这个定理证明感兴趣的同学可以查阅参考文献《最优化基础理论与方法》。
我们怎么把这个定理用到我们提出的优化问题上呢?这个定理的优化问题是最小化问题,所以需要把这个定理改造一下,首先把 m i n min min改成 m a x max max, f ( x ) f(x) f(x)前就得加一个 − - −;同时把不等式约束删除,因为刚才需要求解的最优化是不含有不等式约束的,所以和 g i ( x ) g_i(x) gi(x)有关的都可以删除。
由于 P i P_i Pi之间满足如下约束: P 1 + P 2 + P 3 + P 4 + P 5 + P 6 = 1 P_1+P_2+P_3+P_4+P_5+P_6=1 P1+P2+P3+P4+P5+P6=1所以此时最大化对数似然函数属于带约束的最优化问题,也即: m a x L L ( θ ) = l n P 1 + 3 l n P 2 + 2 l n P 3 + 2 l n P 4 + l n P 5 + l n P 6 max \space \space LL(\theta)=ln\space P_1+3ln\space P_2+2ln\space P_3+2ln\space P_4 + ln\space P_5+ln\space P_6 max LL(θ)=ln P1+3ln P2+2ln P3+2ln P4+ln P5+ln P6 s . t . P 1 + P 2 + P 3 + P 4 + P 5 + P 6 = 1 s.t. \space \space P_1+P_2+P_3+P_4+P_5+P_6=1 s.t. P1+P2+P3+P4+P5+P6=1观察第一个公式中的每一个 l n P i lnP_i lnPi,都是对数函数,对数函数都是凹函数,也就是开口向下。由六个一元凹函数组成的函数一定还是一个凹函数,所以对数似然函数 L L ( θ ) LL(\theta) LL(θ)也是一个凹函数。既然目标函数是一个凹函数,就可以用改造后的定理,下面只需要写成这个优化问题的拉格朗日函数,然后对拉格朗日函数求梯度,找梯度等于零的点就是最优解。
由拉格朗日乘子法可得拉格朗日函数为 £ ( θ , λ ) = l n P 1 + 3 l n P 2 + 2 l n P 3 + 2 l n P 4 + l n P 5 + l n P 6 + λ ( P 1 + P 2 + P 3 + P 4 + P 5 + P 6 − 1 ) \pounds (\theta,\lambda)=ln\space P_1+3ln\space P_2+2ln\space P_3+2ln\space P_4 + ln\space P_5+ln\space P_6+\lambda(P_1+P_2+P_3+P_4+P_5+P_6-1) £(θ,λ)=ln P1+3ln P2+2ln P3+2ln P4+ln P5+ln P6+λ(P1+P2+P3+P4+P5+P6−1)对于一个多元函数的梯度其实就是各个偏导数组成的一个向量。梯度等于零,那也就意味着我们多元函数的各个偏导数等于零。所以接下来就对拉格朗日函数关于 P i P_i Pi求偏导,然后令其等于0可得 ∂ £ ( θ , λ ) ∂ P 1 = ∂ ∂ P 1 [ l n P 1 + 3 l n P 2 + 2 l n P 3 + 2 l n P 4 + l n P 5 + l n P 6 + λ ( P 1 + P 2 + P 3 + P 4 + P 5 + P 6 − 1 ) ] = 0 \frac{\partial \pounds (\theta,\lambda)}{\partial P_1}=\frac {\partial}{\partial P_1}[ln\space P_1+3ln\space P_2+2ln\space P_3+2ln\space P_4 + ln\space P_5+ln\space P_6+\lambda(P_1+P_2+P_3+P_4+P_5+P_6-1)]=0 ∂P1∂£(θ,λ)=∂P1∂[ln P1+3ln P2+2ln P3+2ln P4+ln P5+ln P6+λ(P1+P2+P3+P4+P5+P6−1)]=0 = ∂ ∂ P 1 ( l n P 1 + λ P 1 ) = 0 =\frac {\partial}{\partial P_1}(ln \space P_1+\lambda P_1)=0 =∂P1∂(ln P1+λP1)=0 = 1 P 1 + λ = 0 ⇒ λ = − 1 P 1 =\frac{1}{P_1}+\lambda=0\Rightarrow \lambda=-\frac{1}{P_1} =P11+λ=0⇒λ=−P11同理可以求得: λ = − 1 P 1 = − 3 P 2 = − 2 P 3 = − 2 P 4 = − 1 P 5 = − 1 P 6 \lambda=-\frac{1}{P_1}=-\frac{3}{P_2}=-\frac{2}{P_3}=-\frac{2}{P_4}=-\frac{1}{P_5}=-\frac{1}{P_6} λ=−P11=−P23=−P32=−P42=−P51=−P61又因为 P 1 + P 2 + P 3 + P 4 + P 5 + P 6 = 1 P_1+P_2+P_3+P_4+P_5+P_6=1 P1+P2+P3+P4+P5+P6=1所以最终解得 P 1 = 1 10 , P 2 = 3 10 , P 3 = 2 10 , P 4 = 2 10 , P 5 = 1 10 , P 6 = 1 10 P_1=\frac{1}{10},P_2=\frac{3}{10},P_3=\frac{2}{10},P_4=\frac{2}{10},P_5=\frac{1}{10},P6=\frac{1}{10} P1=101,P2=103,P3=102,P4=102,P5=101,P6=101此时抛掷出各个点数的概率值与其频率值相等。