似然概念
概率和似然是两个概念。
似然(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都是概率。
贝叶斯公式里四个东西有四个概念:
- 后验,p(y∣X)p(y|X)p(y∣X),已经拿到观测XXX,推测yyy发生的概率,是贝叶斯公式的输出;
- 条件似然,p(X∣y)=L(y∣X)p(X|y)=L(y|X)p(X∣y)=L(y∣X),固定特征XXX下,yyy的似然,也就是固定yyy,XXX发生的概率;
- 先验,p(y)p(y)p(y),事前固有概率,没有任何观测数据XXX时得到yyy的发生的概率。
- 证据,p(X),不管yyy是什么,XXX发生的概率。
如果换成中文是:
后验=条件似然×先验证据 后验=\frac{条件似然\times 先验}{证据} 后验=证据条件似然×先验
以扔3次硬币,为例子,假设yyy是第三次扔硬币出现反面,观测XXX是前两次扔硬币出现正面。那么这四个概念具体如下:
- 后验,已经知道扔了两次硬币出现正面,第三次扔硬币出现反面的概率;
- 条件似然,第三次扔硬币为反面,前两次出现正面的概率;
- 先验,第三次扔硬币出现反面的概率;
- 证据,前两次扔硬币出现正面的概率;
后验的本质:
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条件似然 证据×后验=先验×条件似然
记忆诀窍:
- 先验后验都是yyy发生的概率,后验有XXX已经发生的条件,后就是加上证据后;
- 证据就是XXX发生了;
- 条件似然就是由事实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^=argmaxyp(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)
argmax\arg \maxargmax的含义是求最大值时自变量的取值,比如argmaxx1−x2=0\arg \max_x1-x^2=0argmaxx1−x2=0。表示x=0x=0x=0时取得最大值.
首先,丢弃P(X)P(X)P(X),因为特征这个值全局与yyy无关,不影响argmax\arg \maxargmax的计算。
所以公式简化为:
y^=argmaxyp(y∣X)=argmaxyp(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^=argmaxyp(y∣X)=argmaxyp(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
可以看到评分并不好,和瞎猜差不多。