信息增益计算器

这个在线计算器计算信息增益,即信息熵的变化,从先前的状态到接受给定信息的状态

下面的在线计算器解析训练示例集,然后计算每个属性/特征的信息增益。 如果您不确定它的全部内容,或者您想查看公式,请阅读计算器下方的说明。

注意: 培训示例应该以csv列表的形式输入,分号用作分隔符。第一行被认为是一行标签,首先是属性/特性标签,然后是类标签。其他所有行都是例子。这个计算器中的默认数据是“打网球”决策树的著名数据示例

PLANETCALC, 信息增益计算器

信息增益计算器

小数点后的数字: 3
这个文件很大。浏览器在加载和创建过程中可能会减速。

信息增益和决策树

信息增益是一种在构建决策树时特别有用的指标。 决策树是一种类似于流程图的结构,其中每个内部节点表示一个属性的“测试”(例如一个抛硬币是否出现正面或反面),每个分支代表测试的结果,每个叶节点代表一个类标签(计算所有属性后做出的决定)。从根到叶的路径表示分类规则。1

让我们看看计算器的默认数据。

要分析的属性是:

  • 前景: 周日/阴天/下雨
  • 湿度: 高/正常
  • 风: 真/假
  • 温度: 炎热/温暖/凉爽

类标签:

  • 打球: 是/否

    因此,通过逐个分析属性,算法应该有效地回答这个问题:“我们应该打网球吗?”因此,为了执行尽可能少的步骤,我们需要在每个步骤上选择最好的决策属性—给我们最多信息的那个。

我们如何测量每个属性可以提供给我们的信息?其中一种方法是测量熵的减少,而 这正是 信息增益 度量所做的。

让我们回到这个例子。在我们的训练集中,我们有5个被标记为“否”的例子,9个被标记为“是”的例子。根据众所周知的香农熵公式,现在的熵为

H=-\frac{5}{14} \log_2\frac{5}{14} - \frac{9}{14} \log_2\frac{9}{14} = 0.94

现在,让我们想象我们要对一个例子进行分类。我们决定先测试“有风”属性。从技术上讲,我们对“有风”属性执行拆分

如果“有风”属性的值为“真”,我们就剩下6个例子。其中3个在打球标签上写着"是"3个在打球标签上写着"否"
其熵是
H=-\frac{3}{6} \log_2\frac{3}{6} - \frac{3}{6} \log_2\frac{3}{6} = 1

因此,如果我们测试中的示例具有“真”作为“有风”属性,那么我们将比以前拥有更多的不确定性。

现在,如果“有风”属性的值是“假”,我们就剩下8个例子。其中6个在打球标签上写着“是”,2个在打球标签上写着“否”。
其熵是

H=-\frac{6}{8} \log_2\frac{6}{8} - \frac{2}{8} \log_2\frac{2}{8} = 0.81

当然,这比我们最初的0.94比特熵要好(如果我们足够幸运,在我们测试的例子中得到“假”)。

为了估计总的熵减少,我们需要使用概率平均得到“真”和“假”属性值。我们有6个“有风”属性值为“真”的示例,8个“有风”属性值为“假”的示例。所以拆分后的平均熵是

H_{Windy}=\frac{6}{14} H_{Windy=True} + \frac{8}{14} H_{Windy=False} = 0.429+0.463=0.892
其中,Hwindy是有风天气的熵,True为真,False为假。
因此,我们的初始熵为0.94,分割“有风”属性后的平均熵为0.892。因此,信息增益作为熵的减少是

IG=H-H_{Windy}=0.048

属性 a的信息增益的一般公式是
IG(T,a)=\mathrm {H} (T)-\mathrm {H} (T|a),

其中
T - 一组训练示例,每一个的形式都是 (\textbf{x},y) = (x_1, x_2, x_3, ..., x_k, y) 其中 x_a\in vals(a) 是 示例中的 a^{\text{th}} 属性或者 特征 值,y 是相应的类标签,
\mathrm {H} (T|a) — 以a为条件的 T 的熵 (条件熵)

条件熵公式是

{\displaystyle \mathrm {H} (T|a)=\sum _{v\in vals(a)}{{\frac {|S_{a}{(v)}|}{|T|}}\cdot \mathrm {H} \left(S_{a}{\left(v\right)}\right)}.}

其中
S_{a}{(v)} —使属性 a 等于 vT 的训练示例集

使用这种方法,我们可以找到每个属性的信息增益,并发现“前景”属性为我们提供了最大的信息增益,0.247比特。现在我们可以得出结论,对“有风”属性的第一次拆分是一个非常糟糕的主意,并且给定的训练示例建议我们应该首先测试“前景”属性。

最后一点。 你可能想知道,如果可以为每个属性组合提供决策,为什么还需要决策树。 你当然能够,但即使对于这个小示例,组合的总数也是3*2*2*3=36。 另一方面,我们只是使用了一个组合子集(14个例子)来训练我们的算法(通过构建决策树),现在它可以在没有我们帮助的情况下分类所有其他组合。 这就是机器学习的意义所在。

URL 复制到剪贴板
PLANETCALC, 信息增益计算器

评论