朴素贝叶斯

似然概念

概率和似然是两个概念。

似然(likelihood),公式为:

L(θ∣X)=P(X∣θ) L(\theta|X)=P(X|\theta) L(θ∣X)=P(X∣θ)

公式里XXX为已经拿到的观测数据,θ\thetaθ为自变量。

举个例子,设XXX为抛硬币概率两正一反,单次抛硬币正反概率均为0.5.这个0.5就是公式里的θ\thetaθ。

如果θ=0.5\theta=0.5θ=0.5,那么两正一反需要抛3次硬币,总情况为8次,在这8次为232^323,两正一反为组合数(31)=3\binom{3}{1}=3(13)=3。所以概率为3/83/83/8。

那么似然,是已经观测到结果后,给出一个方程,也就是说似然是一个函数,不是一个固定的值。

比如上面的例子,似然为:

L(θ)=(31)θ2(1−θ) L(\theta)=\binom{3}{1}\theta^2(1-\theta) L(θ)=(13)θ2(1−θ)

极大似然估计(MLE),就是求似然为最大值时的概率,比如上述例子,L(θ)L(\theta)L(θ)在θ=2/3\theta=2/3θ=2/3时取得最大值,说明了观察到两正一反,最大的可能是硬币本身不均匀有2/3的概率出现正面。此时:

L(θ)=3×2232×(1−23)=3×49×13=4/9 L(\theta)=3\times\frac{2^2}{3^2}\times(1-\frac23)=\frac{3\times4}9\times\frac13=4/9 L(θ)=3×3222×(1−32)=93×4×31=4/9

这个数值等于在θ=23\theta=\frac23θ=32时,出现两正一反的概率。所以有公式:

L(θ∣X)=P(X∣θ) L(\theta|X)=P(X|\theta) L(θ∣X)=P(X∣θ)

贝叶斯公式

贝叶斯公式为:

p(y∣X)=p(X∣y)p(y)p(X) p(y|X)=\frac{p(X|y)p(y)}{p(X)} p(y∣X)=p(X)p(X∣y)p(y)

公式里的四个ppp都是概率。

贝叶斯公式里四个东西有四个概念:

  1. 后验,p(y∣X)p(y|X)p(y∣X),已经拿到观测XXX,推测yyy发生的概率,是贝叶斯公式的输出;
  2. 条件似然,p(X∣y)=L(y∣X)p(X|y)=L(y|X)p(X∣y)=L(y∣X),固定特征XXX下,yyy的似然,也就是固定yyy,XXX发生的概率;
  3. 先验,p(y)p(y)p(y),事前固有概率,没有任何观测数据XXX时得到yyy的发生的概率。
  4. 证据,p(X),不管yyy是什么,XXX发生的概率。

如果换成中文是:

后验=条件似然×先验证据 后验=\frac{条件似然\times 先验}{证据} 后验=证据条件似然×先验

以扔3次硬币,为例子,假设yyy是第三次扔硬币出现反面,观测XXX是前两次扔硬币出现正面。那么这四个概念具体如下:

  1. 后验,已经知道扔了两次硬币出现正面,第三次扔硬币出现反面的概率;
  2. 条件似然,第三次扔硬币为反面,前两次出现正面的概率;
  3. 先验,第三次扔硬币出现反面的概率;
  4. 证据,前两次扔硬币出现正面的概率;
    后验的本质:
    p(y∣X)=Xy同时发生的概率X的概率 p(y|X)=\frac{Xy同时发生的概率}{X的概率} p(y∣X)=X的概率Xy同时发生的概率
    分子的意义:
    Xy同时满足的概率=y的概率×固定y时X发生的概率 Xy同时满足的概率=y的概率\times 固定y时X发生的概率 Xy同时满足的概率=y的概率×固定y时X发生的概率
    把分母移到左边更容易理解:
    X的概率×固定X时y发生的概率=Xy同时发生的概率=y的概率×固定y时X发生的概率 X的概率\times固定X时y发生的概率=Xy同时发生的概率=y的概率\times 固定y时X发生的概率 X的概率×固定X时y发生的概率=Xy同时发生的概率=y的概率×固定y时X发生的概率
    换成数学符号:
    p(X)p(y∣X)=p(y)p(X∣y) p(X)p(y|X)=p(y)p(X|y) p(X)p(y∣X)=p(y)p(X∣y)
    换成概念:
    证据×后验=先验×条件似然 证据\times 后验=先验\times条件似然 证据×后验=先验×条件似然

记忆诀窍:

  1. 先验后验都是yyy发生的概率,后验有XXX已经发生的条件,后就是加上证据后;
  2. 证据就是XXX发生了;
  3. 条件似然就是由事实yyy反推证据,所以叫似然;

朴素贝叶斯分类逻辑

p(y∣X)=p(y)p(X∣y)p(X) {p}(y|X)=\frac{p(y)p(X|y)}{p(X)} p(y∣X)=p(X)p(y)p(X∣y)

模型核心,预测事实的分类yyy为后验概率最大的类别:

y^=arg⁡max⁡yp(y∣X)=p(y)p(X∣y)p(X) \hat{y}=\arg \max_y {p}(y|X)=\frac{p(y)p(X|y)}{p(X)} y^=argymaxp(y∣X)=p(X)p(y)p(X∣y)

arg⁡max⁡\arg \maxargmax的含义是求最大值时自变量的取值,比如arg⁡max⁡x1−x2=0\arg \max_x1-x^2=0argmaxx1−x2=0。表示x=0x=0x=0时取得最大值.

首先,丢弃P(X)P(X)P(X),因为特征这个值全局与yyy无关,不影响arg⁡max⁡\arg \maxargmax的计算。

所以公式简化为:

y^=arg⁡max⁡yp(y∣X)=arg⁡max⁡yp(y)p(X∣y) \hat{y}=\arg \max_y {p}(y|X)=\arg \max_y p(y)p(X|y) y^=argymaxp(y∣X)=argymaxp(y)p(X∣y)

继续把事实yyy发生时的证据XXX展开:

p(X∣y)=∏inp(Xi∣y) p(X|y)=\prod_i^np(X_i|y) p(X∣y)=i∏np(Xi∣y)

所以模型展开为:

y^=arg⁡max⁡yp(y∣X)=arg⁡max⁡yp(y)∏inp(Xi∣y) \hat{y}=\arg \max_y {p}(y|X)=\arg \max_y{p(y)\prod_i^np(X_i|y)} y^=argymaxp(y∣X)=argymaxp(y)i∏np(Xi∣y)

五种朴素贝叶斯

算法 特征数据分布
高斯朴素贝叶斯 特征在每个类别里正态分布
多项式朴素贝叶斯 特征在每个类别里多项式分布
伯努利朴素贝叶斯 每个特征都是布尔值
分类朴素贝叶斯 特征都是枚举类型
补集朴素贝叶斯 正负样本差距极大的文本分类

代码示例

python 复制代码
import pandas as pd  
  
from sklearn.preprocessing import StandardScaler  
from sklearn.decomposition import PCA  
from sklearn.pipeline import Pipeline  
  
from sklearn.naive_bayes import GaussianNB  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import classification_report  
# 红酒数据  
data = pd.read_csv(r'C:\Users\yujia\PycharmProjects\ai-learn\MLDL\data\wine.csv')  
X = data.iloc[:, :-1]  
y = data.iloc[:, -1]  
  
# 拆分训练和测试y  
X_tran, X_test, y_tran, y_test = train_test_split(  
    X, y, test_size=0.2, random_state=22, stratify=y)  
  
steps = [  
    ('scaler', StandardScaler()),  
    ('pca', PCA(n_components=0.95)),  
    ('bayes', GaussianNB())  
]  
# 训练  
pipe = Pipeline(steps = steps)  
pipe.fit(X_tran, y_tran)  
  
# 评估  
y_pred = pipe.predict(X_test)  
print(pipe.score(X_test, y_test))  
  
# 3. 精确率、召回率、F1-score 完整报告  
print("分类评估报告:")  
print(classification_report(y_test, y_pred))

执行结果:

shell 复制代码
0.525
分类评估报告:
              precision    recall  f1-score   support

           0       0.40      1.00      0.57         2
           1       0.00      0.00      0.00        11
           2       0.65      0.59      0.62       136
           3       0.47      0.59      0.52       128
           4       0.44      0.28      0.34        40
           5       0.00      0.00      0.00         3

    accuracy                           0.53       320
   macro avg       0.33      0.41      0.34       320
weighted avg       0.52      0.53      0.52       320

可以看到评分并不好,和瞎猜差不多。