我正在尝试根据伪代码实现决策树算法。
然而,我不明白为什么第一个节点应该是天气状况(outlook)。
天气状况的基尼指数不应该是1-(5/14)^2-(5/14)^2-(4/14)^2 = 0.663265306吗?而湿度(Humidity)的基尼指数应该是1-(4/14)^2-(6/14)^2-(4/14)^2 = 0.653061224吗?
由于基尼指数代表属性的不纯度,选择基尼指数较低的属性更为合理。
我的计算基尼指数的方法是错误的,还是有其他我应该知道的事情?
数据
Rainy Hot High FALSE NoRainy Hot High TRUE NoOvercast Hot High FALSE YesSunny Mild High FALSE YesSunny Cool Normal FALSE YesSunny Cool Normal TRUE NoOvercast Cool Normal TRUE YesRainy Mild High FALSE NoRainy Cool Normal FALSE YesSunny Mild Normal FALSE YesRainy Mild Normal TRUE YesOvercast Mild High TRUE YesOvercast Hot Normal FALSE YesSunny Mild High TRUE No
回答:
基尼度量是一种纯度测量。对于两个类别,等分时的最小值为0.5。随着任一类别的比例增加,基尼度量也会增加。当基尼度量为1时,该集合在其中一个类别中100%纯净。
决策树的目的是最大化子节点的纯度。毕竟,模型通过分离它们来“学习”识别类别。因此,你需要的是更大的基尼指数,而不是较小的。根据你的计算,这应该是天气状况(Outlook)而不是湿度(Humidity)。