概率基础
概率
概率表示为0到1之间的数字,含义是某一事件或者预测行为的可信程度,1值表示“事件为真”的情形肯定发生,或表述为预测为真;而0值表示“事件为真”这一情形为假。
条件概率
条件概率是带有某些(前提条件)背景约束下的概率问题。
联合概率
联合概率是指两个事件同时发生的概率。P(A, B)是A和B事件的发生都为真的概率。
例1:投硬币,A与B独立
例2:事件不独立。A表示今天下雨的事件、B表示明天会下雨的事件。今天下雨,明天还有可能下雨的:
联合概率为:对于任何A、B事件,如果任意一天下雨的机会是0.5,连续两天就不会是0.25,而是可能更高一点。
The Rules of Probability
sum rule: (求离散变量X的边缘概率分布)
product rule: (或称为条件概率的链式法则)
全概率公式
贝叶斯定理 (Bayes’ theorem)
- p(Y)称为先验概率,即在得到新数据前某一假设的概率。
- P(Y|X)称为后验概率,即在看到新数据后,我们要计算的该假设的概率。
- P(X|Y)是该假设下得到这一数据的概率,称为似然度。
- P(X)是在任何假设下得到这一数据的概率,称为标准化常量。
Naive Bayes classifier
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对于给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
优点:对无关特征的处理能力十分彪悍,无关特征会被自然忽略掉,朴素贝叶斯分类器学习和预测的速度都很快,并且不需要很大的存储空间。
假设:条件独立假设,所有特征需要相互独立。(实践中独立假设往往不成立,但是仍然能够达到非常好的效果)
原理:朴素贝叶斯的核心功能是跟踪哪个特征在哪个类别中出现。
即:
由条件独立假设(假设每个属性独立地对分类结果产生影响)可以得:
朴素贝叶斯对真实概率并不感兴趣,只是注重哪个类别更有可能:
即最大后验估计(Maximum a posteriori, MAP) :
朴素贝叶斯分类器的训练过程就是基于训练集来估计类先验概率P(C),并为每个属性估计条件概率P(F|C)
上式估计了文档d属于类别c的概率,假设文档长度为n_d,F_k是单词。
(极大似然估计)
应用:文本分类(垃圾邮件分类器、情感分类等)。
Engineering tricks
考虑零概率(未出现的词语和其他古怪情况)
计算 P(F|C) 时:加1平滑(加法平滑、拉普拉斯平滑),假装每个词语至少出现了一次。分子加1、分母加n。
(先验概率的贝叶斯估计):
lambda=0时就是极大似然估计,可能会出现所有估计的概率为0的情况,这时会影响到后验概率的计算结果,使分类产生偏差,解决这一问题的方法是使用贝叶斯估计。常取lambda=1,这时称为拉普拉斯平滑(Laplace smoothing)
拉普拉斯修正实际上假设了属性值和类别的均匀分布,在学习过程中额外引入了先验识。
考虑算术下溢
取对数:
概率值由 0-1 转换成 负无穷到0,较高的值预示正确的类别。
所以:
实现
sklearn.naive_bayes
- GaussianNB
- MultinomialNB
- BerboulliNB
《统计学习方法》 P47
《Think Bayes》
《Building Machine Learning Systems with Python》 P90
《Machine Learning in Action》 P53