————致力于用代码改变世界

机器学习之——决策树条件熵计算[程序+例题]

0 前言

  • 本文主要介绍决策树条件熵的计算并给出若干例子帮助理解。
  • 读者需要具备信息熵计算知识,若不了解请看:信息熵

1 条件熵

image

2 数据集

游玩数据集,请看:数据集 1.1节

3 条件熵的计算

使用所给游玩数据集。计算H(play|outlook)的条件熵(在Y随机变量为outlook条件下,X随机变量为play的条件熵)。笔者将Outlook属性排序后如下图(3-1)所示。
image

对属性Outlook分析并计算如下。
image

其中相应的运算数据笔者已用相应的颜色标注。属性"Play=yes个数"表示当outlook=overcast(或rainy或sunny)条件下的数据中有几个play为yes的样本。属性"P(play=yes)"表示当outlook=overcast(或rainy或sunny)条件下play为yes的概率。

同样方法,笔者分别计算随机变量temperature、humidity、windy的条件熵如下所示。
计算temperature条件熵:

  1. 当temperature=cool时,样本有4个,play=no有1个
    当temperature=cool时,样本有4个,play=yes有3个
    H(play|temperature=cool)=-(1.0/4.0)log2(1.0/4.0)-(3.0/4.0)log2(3.0/4.0)=0.8113

  2. 当temperature=hot时,样本有4个,play=no有2个
    当temperature=hot时,样本有4个,play=yes有2个
    H(play|temperature=hot)=-(2.0/4.0)log2(2.0/4.0)-(2.0/4.0)log2(2.0/4.0)=1.0000

  3. 当temperature=mild时,样本有6个,play=no有2个
    当temperature=mild时,样本有6个,play=yes有4个
    H(play|temperature=mild)=-(2.0/6.0)log2(2.0/6.0)-(4.0/6.0)log2(4.0/6.0)=0.9183

  4. H(play|temperature)=(4.0/14)* 0.8113+(4.0/14)* 1.0000+(6.0/14)* 0.9183=0.9111

计算humidity条件熵:

  1. 当humidity=high时,样本有7个,play=no有4个
    当humidity=high时,样本有7个,play=yes有3个
    H(play|humidity=high)=-(4.0/7.0)log2(4.0/7.0)-(3.0/7.0)log2(3.0/7.0)=0.9852

  2. 当humidity=normal时,样本有7个,play=no有1个
    当humidity=normal时,样本有7个,play=yes有6个
    H(play|humidity=normal)=-(1.0/7.0)log2(1.0/7.0)-(6.0/7.0)log2(6.0/7.0)=0.5917

  3. H(play|humidity)=(7.0/14)* 0.9852+(7.0/14)* 0.5917=0.7885

计算windy条件熵:

  1. 当windy=not时,样本有8个,play=no有2个
    当windy=not时,样本有8个,play=yes有6个
    H(play|windy=not)=-(2.0/8.0)log2(2.0/8.0)-(6.0/8.0)log2(6.0/8.0)=0.8113

  2. 当windy=yes时,样本有6个,play=no有3个
    当windy=yes时,样本有6个,play=yes有3个
    H(play|windy=yes)=-(3.0/6.0)log2(3.0/6.0)-(3.0/6.0)log2(3.0/6.0)=1.0000

  3. H(play|windy)=(8.0/14)* 0.8113+(6.0/14)* 1.0000=0.8922

4 计算程序

请看:计算程序 2~3节

5 结语

如有错误请指正,禁止商用。

posted @ 2024-09-01 22:53  hello_nullptr  阅读(18)  评论(0编辑  收藏  举报