Bayes & Decision Tree Classifiers

来源:互联网 发布:杀女婴知乎 编辑:程序博客网 时间:2024/06/07 05:57

这两天收拾文档,就顺手把这个写上来。

贝叶斯

首先说一下贝叶斯公式,这是一个概率学上的公式,表示如下 

P(A∩B)=P(A|B)P(B)=P(B|A)P(A)

对其进行变换以后可以得到

P(A|B)=P(B|A)P(A)/P(B)

这个东西在条件概率的地方相信大家也都学过,就不展开了。


当我们要计算在a1,a2...an的条件下w发生的概率,我们定义为

经过变换以后,我们得到

但是我们知道,要计算出

的难度是难以想象的,所以使用了一种叫做naïve bayes的方式,中文称作朴素贝叶斯。

即认为a1,a2等之间是conditionally independent的,即条件独立,所以我们得到了新的公式

然后我们可以通过这个公式进行计算一个事件的发生的概率,在给定了一些data set的基础之上。

这就是一个简单的分类问题。

决策树

贝叶斯先暂时放在这里,我们现在来看一下决策树。

决策呢,估计都不陌生,在一些条件之下,我们会对最后的结果做出一个判断,就称之为决策。

人对于这种条件的分析,可以形成一棵树状的结构,称之为决策树。

在1975年提出的ID3算法就是一种基于贪心算法来构造决策树的算法。

它是基于信息熵的下降速度即信息增益为核心的。

我们先来定义什么是信息熵,熵是物理学中的一个概念,用于表示系统的不确定度的。其值在0~1之间。

其中log一般是以2为底,这样的话,计算出来的信息的混乱程度的单位就是bit,当然你也可以选用其它的底数,这里不做讨论。

我举一个例子,假设有一堆人,他们有男有女,并且比例为1:1,你要确定其中一个人是男是女,那么经过计算以后,该系统的熵就是1,也就是完全不确定。

那什么是信息增益呢,就是说,你当获取了一个信息,对于系统的不确定性降低了多少,称之为信息增益,定义如下:

比如你知道这个人他是短发,或者有抽烟的习惯,你就会使得系统的信息熵降低,即信息增益。

但这其中还会有十分严重的问题,如果有两个信息,其中一个的信息增益为1,另一个只有0.5,但前者把数据划分的太细碎,后者只是一分为二或者一分为三,那么从实际上来讲,后者的效果是高于前者的。那么只用信息增益来衡量就不够了,我们就引入了一个新的量,叫做信息分裂度和信息增益率,定义如下:

信息分裂度:

信息增益率:

这样的话,SplitInformation就作为了一个惩罚量对Gain进行修正,如果一个信息的GainRatio更大,我们则认为他的效果更好。

这就是一个简单的基于ID3的决策树模型。

现在有C4.5的这样一个更加完备的算法,类似于刚才所述的原理,可以通过一个开源的软件weka找到,该软件作者将这个算法使用JAVA实现以后,命名为J48。

有兴趣的朋友可以上手试一下。