【问题标题】:How is the Gini-Index minimized in CART Algorithm for Decision Trees?决策树的 CART 算法中的基尼指数如何最小化?
【发布时间】:2020-01-03 15:02:29
【问题描述】:

例如,对于神经网络,我通过使用反向传播算法来最小化成本函数。决策树中的基尼指数是否有等价物?

CART 算法总是声明“选择集合 A 的分区,使 Gini-Index 最小化”,但我如何从数学上实际得到该分区?

对此的任何意见都会有所帮助:)

【问题讨论】:

    标签: optimization neural-network cart decision-tree backpropagation


    【解决方案1】:

    对于决策树,有不同的方法可以拆分年龄、体重、收入等连续变量。

    A) 将连续变量离散化,以在 DT 算法的各个方面将其用作分类变量。可以这样做:

    • 在开始时只进行一次,然后保持这种离散化 静态的
    • 在需要拆分的每个阶段,使用百分位数或 区间范围或聚类以对变量进行分桶

    B) 拆分变量所有可能的不同值,查看基尼指数下降幅度最大的位置。这在计算上可能很昂贵。因此,有优化的变体,您可以对变量进行排序,而不是选择所有不同的值,而是选择两个连续值之间的中点作为拆分。例如,如果变量“体重”在数据点中有 70、80、90 和 100 公斤,请尝试将 75、85、95 作为拆分并选择最佳的一个(基尼或其他杂质的降幅最高)

    那么,python中的scikit-learn、R中的rpart和pyspark中的mlib包中实现的确切分割算法是什么 ,它们在分割连续变量方面有什么区别,我也不确定,仍在研究中。

    【讨论】:

      【解决方案2】:

      Here 有一个很好的 CART 算法示例。基本上,我们得到这样的基尼指数:

      对于每个属性,我们有不同的值,每个属性都有一个基尼指数,根据它们所属的类。例如,如果我们有两个类(正类和负类),一个属性的每个值都会有一些属于正类的记录和一些属于负类的其他值。所以我们可以计算概率。假设一个属性被称为 weather 并且它有两个值(例如 rainysunny),我们有这些信息:

      • 下雨:2 正,3 负
      • 晴天:1 正,2 负

      我们可以说:

      然后我们可以得到 weather 的 gini 指数的加权和(假设我们总共有 8 条记录):

      我们对所有其他属性执行此操作(就像我们对天气所做的那样),最后我们选择具有最低 gini 索引的属性作为拆分树的属性。我们必须在每次拆分时执行所有这些操作(除非我们可以在不需要拆分的情况下对子树进行分类)。

      【讨论】:

      • 感谢 Hadi 的输入 :) 但是我想知道这对于非分类值是如何工作的,比如我有一个大数据集,其中包含一个人的薪水、体重和身高都是实数,并想预测它性别。该算法是否真的手动计算每个高度分割(n 人的 n 种可能性)并进行比较?对于 N 人的数据集,A 属性我需要计算 A\cdot N 个不同的系数。
      • 对于非分类数据,可以用阈值拆分数据。有更好的解释here。您有两个输出类(男性、女性)和三个属性。您可以设置阈值来拆分薪水、体重和身高的值,或者如您所说让算法计算每个拆分并获得最佳值(解释得更好here
      猜你喜欢
      • 2017-03-18
      • 2016-02-08
      • 2019-05-10
      • 2017-05-13
      • 2016-04-10
      • 2020-08-19
      • 2011-05-23
      • 2018-10-04
      相关资源
      最近更新 更多