👾 Day 3: 朴素贝叶斯
1️⃣【技术债与演进动机】The Technical Debt & Evolution
传统分类器需要估计联合概率分布,参数多且易过拟合。朴素贝叶斯通过条件独立假设简化模型。
2️⃣【直觉建立】Visual Intuition
想象判断一封邮件是否是垃圾邮件:根据关键词出现的概率,结合先验经验,计算后验概率。
🎬 B 站搜索:朴素贝叶斯 直观解释
3️⃣【符号解码字典】The Symbol Decoder
$P(c_k)$ → self.class_priors_[k] (类别先验概率)
$P(x^{(j)} | c_k)$ → self.feature_probs_[k, j] (条件概率)
$P(c_k | x)$ → posterior (后验概率)
$\alpha$ → alpha (拉普拉斯平滑系数)
4️⃣【核心推导】The Math
### 贝叶斯公式
$$P(c_k | x) = \frac{P(x | c_k) P(c_k)}{P(x)}$$
### 朴素条件独立假设
$$P(x | c_k) = P(x^{(1)}, x^{(2)}, ..., x^{(d)} | c_k) = \prod_{j=1}^{d} P(x^{(j)} | c_k)$$
### 后验概率最大化
$$\hat{y} = \text{argmax}_{c_k} P(c_k) \prod_{j=1}^{d} P(x^{(j)} | c_k)$$
### 拉普拉斯平滑
$$P(x^{(j)} = v | c_k) = \frac{\sum_{i=1}^{N} \mathbb{I}(x^{(i)(j)} = v, y^{(i)} = c_k) + \alpha}{\sum_{i=1}^{N} \mathbb{I}(y^{(i)} = c_k) + \alpha \cdot V}$$
其中 $V$ 是特征取值数量,$\alpha$ 是平滑系数。
5️⃣【工程优化点】The Optimization Bottleneck
需要统计所有特征 - 类别组合的频率,高维数据下计算量大。使用哈希表或稀疏矩阵优化。
6️⃣【今日靶机】The OJ Mission
🎯 任务:cd exercises/ && python3 day3_task.py
实现高斯朴素贝叶斯的 fit 和 predict 函数,在鸢尾花数据集上验证分类效果。