最近又看了很多贝叶斯算法的一些文章,好多的文章对这个算法解释起来会放一大堆公式,对代数不好的人来说真的很头疼。本文尝试着用大白话写写这个算法,再做个例子,帮助大家理解和运用。
Naive Bayes is a probabilistic machine learning algorithm based on the Bayes Theorem, used in a wide variety of classification tasks.
贝叶斯算法是分类问题的重要解决方法,简单但是很强大,在文本分类、垃圾邮件识别等高维数据(特征超多的数据集)的机器学习领域有重要应用。基本逻辑就是很多的时候我们很容易知道在不同的因变量的水平上自变量的分布的怎样的,我们要解决的问题是知道了特征的情况然后去预测因变量,其实就是:from P(X|Y), known from the training dataset, to find P(Y|X).朴素贝叶斯算法架起了从from P(X|Y)to find P(Y|X)的桥梁。
要很好的理解朴素贝叶斯的整个过程首先要弄清楚两个东西,一个是条件概率、一个是贝叶斯理论。
条件概率和贝叶斯定理
我们什么理论都不要想,先做一个例子:100个人的数据如下表,按照身份可以分为教师、学生。按照性别又可以分为男性女性。现在我们尝试得到男性中教师的概率是多少(把性别当做特征,把身份当做结局,这个问题便是知道特征求结局的概率的一个问题)。
这个男性中教师的概率就是条件概率,我们不是单纯的求教师的概率而是先给了个条件(这个人首先得是男性)。这个时候计算概率的分母会变化。
when you say the conditional probability of A given B, it denotes the probability of A occurring given that B has already occurred.
这个问题你会怎么做?可以直接找到男教师有多少(看表应该是12),然后用这个数字除以男性(看表应该是60人),可以得到12/60=0.12。就得到男性中教师的概率是0.2。
上面的12比上100就是0.12为同时是男性又是教师的概率。60比上100就是0.6为数据中男性的概率,我们用0.12/0.6得到了0.2的结果其实我们就是在不自觉地运行下面的公式:
公式中,teacher和male可以互换位置。于是就有