[MoonML]-决策树ID3分类器

来源:互联网 发布:函数的定义c语言 编辑:程序博客网 时间:2024/06/09 04:44

正文

决策树(decision tree),我觉得这同样是一个高效的,很好理解,很容易实现的分类器,这个分类器相对于其他分类器的一个显著优点就是输出结果易于理解,在对分类决策的时候可以给出中间的分析过程,这是其他大多数分类器不具备的功能,而且出现一些不相关特征的数据,决策树也能很好应对。决策树同样也有缺点,那就是由于个别特征占据主导地位,而导致过度匹配的问题。下面让我们来看一下决策树的基本思想。

先举个例子吧,我觉得理论就是为了解决实际问题而生的,所以用事实说话,最具说服力。

假如天气因素影响我是否出去打球,可以列出如下特征和具体特征值

天气体感温度是否有风sunnyhothighTRUEovercastmildnormalFALSErainycool  结果呢,就是yes or no,接下来就是训练数据

"sunny", "hot", "high", "FALSE", "no"
"sunny", "hot", "high", "TRUE", "no"
"overcast", "hot", "high", "FALSE", "yes"
"rainy", "mild", "high", "FALSE", "yes"
"rainy", "cool", "normal", "FALSE", "yes"
"rainy", "cool", "normal", "TRUE", "no"
"overcast", "cool", "normal", "TRUE", "yes"
"sunny", "mild", "high", "FALSE", "no"
"sunny", "cool", "normal", "FALSE", "yes"
"rainy", "mild", "normal", "FALSE", "yes"
"sunny", "mild", "normal", "TRUE", "yes"
"overcast", "mild", "high", "TRUE", "yes"
"overcast", "hot", "normal", "FALSE", "yes"
"rainy", "mild", "high", "TRUE", "no"

看决策树是怎么处理这些数据的啊

这里引进两个概念,一个是信息熵,还有一个就是信息增益

信息熵我们就理解为信息的出现频率和不确定性的一个指标,信息熵越小,信息出现的概率越大,其确定性越好。

信息熵公式:

,这里log表示以2为底的对数

pi越大,H(U)越小,信息出现的概率越大,确定性越好

信息增益我认为就是两种信息的差异指标,差异越大,两者之间的关系越大。两者信息增益越大,一方对另一方的影响越大。在分类器中我们可以理解为某特征到类别的信息增益越大,那么这一特征的需要被考虑的分量越重(也就是权重越大)。

信息增益的公式:


H(C|T)表示T出现时,C的信息熵


我觉得这两个概念并不好解释,大家可以很简单的理解是信息增益是特征对类别的影响权重,信息熵是计算信息增益的指标

有了上面的公式,我们来简单计算一下上面的训练样本

总体的类别情况:{no=5, yes=9},

H(类别)=-5/14*log(5/14)-9/14*log(9/14)=0.94,类别的信息熵是0.94

天气也就是第一个特征情况:{rainy={no=2, yes=3}, overcast={yes=4}, sunny={no=3, yes=2}},

H(类别|特征1=rainy)=-2/5*log(2/5)-3/5*log(3/5)

H(类别|特征1=overcast)=-1*log(1)

H(类别|特征1=sunny)=-2/5*log(2/5)-3/5*log(3/5)

H(类别|特征1)=H(类别|特征1=rainy)+H(类别|特征1=overcast)+H(类别|特征1=sunny)=0.69

同理可得

H(类别|特征2)=0.91

H(类别|特征3)=0.79

H(类别|特征4)=0.89

IG(特征1)=H(类别)-H(类别|特征1)

IG(特征2)=H(类别)-H(类别|特征2)

IG(特征3)=H(类别)-H(类别|特征3)

IG(特征4)=H(类别)-H(类别|特征4)

最后比较得出特征1到类别的信息增益最大,所以在做决策时应该优先考虑第一特征值,以此类推,知道所有特征用完或者分析出类别下面给出行程的决策树



决策树的实现代码有点长,这里就不把代码贴出来了,大家想看代码可以在git上下载https://github.com/moonLazy/MoonML.git

哪里写的不对,或者不好,或者代码实现的不好,请大家指出,欢迎批评


原创粉丝点击