学校开展活动由天气,温度,湿度和风度共同决定,请分别使用ID3和C4.5算法绘出决策树,要求给出计算过程
时间: 2023-06-18 18:08:16 浏览: 206
首先,我们需要构造一个数据集,包含天气、温度、湿度和风度四个特征和一个目标变量——是否开展活动。假设我们已经有了以下数据集:
| 天气 | 温度 | 湿度 | 风度 | 是否开展活动 |
| ------ | ---- | ----- | ---- | ------------ |
| 晴 | 热 | 高 | 无风 | 否 |
| 晴 | 热 | 高 | 有风 | 否 |
| 多云 | 热 | 高 | 无风 | 是 |
| 下雨 | 凉 | 高 | 无风 | 是 |
| 下雨 | 寒冷 | 正常 | 无风 | 是 |
| 下雨 | 寒冷 | 正常 | 有风 | 否 |
| 多云 | 寒冷 | 正常 | 有风 | 是 |
| 晴 | 温暖 | 正常 | 无风 | 是 |
| 晴 | 寒冷 | 正常 | 无风 | 是 |
| 下雨 | 温暖 | 高 | 无风 | 否 |
| 晴 | 温暖 | 正常 | 有风 | 是 |
| 多云 | 温暖 | 正常 | 有风 | 是 |
| 多云 | 热 | 正常 | 无风 | 是 |
| 下雨 | 温暖 | 正常 | 有风 | 否 |
接下来,我们使用ID3算法和C4.5算法分别构建决策树。
### ID3算法
#### 第一步:计算数据集的熵
数据集中有6个是“是”,8个是“否”,熵的计算公式为:
$$
H(D) = -\sum_{i=1}^{n}p_i\log_2{p_i}
$$
其中,$p_i$表示目标变量为第$i$个类别的样本所占的比例,$n$表示类别数。因此,$H(D)$的计算如下:
$$
H(D) = -\frac{6}{14}\log_2\frac{6}{14}-\frac{8}{14}\log_2\frac{8}{14} \approx 0.985
$$
#### 第二步:计算各个特征的信息增益
特征“天气”有3个取值:“晴”、“多云”、“下雨”,分别对应4个“是”和3个“否”;特征“温度”有3个取值:“热”、“温暖”、“寒冷”,分别对应2个“是”和4个“否”;特征“湿度”有2个取值:“高”、“正常”,分别对应3个“是”和4个“否”;特征“风度”有2个取值:“有风”、“无风”,分别对应2个“是”和6个“否”。
以特征“天气”为例,我们可以计算其信息增益:
$$
IG(D, 天气) = H(D) - \sum_{v\in 天气} \frac{|D_v|}{|D|}H(D_v)
$$
其中,$D_v$表示特征“天气”取值为$v$的样本集合,$|D_v|$表示集合$D_v$的大小。因此,特征“天气”的信息增益计算如下:
$$
IG(D, 天气) = 0.985 - \frac{4}{14}H(D_{晴}) - \frac{5}{14}H(D_{多云}) - \frac{5}{14}H(D_{下雨})
$$
其中,$H(D_{晴})$的计算过程如下:
$$
H(D_{晴}) = -\frac{2}{4}\log_2\frac{2}{4} - \frac{2}{4}\log_2\frac{2}{4} \approx 1
$$
同理,$H(D_{多云})$和$H(D_{下雨})$的计算结果分别为$0.971$和$0.971$。因此,特征“天气”的信息增益为:
$$
IG(D, 天气) \approx 0.246
$$
同样的,我们可以计算出特征“温度”、“湿度”和“风度”的信息增益:
$$
IG(D, 温度) \approx 0.028
$$
$$
IG(D, 湿度) \approx 0.152
$$
$$
IG(D, 风度) \approx 0.048
$$
#### 第三步:选择信息增益最大的特征进行划分
根据信息增益,我们可以选择“天气”作为第一个划分特征。当“天气”取值为“晴”时,样本中有2个“是”和2个“否”;当“天气”取值为“多云”时,样本中有4个“是”和1个“否”;当“天气”取值为“下雨”时,样本中有0个“是”和3个“否”。因此,我们可以得到以下决策树:
```
天气
├── 晴: 否
├── 多云
│ ├── 温度
│ │ ├── 热: 是
│ │ ├── 温暖: 是
│ │ └── 寒冷: 否
│ └── 风度
│ ├── 有风: 否
│ └── 无风: 是
└── 下雨
├── 风度
│ ├── 有风: 否
│ └── 无风: 是
└── 温度
├── 热: 否
├── 温暖: 是
└── 寒冷: 是
```
### C4.5算法
#### 第一步:计算数据集的熵和各个特征的信息增益比
与ID3算法类似,我们首先需要计算数据集的熵,然后计算各个特征的信息增益。C4.5算法与ID3算法的区别在于,C4.5算法采用信息增益比来选择最优划分特征,防止出现取值较多的特征在信息增益上具有优势的情况。
以特征“天气”为例,我们可以计算其信息增益比:
$$
GR(D, 天气) = \frac{IG(D, 天气)}{IV(D, 天气)}
$$
其中,$IV(D, 天气)$表示特征“天气”的固有值,定义为:
$$
IV(D, 天气) = -\sum_{v\in 天气} \frac{|D_v|}{|D|}\log_2\frac{|D_v|}{|D|}
$$
特征“天气”的固有值计算如下:
$$
IV(D, 天气) = -\frac{4}{14}\log_2\frac{4}{14} - \frac{5}{14}\log_2\frac{5}{14} - \frac{5}{14}\log_2\frac{5}{14} \approx 1.577
$$
因此,特征“天气”的信息增益比为:
$$
GR(D, 天气) = \frac{0.246}{1.577} \approx 0.156
$$
同样的,我们可以计算出特征“温度”、“湿度”和“风度”的信息增益比:
$$
GR(D, 温度) \approx 0.016
$$
$$
GR(D, 湿度) \approx 0.088
$$
$$
GR(D, 风度) \approx 0.029
$$
#### 第二步:选择信息增益比最大的特征进行划分
根据信息增益比,我们可以选择“湿度”作为第一个划分特征。当“湿度”取值为“高”时,样本中有0个“是”和4个“否”;当“湿度”取值为“正常”时,样本中有6个“是”和4个“否”。因此,我们可以得到以下决策树:
```
湿度
├── 高: 否
└── 正常
├── 天气
│ ├── 晴: 是
│ ├── 多云
│ │ ├── 风度
│ │ │ ├── 有风: 否
│ │ │ └── 无风: 是
│ │ └── 温度
│ │ ├── 热: 是
│ │ ├── 温暖: 是
│ │ └── 寒冷: 否
│ └── 下雨
│ ├── 风度
│ │ ├── 有风: 否
│ │ └── 无风: 是
│ └── 温度
│ ├── 热: 否
│ ├── 温暖: 是
│ └── 寒冷: 是
└── 高: 否
```
以上就是使用ID3算法和C4.5算法分别构建决策树的过程。