朴素贝叶斯法
朴素贝叶斯法:简单而强大的概率分类器
朴素贝叶斯是机器学习中一种基于概率的分类方法,它像一位经验丰富的法官,通过已有的证据来推断最可能的结论。这种方法简单高效,特别适合处理文本分类等任务。
1. 基本思想
朴素贝叶斯的核心是贝叶斯定理,它告诉我们如何根据已知信息更新我们的信念。
想象一下:
- 你收到一封邮件,想知道它是否是垃圾邮件
- 你观察到这封邮件中有”免费”、”中奖”等词语
朴素贝叶斯会问:
- 一般来说,垃圾邮件占所有邮件的比例是多少?(先验概率)
- 如果是垃圾邮件,出现这些词的可能性有多大?(似然概率)
- 综合以上信息,这封邮件是垃圾邮件的可能性有多大?(后验概率)
用公式表示:
$$P(垃圾邮件|观察到的词) = \frac{P(观察到的词|垃圾邮件)P(垃圾邮件)}{P(观察到的词)}$$
“朴素”在哪里?朴素贝叶斯假设所有特征(如邮件中的每个词)都相互独立。这就像假设”免费”这个词出现的概率不受”中奖”这个词是否出现的影响。
2. 朴素贝叶斯分类器
分类时,朴素贝叶斯会计算”这封邮件是垃圾邮件的概率”和”这封邮件是正常邮件的概率”,然后选择概率较大的类别。
$$\hat{y} = \arg\max_{y} P(y) \prod_{i=1}^{n} P(x_i|y)$$
举例:判断一封含有”免费”和”朋友”的邮件
计算是垃圾邮件的概率:
- 垃圾邮件的先验概率:30%
- “免费”出现在垃圾邮件中的概率:80%
- “朋友”出现在垃圾邮件中的概率:20%
- 结果:30% × 80% × 20% = 4.8%
计算是正常邮件的概率:
- 正常邮件的先验概率:70%
- “免费”出现在正常邮件中的概率:10%
- “朋友”出现在正常邮件中的概率:60%
- 结果:70% × 10% × 60% = 4.2%
结论:这封邮件更可能是垃圾邮件(4.8% > 4.2%)
3. 常见的朴素贝叶斯模型
3.1 高斯朴素贝叶斯
适用于连续数值特征,比如身高、体重、温度等。
例子:根据身高、体重预测性别
- 假设男性身高服从均值为175cm、方差为36的正态分布
- 如果观察到一个人身高180cm,可以计算这个身高在男性分布中的概率
$$P(身高=180|男性) = \frac{1}{\sqrt{2\pi\cdot 36}} \exp\left(-\frac{(180 - 175)^2}{2\cdot 36}\right)$$
3.2 多项式朴素贝叶斯
适用于计数型特征,特别是文本分类。
例子:根据单词出现次数分类新闻
- 体育新闻中”比赛”、”得分”、”球员”等词出现频率高
- 政治新闻中”政策”、”国家”、”经济”等词出现频率高
3.3 伯努利朴素贝叶斯
适用于二元特征(有/无)的情况。
例子:判断电影类型
- 是否包含爆炸场景?(是/否)
- 是否有浪漫情节?(是/否)
- 是否出现外星生物?(是/否)
4. 算法优缺点
优点:
- 速度快:训练和预测都很快,就像快速浏览简历而不是深入阅读
- 小样本也能用:即使只有少量数据也能工作得不错
- 容易理解:模型逻辑清晰,像是基于几个简单规则的决策
- 处理高维数据:即使有成千上万个特征(如文章中的词汇量)也能高效处理
缺点:
- 独立性假设过强:特征间往往有联系,比如”纽约”和”曼哈顿”同时出现的概率比独立计算的要高
- 对极端值敏感:一个非常罕见的特征可能过度影响结果
- 零概率问题:如果某个词在训练数据的某类别中从未出现过,会导致整个概率变为零
5. 实际应用
- 垃圾邮件过滤:Gmail基于邮件内容判断是否为垃圾邮件
- 新闻分类:自动将新闻分到体育、政治、科技等类别
- 情感分析:判断产品评论是正面还是负面
- 疾病诊断:根据各种症状判断最可能的疾病
- 推荐系统:简单的内容推荐,如”喜欢这本书的人也喜欢…”
6. 代码示例
下面是使用Python实现的一个新闻分类例子:
1 |
|
通过这个简单的朴素贝叶斯模型,我们就能够相当准确地对新闻文本进行分类,展示了这种简单算法的强大之处。