使用决策树预测一个未知样本的分类。数据样本用属性“天气”、“温度”、“湿度”和“风力”描述。使用ID3算法构建一个决策树模型时,哪个属性适合做根节点?(注:所有对数计算均选择log2)。天气:晴,气温:热,湿度:高,风力:弱,适合打网球吗:否; 天气:晴,气温:热,湿度:高,风力:强,适合打网球吗:否; 天气:阴,气温:热,湿度:高,风力:弱,适合打网球吗:是; 天气:雨,气温:适宜,湿度:高,风力:弱,适合打网球吗:是; 天气:雨,气温:凉,湿度:正常,风力:弱,适合打网球吗:是; 天气:雨,气温:凉,湿度:正常,风力:强,适合打网球吗:否; 天气:阴,气温:凉,湿度:正常,风力:强,适合打网球吗:是; 天气:晴,气温:适宜,湿度:高,风力:弱,适合打网球吗:否; 天气:晴,气温:凉,湿度:正常,风力:弱,适合打网球吗:是; 天气:雨,气温:适宜,湿度:正常,风力:弱,适合打网球吗:是; 天气:晴,气温:适宜,湿度:正常,风力:强,适合打网球吗:是; 天气:阴,气温:适宜,湿度:高,风力:强,适合打网球吗:是; 天气:阴,气温:热,湿度:正常,风力:弱,适合打网球吗:是; 天气:雨,气温:适宜,湿度:高,风力:强,适合打网球吗:否; 天气:阴,气温:凉,湿度:高,风力:强,适合打网球吗:是;
时间: 2024-03-29 18:36:51 浏览: 76
根据ID3算法,我们需要计算每个属性的信息增益,以决定哪个属性适合做根节点。信息增益越大,表示该属性对分类的影响越大,越适合做根节点。
首先计算整个数据集的熵,公式为:$H(S) = -\sum_{i=1}^{c} \frac{p_i}{log_2(p_i)}$,其中$p_i$表示类别$i$在数据集中的比例,$c$表示类别的数量。在本题中,类别只有是和否两种,所以$c=2$,$p_{是}=\frac{6}{14}$,$p_{否}=\frac{8}{14}$,因此$H(S)=-\frac{6}{14}log_2(\frac{6}{14})-\frac{8}{14}log_2(\frac{8}{14})\approx0.985$。
接下来,针对每个属性计算信息增益。例如,对于属性“天气”,我们需要计算该属性对应的每个取值的熵,再计算加权平均熵。以此类推。
天气:晴,对应数据:否,否,否,是,否,是,否,否,对应熵:$H(3,6)=-\frac{3}{9}log_2(\frac{3}{9})-\frac{6}{9}log_2(\frac{6}{9})\approx0.918$。
天气:阴,对应数据:是,是,是,否,是,否,是,否,对应熵:$H(4,5)=-\frac{4}{9}log_2(\frac{4}{9})-\frac{5}{9}log_2(\frac{5}{9})\approx0.991$。
天气:雨,对应数据:是,是,是,否,是,否,否,否,对应熵:$H(3,2)=-\frac{3}{5}log_2(\frac{3}{5})-\frac{2}{5}log_2(\frac{2}{5})\approx0.971$。
计算天气属性的信息增益:$Gain(T天气) = H(S) - \sum_{v\in 天气取值} \frac{|S_v|}{|S|}H(S_v) \approx 0.021$。
类似地,计算温度、湿度和风力属性的信息增益为:
温度:热,对应数据:否,否,是,是,否,否,否,否,对应熵:$H(2,4)=-\frac{2}{6}log_2(\frac{2}{6})-\frac{4}{6}log_2(\frac{4}{6})\approx0.918$。
温度:适宜,对应数据:是,否,是,否,是,是,否,对应熵:$H(4,3)=-\frac{4}{7}log_2(\frac{4}{7})-\frac{3}{7}log_2(\frac{3}{7})\approx0.985$。
温度:凉,对应数据:是,是,否,否,是,对应熵:$H(3,2)=-\frac{3}{5}log_2(\frac{3}{5})-\frac{2}{5}log_2(\frac{2}{5})\approx0.971$。
计算温度属性的信息增益:$Gain(T温度) = H(S) - \sum_{v\in 温度取值} \frac{|S_v|}{|S|}H(S_v) \approx 0.029$。
湿度:高,对应数据:否,否,是,是,是,否,否,对应熵:$H(2,5)=-\frac{2}{7}log_2(\frac{2}{7})-\frac{5}{7}log_2(\frac{5}{7})\approx0.863$。
湿度:正常,对应数据:是,否,是,否,否,是,是,对应熵:$H(4,4)=-\frac{4}{8}log_2(\frac{4}{8})-\frac{4}{8}log_2(\frac{4}{8})=1$。
计算湿度属性的信息增益:$Gain(T湿度) = H(S) - \sum_{v\in 湿度取值} \frac{|S_v|}{|S|}H(S_v) \approx 0.152$。
风力:弱,对应数据:否,否,是,否,否,是,是,否,对应熵:$H(3,6)=-\frac{3}{9}log_2(\frac{3}{9})-\frac{6}{9}log_2(\frac{6}{9})\approx0.918$。
风力:强,对应数据:否,是,否,是,是,否,否,对应熵:$H(3,4)=-\frac{3}{7}log_2(\frac{3}{7})-\frac{4}{7}log_2(\frac{4}{7})\approx0.985$。
计算风力属性的信息增益:$Gain(T风力) = H(S) - \sum_{v\in 风力取值} \frac{|S_v|}{|S|}H(S_v) \approx 0.048$。
由上述计算可知,湿度属性的信息增益最大,因此适合作为根节点。如果湿度为高,则分类为否;如果湿度为正常,则需要继续考虑其他属性。接下来可以根据同样的方法,计算其他属性的信息增益,构建出一棵完整的决策树。
阅读全文