机器学习(三):朴素贝叶斯+贝叶斯估计+BP人工神经网络习题手算|手工推导与习题计算

1.有 1000 个水果样例. 它们可能是香蕉,橙子或其它水果,已知每个水果的 3 种特性:是否偏长、是否甜、颜色是否是黄色

类型 不长 不甜 黄色 非黄 Total
香蕉 400 100 350 150 450 50 500
橙子 0 300 150 150 300 0 300
其它 100 100 150 50 50 150 200
Total 500 500 650 350 800 200 1000

根据上表数据,分别利用朴素贝叶斯分类贝叶斯估计方法,对一个(长,甜,黄色)水果进行识别,判断该水果属于:香蕉,橙子或其它水果哪一类?

解:

条件一致,舍去分母,加上分母可以将 正比于 替换为 等号

\(P(长,甜,黄色)=P(长,甜,黄色∣香蕉)×P(香蕉)+P(长,甜,黄色∣橙子)×P(橙子)+P(长,甜,黄色∣其他水果)×P(其他水果)\)

朴素贝叶斯分类方法:

\(P(香蕉 | 长,甜,黄色)\propto P(长 | 香蕉) * P(甜 | 香蕉) * P(黄色 | 香蕉) * P(香蕉)=\frac{400}{500}\times \frac{350}{500}\times \frac{450}{500}\times \frac{500}{1000}=0.0252\)

\(P(橙子 | 长,甜,黄色) \propto P(长 | 橙子) * P(甜 | 橙子) * P(黄色 | 橙子) * P(橙子)=\frac{0}{300}\times \frac{150}{300}\times \frac{300}{300}\times \frac{300}{1000}=0.0\)

\(P(其它 | 长,甜,黄色) \propto P(长 | 其它) * P(甜 | 其它) * P(黄色 | 其它) * P(其它)=\frac{100}{200}\times \frac{150}{200}\times \frac{50}{200}\times \frac{200}{1000}=0.01875\)

直接选择最大概率值就好了,即根据朴素贝叶斯分类,该水果属于香蕉.

贝叶斯估计方法:

设平滑参数\(a\)为1,其中特征可能数\(k\)都为2

\(P(香蕉 | 长,甜,黄色)\propto P(长 | 香蕉) * P(甜 | 香蕉) * P(黄色 | 香蕉) * P(香蕉)=\frac{400+1}{500+2}\times \frac{350+1}{500+2}\times \frac{450+1}{500+2}\times \frac{500}{1000}=0.025089\)

\(P(橙子 | 长,甜,黄色) \propto P(长 | 橙子) * P(甜 | 橙子) * P(黄色 | 橙子) * P(橙子)=\frac{0+1}{300+2}\times \frac{150+1}{300+2}\times \frac{300+1}{300+2}\times \frac{300}{1000}=0.0\)

\(P(其它 | 长,甜,黄色) \propto P(长 | 其它) * P(甜 | 其它) * P(黄色 | 其它) * P(其它)=\frac{100+1}{200+2}\times \frac{150+1}{200+2}\times \frac{50+1}{200+2}\times \frac{200}{1000}=0.01875\)

结果依然不变,即根据朴素贝叶斯估计,该水果属于香蕉.

解析:

首先,我们需要使用贝叶斯定理计算在给定(长,甜,黄色)水果的情况下,该水果属于每个类别的概率。由于在这个问题中每个特征是二元的(要么是,要么不是),因此我们可以使用朴素贝叶斯分类方法。对于一个测试水果,我们需要计算以下每个类别的条件概率,从而确定它最可能属于哪个类别:

\(P(香蕉 | 长,甜,黄色) \propto P(长 | 香蕉) * P(甜 | 香蕉) * P(黄色 | 香蕉) * P(香蕉)\)

\(P(橙子 | 长,甜,黄色) \propto P(长 | 橙子) * P(甜 | 橙子) * P(黄色 | 橙子) * P(橙子)\)

\(P(其它 | 长,甜,黄色) \propto P(长 | 其它) * P(甜 | 其它) * P(黄色 | 其它) * P(其它)\)

其中\(P(类别)\)是每个类别的先验概率,可以通过将对应行中的总数除以总样本数进行计算。例如,对于香蕉类别,\(P(香蕉) = 500/1000 = 0.5\).

而条件概率\(P(特征 | 类别)\)可以通过对应的条目计算,例如对于“长”特征和香蕉类别,\(P(长 | 香蕉)= 400/500 = 0.8\)

因此,对于一个(长,甜,黄色)水果,每个类别的朴素贝叶斯得分如下:

类别 香蕉 橙子 其它
得分 0.25200 0.00000 0.01875

因此,该水果最有可能属于香蕉类别。

然而,朴素贝叶斯分类方法受极端数据点的影响较大,因此我们可以使用贝叶斯估计方法来缓解这种情况。具体来说,对于每个类别的每个特征,我们可以引入一个小的平滑参数进行修正。假设平滑参数为a,那么对于任意特征x和类别y,我们可以按照以下方式计算条件概率:

\(P(x | y) = \frac{count(x, y) + a}{count(y) + a * NumPossibleValues(x)}\)

其中,\(count(x, y)\)是在y类别下x特征的计数\(count(y)\)是y类别的样本总数,\(NumPossibleValues(x)\)是x特征可能的取值,即2。

选择a的值通常是根据经验确定的,但在这里我们可以使用a = 1。

使用贝叶斯估计方法进行相同的分类,我们得到以下朴素贝叶斯估计得分表:

类别 香蕉 橙子 其它
得分 0.25089 0.00049 0.01887

在这种情况下

附录:

朴素贝叶斯分类是基于贝叶斯定理的一种分类算法,它假设各个特征之间相互独立,因此被称为“朴素”。

朴素贝叶斯分类的计算流程如下:

  1. 准备训练数据集,包括特征和对应的类别标签。

  2. 计算每个类别出现的概率 \(P(Y)\),并计算每个特征在每个类别下的概率 \(P(X_i|Y)\),即给定类别 \(Y\) 的条件下,每个特征 \(X_i\) 出现的概率。

  3. 对于一个新的样本,计算其属于每个类别的条件概率 \(P(Y|X)\),即在给定特征 \(X\) 的情况下,属于类别 \(Y\) 的概率。根据贝叶斯定理,有:

    \(P(Y|X) = \frac{P(X|Y)P(Y)}{P(X)}\)

    其中,\(P(X|Y)\) 是根据训练数据估算出的在类别 \(Y\) 下特征 \(X\) 出现的条件概率,\(P(Y)\) 是训练数据中类别 \(Y\) 出现的概率,\(P(X)\) 是特征 \(X\) 的边缘概率,可以通过\(P(X)=\sum_{Y}P(X|Y)P(Y)\)计算得到。

  4. 根据上述公式计算每个类别下给定样本的条件概率,确定样本所属的类别。

如果给出的是多个特征,朴素贝叶斯分类的计算方式和单个特征相同,只是需要将所有特征的条件概率相乘。

具体来说,设一个样本的特征向量为 \(X=(X_1,X_2,\cdots,X_n)\),其中 \(n\) 是特征的数量。朴素贝叶斯模型假设特征之间相互独立,因此可以将样本属于类别 \(Y\) 的条件概率表示为:

\[P(Y|X)=\frac{P(X|Y)P(Y)}{P(X)}=\frac{P(Y)\prod_{i=1}^{n}P(X_i|Y)}{P(X)} \]

其中,\(P(Y)\) 是类别 \(Y\) 出现的概率,可以通过训练集中出现类别 \(Y\) 的样本数占总样本数的比例进行估计;\(P(X_i|Y)\) 是给定类别 \(Y\) 的条件下特征 \(X_i\) 出现的概率,可以通过训练集中出现类别 \(Y\) 且特征 \(X_i\) 出现的样本数占出现类别 \(Y\) 的样本数的比例进行估计。

\(P(X)\) 是特征向量 \(X\) 的边缘概率,可以通过对所有可能的类别 \(Y\) 进行求和得到:

\[P(X)=\sum_{Y}P(Y)\prod_{i=1}^{n}P(X_i|Y) \]

然后,将计算得到的 \(P(Y|X)\) 按照概率从大到小排序,通常选择概率最大的类别作为样本所属的类别。

贝叶斯估计方法,也称为拉普拉斯平滑(Laplace smoothing),是贝叶斯分类器中一种常用的平滑方法。它的主要思想是对于没有在训练数据中出现过的特征值,仍然分配一个非零的概率值,以避免在计算概率时出现分母为零的情况。

具体来说,设某个特征在训练数据集中出现的次数为 \(N\),特征的可能取值个数为 \(k\),则在贝叶斯估计中,我们将原本的频率估计公式 \(P(X = x_i|Y = y_j) = \frac{N_{i,j}}{N_j}\) 改为:

\(P_{\text{smooth}}(X = x_i|Y = y_j) = \frac{N_{i,j} + \alpha}{N_j + \alpha k}\)

其中,\(N_{i,j}\) 表示在训练数据集中,特征 \(X = x_i\) 且标签 \(Y = y_j\) 的样本数,\(N_j\) 表示标签为 \(Y = y_j\) 的样本数,\(\alpha\) 是一个平滑参数,通常取值为 1。这样,在计算未出现过的特征值的概率时,分子仍然为 1,分母不为零,从而避免了出现无法计算的情况。

贝叶斯估计方法的优点是可以有效地避免过拟合,提高模型的泛化能力。但是,在实际应用中,由于使用了额外的参数 \(\alpha\),需要进行参数调整,否则可能会影响模型的表现。

2.以公式$ f(x) = tansig(x)$ 为激活函数,求BP网络输出层和隐含层的权重调整公式

解:

对于一个三层神经网络,输入层称为i,隐含层称为j,输出层称为k.

当激活函数为\(f(x)=tansig(x)=Tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}\)

其导数为\(f^{\prime}(x)=1-f(x) ^2\)

之前bp神经网络推导的结果,对于输出层:

\[E = \frac { 1 } { 2 } \sum _ { k = 1 } ^ { L } ( y _ { k } - O _ { k } ) ^ { 2 } \]

\[\Delta w_{j k}=-\eta \frac{\partial E}{\partial w_{j k}}=-\eta \frac{\partial E}{\partial I_{k}} \frac{\partial I_{k}}{\partial w_{j k}}=-\eta \frac{\partial E}{\partial I_{k}} O_{j}=\eta \delta_{k} O_{j} \]

现在我们需要求\(\delta_{k}\)的值

\[\delta _ { k } = - \frac { \partial E } { \partial O _ { k } } \frac { \partial O _ { k } } { \partial I _ { k } } \]

考虑到输出层的第k个节点的输入和输出的关系为:\(O_k=f(I_k)\)

\[\frac { \partial E } { \partial O _ { k } } = - ( y _ { k } - O _ { k } ) \]

\[\frac { \partial O _ { k } } { \partial I _ { k } } = f ^{\prime}( I _ { k } )=1-f(I_k)^2=1-O_k^2 \]

所以

\[\delta_k=(1-O_k^2)(y_k-O_k) \]

因此,隐含层到输出层的连接权值的修正公式为:

\[\Delta w _ { j k } = n \delta _ { k } O _ { j } = \eta O _ { j } ( 1 - O _ { k } ^2) ( y _ { k } - O _ { k } ) \]

对于隐含层:

\[\Delta w _ { i j } = - \eta \frac { \partial E } { \partial w _ { i j } } = - \eta \frac { \partial E } { \partial I _ { j } } \frac { \partial I _ { j } } { \partial w _ { i j } } = \eta \delta_j O_i \]

\[\delta _ { j } = - \frac { \partial E } { \partial I _ { j } } = - \frac { \partial E } { \partial O _ { j } } \frac { \partial O _ { j } } { \partial I _ { j } } \]

\[\frac{\partial E}{\partial O_{j}}=\sum_{k=1}^{L} \frac{\partial E}{\partial I_{k}} \frac{\partial I_{k}}{\partial O_{j}}=\sum_{k=1}^{L} \frac{\partial E}{\partial I_{k}} \frac{\partial}{\partial O_{j}}\left(\sum_{j=0}^{M}\left(w_{j k} O_{j}\right)\right)=-\sum_{k=1}^{L} \delta_{k} w_{j k} \]

考虑到输出层的第k个节点的输入和输出的关系为:\(O_j=f(I_j)\)

\[\frac{\partial O_{j}}{\partial I_{j}}=f ^ \prime \left(I_{j}\right)=1-f\left(I_{j}\right)^2=1-O_{j}^2 \]

那么:

\[\delta _ { j } = ( 1 - O _ { j }^2 ) \sum _ { k = 1 } ^ { L } \delta _ { k } w _ { jk } \]

因此,输入层到隐含层的连接权值的修正公式为:

\[\Delta w_{i j}=\eta \delta_{j} O_{i}=\eta O_{i}\left(1-O_{j}^2\right) \sum_{k=1}^{L} \delta_{k} w_{j k} \]

posted @ 2023-03-28 20:53  孤飞  阅读(942)  评论(0编辑  收藏  举报