Naive Bayes Classifer介绍

Naive Bayes属于机器学习算法中的一种,机器学习分为监督学习和非监督学习,监督学习通常用于预测分类,简单的讲监督学习是需要人为参与给数据添加标签,比如人为地判断某段评论是正面还是负面。非监督学习是直接根据数据特征进行处理,常见的有聚类算法。
最基本的Naive Bayes公式为


其中P(A|B)表示B发生情况下A发生的概率,P(B|A)表示A发生情况下B发生的概率,P(A)表示A发生的概率,P(B)表示B发生的概率。
当条件变量为多个时,则公式扩展为

其中Y有不同的取值,yk表示其中的某一个值,X1...Xn为不同的特征,为了简化公式,其中分母项可以表示成

因为,最初公式可以表示为

为了简化问题,Naive Bayes假设X各变量在Y给定条件下条件独立,即

因此,最初公式可以表示为


简单的说,我们想要达到的目的是,当我面知道Xi的值的时候,我们根据之前已有的数据来判断Y的取值,因为对于Y的不同取值,分母的值是一样的,因此预测分类时,只需要计算Y为不同取值时的分子值即可得到其概率,选取最大的概率值对应的Y值即为我们想要的预测结果。


 实例:

为了更好地理解算法,我举一个简单的例子执行该算法并加以解释。
假设有如下数据:

是否购房 是否单身 是否拖欠贷款
单身 NO
已婚 NO
单身 NO
已婚 NO
单身 YES
已婚 NO
单身 YES
单身 YES
已婚 NO

这里一共有9条数据,为了检验方便,我选取前7条作为训练数据,后两条作为检验数据。
由此我们可以得到以下数据:
某人拖欠贷款的概率为
P(YES)=2/7
某人没有拖欠贷款的概率为
P(NO)=5/7

当一个人拖欠贷款时其同时为单身的概率则为
P(单|Yes)=2/2=1
当一个人拖欠贷款时其同时为非单身的概率则为
P(已|Yes)=0
当一个人拖欠贷款时其同时已经购房的概率则为
P(是|Yes)=0
当一个人拖欠贷款时其同时还未购房的概率则为
P(否|Yes)=2/2=1

当一个人未拖欠贷款时其同时为单身的概率则为
P(单|NO)=2/5
当一个人未拖欠贷款时其同时为非单身的概率则为
P(已|NO)=3/5
当一个人未拖欠贷款时其同时已经购房的概率则为
P(是|NO)=2/5
当一个人未拖欠贷款时其同时还未购房的概率则为
P(否|NO)=3/5

下面我们即可以利用Naive Bayes Classifier进行预测分类
对于检验数据第一条否,单,Yes。假设我们不知道其是否贷款,需要通过前两个信息来进行判断,即判断某人未购房且单身时是否拖欠贷款
P(Yes|否,单)=P(Yes)*P(否|Yes)*(单|Yes)=2/7 * 1 * 1 =2/7=10/35
P(No|否,单)=P(No)*P(否|No)*(单|No)=5/7 * 3/5 * 2/5 =6/35
我们可以发现P(Yes|否,单)大于P(No|否,单),因此我们的预测结果为Yes,与实际相符合

同样的也可以检验第二条检验数据得到结果。

在这个例子中,我们的特征变量为离散值,即其取值只能有是,否或者已婚,单身等。如果特征变量为连续函数呢?
其实解决办法也很简单,根据现有数据,得到该特征变量的概率密度函数,然后就可以得到其取某值的概率,代入公式即可。

总结:
鉴于Naive Bayes Classifier原理简单,实时性强,通用性比较好且其实际效果并不会比SVM等复杂算法差太多,我于本文介绍了其基本实现原理希望能够有所帮助。另外,目前各语言都有成熟的库可以调用,我曾用过的有Java的Weka和python的scikit-learn,matlab也有现成的函数可以调用,比较方便。

你可能感兴趣的:(机器学习)