为什么我们需要增益比

数据挖掘 机器学习 决策树 算法
2022-03-11 04:10:29

我正在学习决策树,我觉得到目前为止我已经很好地理解了它们以及它们背后的数学原理,除了一件事:增益率。

据我了解,增益比的实施是为了惩罚可能具有很多可能值的特征。

如果一个特征有很多可能的值,那么如果我们对该特征进行拆分,可能会有一些值只指向一个类,但这仅仅是因为该特征只有 1 或 2 个具有该值的数据点无论如何。

换句话说,我们会在该特征上得到低熵的唯一原因是因为该特征可以采用很多值,因此很多这些值专门指向单个标签。所以我们的决策树算法最终会分裂成“ID#”之类的东西,并错误地计算出我们刚刚获得了巨大的信息增益。

然而,这似乎只是一个问题,因为“ID#”是我们不应该一开始就拆分的功能。我的意思是,如果我们有另一个特征也有很多可能的值,但是这些值中的每一个实际上都暗示了该数据点的一些标签,那么不应用增益比意味着我们实际上是在搞乱我们的决策树通过惩罚实际上是一个非常好的分裂与大量的信息增益?

在我们将训练数据输入算法之前,确定哪个特征与我们的标签无关不是更好吗?

IDK,我只是不明白为什么增益比真的有用......

2个回答

我在读硕士的时候也有同样的疑问。首先,您不包含像“ID”这样随机的东西。这就是数据预处理的用武之地。让我们使用一个数据集,其中包含基于性别、年龄组、评级、等等等等变量的用户和他们的电影类型偏好。在信息增益的帮助下,您在“性别”处进行拆分(假设它具有最高的信息增益),现在变量“年龄组”和“评级”可能同样重要,并且在增益率的帮助下,它将惩罚一个具有更多不同值的变量,这将帮助我们决定下一个级别的拆分。

信息增益是帮助选择要选择的属性的启发式方法之一。

如您所知,决策树是一种自上而下的递归分治方式。示例基于选定的属性递归地划分。

在 ID3 算法中,我们使用选择具有最高信息增益的属性。

pi是任意元组中的概率D属于类Ci. 所以pi=|Ci,d|/|D| 对元组进行分类所需的预期信息(熵)D

Info(D)=i=1mpilog(pi)

对 D 进行分类所需的信息(在使用 A 将 D 拆分为 v 部分之后):

InfoA(D)=j=1vDj/DInfoj(D)

通过属性 A 分支获得的信息

Gain(A)=Info(D)InfoA(D)

在 C4.5 算法中,我们需要将信息差除以SplitInfo(A)

Gain(A)=(Info(D)InfoA(D))/SplitInfo(A)

在此处输入图像描述