【发布时间】:2020-01-03 15:02:29
【问题描述】:
例如,对于神经网络,我通过使用反向传播算法来最小化成本函数。决策树中的基尼指数是否有等价物?
CART 算法总是声明“选择集合 A 的分区,使 Gini-Index 最小化”,但我如何从数学上实际得到该分区?
对此的任何意见都会有所帮助:)
【问题讨论】:
标签: optimization neural-network cart decision-tree backpropagation
例如,对于神经网络,我通过使用反向传播算法来最小化成本函数。决策树中的基尼指数是否有等价物?
CART 算法总是声明“选择集合 A 的分区,使 Gini-Index 最小化”,但我如何从数学上实际得到该分区?
对此的任何意见都会有所帮助:)
【问题讨论】:
标签: optimization neural-network cart decision-tree backpropagation
对于决策树,有不同的方法可以拆分年龄、体重、收入等连续变量。
A) 将连续变量离散化,以在 DT 算法的各个方面将其用作分类变量。可以这样做:
B) 拆分变量所有可能的不同值,查看基尼指数下降幅度最大的位置。这在计算上可能很昂贵。因此,有优化的变体,您可以对变量进行排序,而不是选择所有不同的值,而是选择两个连续值之间的中点作为拆分。例如,如果变量“体重”在数据点中有 70、80、90 和 100 公斤,请尝试将 75、85、95 作为拆分并选择最佳的一个(基尼或其他杂质的降幅最高)
那么,python中的scikit-learn、R中的rpart和pyspark中的mlib包中实现的确切分割算法是什么 ,它们在分割连续变量方面有什么区别,我也不确定,仍在研究中。
【讨论】:
Here 有一个很好的 CART 算法示例。基本上,我们得到这样的基尼指数:
对于每个属性,我们有不同的值,每个属性都有一个基尼指数,根据它们所属的类。例如,如果我们有两个类(正类和负类),一个属性的每个值都会有一些属于正类的记录和一些属于负类的其他值。所以我们可以计算概率。假设一个属性被称为 weather 并且它有两个值(例如 rainy 和 sunny),我们有这些信息:
我们可以说:
然后我们可以得到 weather 的 gini 指数的加权和(假设我们总共有 8 条记录):
我们对所有其他属性执行此操作(就像我们对天气所做的那样),最后我们选择具有最低 gini 索引的属性作为拆分树的属性。我们必须在每次拆分时执行所有这些操作(除非我们可以在不需要拆分的情况下对子树进行分类)。