朴素贝叶斯算法的基本思想是建立特征 X X X与输出 Y Y Y 之间的联合概率分布 P ( X , Y ) P(X, Y) P(X,Y) ,在对给定的特征进行预测时,通过贝叶斯定理求出所有可能的输出 P ( X ∣ Y ) P(X | Y) P(X∣Y) ,取其中最大的作为预测结果。其优点是模型简单,效率高,在很多领域有广泛的使用。
生成学习算法与判别学习算法
生成学习算法与判别学习算法是监督学习的两种方式,今天要说的朴素贝叶斯算法是生成算法的一种,而之前讲的逻辑回归与后面将要学习的SVM则是属于判别学习方法,我们首先要搞清楚两种算法的区别。
贴一张图片,我觉得可以很直观的看出两种学习算法的区别。
对于监督学习来说,我们的目标始终是求出 P ( Y ∣ X ) P(Y|X) P(Y∣X) ,判别学习算法会直接对 P ( Y ∣ X ) P(Y|X) P(Y∣X)进行建模,例如在逻辑回归中 P ( Y ∣ X ; θ ) = h θ ( x ) y ( 1 − h θ ( x ) ) 1 − y P(Y|X;\theta)={h_\theta(x)}^{y}(1-{h_\theta(x)})^{1-y} P(Y∣X;θ)=hθ(x)y(1−hθ(x))1−y ,当有一组需要预测的样本时,我们可以直接判别出他的输出类别,在图中可以明显看出,实际上判别算法是生成了一条判别边界的,在边界的两边会输出不同结果。生成学习算法是对 P ( X , Y ) P(X, Y) P(X,Y)进行建模,在右图中,并不存在一个判别边界,而是对两类样本分别建模,当有一个红色小三角的输入时,根据条件概率公式分别计算出小三角属于蓝色以及黄色的概率,取较大的那个作为小三角的类别。
统计学理论基础
在了解朴素贝叶斯算法之前,我们需要一些统计学知识作为基础,下面的公式部分摘自《概率论与数理统计》,只是把其中的A,B换成了X,Y以方便理解。
- 条件概率公式
假设X, Y是两个事件,以下公式表示事件X发生的条件(前提)下,事件Y发生的概率。
P ( Y ∣ X ) = P ( X Y ) P ( X ) P(Y|X) = \frac{P(XY)}{P(X)} P(Y∣X)=P(X)P(XY)
- 条件概率的链式法则
P ( x 1 , x 2 , . . . , x n ) = P ( x 1 ) ∏ i = 2 n P ( x i ∣ x 1 , . . . , x i − 1 ) P(x_1 , x_2, ...,x_n) = P(x_1)\prod_{i=2}^{n}P(x_i|x_1,...,x_{i-1}) P(x1,x2,...,xn)=P(x1)i=2∏nP(xi∣x1,...,xi−1)
- 事件相互独立
假设X, Y是两个事件,若满足以下等式则称事件X,Y相互独立。
P ( X Y ) = P ( X ) P ( Y ) P(XY) = P(X) P(Y) P(XY)=P(X)P(Y)
- 全概率公式
如果事件Y1、Y2、Y3…Yn 构成一个完备事件组,即它们两两互不相容,其和为全集,则对任一事件X有
P ( X ) = ∑ n P ( X ∣ Y n ) P ( Y n ) P(X) = \sum_{n}^{}{P(X|Y_n)P(Y_n)} P(X)=n∑P(X∣Yn)P(Yn)
- 贝叶斯公式
由条件概率公式可得
P ( X Y ) = P ( X ) P ( Y ∣ X ) = P ( Y ) P ( X ∣ Y ) P(XY)=P(X)P(Y|X)=P(Y)P(X|Y) P(XY)=P(X)P(Y∣X)=P(Y)P(X∣Y)
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)
将全概率公式带入,即得贝叶斯公式
P ( Y n ∣ X ) = P (