决策树分类器如何工作?

数据挖掘 分类 特征选择 决策树
2022-02-22 07:19:37

特别是我正在使用SKLearnwith class DecisionTreeClassifier

我真的很想了解树如何以简单的视觉方式构建自己。大多数解释都使用美德信号数学方程,我相信有一种伪方法可以解释这一点。

有什么简单的文章吗?

  1. 树是如何创建的?一个简单的 2 个功能示例。

  2. 如果 2 个相同的特征训练集导致不同的类,它会做什么?

  3. 如果feature1+feature2训练输出classA,然后我们只测试它会做什么feature1它会预测A吗?

  4. 培训Y values有意义吗?例如,如果 Y 类是 1,2,3,4.. ,它是否在它们的值中寻找“意义”并且它与数字 X 值的关系?或者它只是一个没有数学意义的类?

  5. 这个概念与寻找特征向量之间的距离有何不同?谁提供更好的结果,何时?

  6. 有哪些方法可以调整分类器参数(分支、深度等)以改进它?

如果没有美德信号方程,很难找到关于这种魔法如何运作的简单观点。

2个回答

你必须知道学习最优决策树是NP-complete您发现的决策树的任何(开源)实现,例如您提到的那个,通常都是对一个难题(例如,熵增益、基尼指数等)的基于信息的贪婪近似。因此,需要一些数学才能完全掌握整个画面。

  1. 您必须了解近似值背后的数学原理,才能可视化如何诱导决策树,因为您必须回答“特征A1在树的节点中拆分数据集比A2?”
  2. 我不完全理解你的问题。如果您要问的是,它会在相同的训练集但具有不同的类上做一个训练有素的决策树,那么答案很简单,因为它会有意想不到的行为。观察到没有修剪(也没有正则化)的完全成长的决策树将在完全训练中提供 100% 的准确度(即,当它获得与用于训练的预测相同的集合时)。因此,将相同的训练集,但具有不同的类别,提供给经过训练的决策树(在相同的训练集上),其准确度通常低于 100%。
  3. 一般来说,不能保证获得相同的课程。
  4. 同样,您必须了解引擎盖下的数学。例如,基于熵的决策树学习基于输出目标变量 (Y在你的情况下)。
  5. 这是个有趣的问题。决策树学习是一种符号方法,而基于距离(或也称为基于实例)的学习是一种功能方法。众所周知,函数方法具有更好的泛化能力,而符号方法在统计上的鲁棒性较差,因为它们代表数值域中的粗略概念,但在需要解释时更容易解释。
  6. 众所周知,决策树会过度拟合数据。因此,使用了pre-pruning或post-pruning等正则化方法,例如最大分割数、叶子节点中的类纯度等。设置此类参数没有经验法则,但可以进行网格搜索,如果需要的话。

我认为这里的第一个问题是你对监督学习没有一个清晰的理解。以下是一些基础知识:

  • 训练阶段的输入是一组带标签的实例。一个有标签的实例是一个固定大小的特征值向量(特征必须始终处于相同的顺序)及其对应的标签(或类)。
  • 训练的输出是一个模型。
  • 可以将模型应用于未标记的实例以预测其相应的标签。

因此,一些问题可以笼统地回答:

  1. 两个不同的训练集导致两个不同的模型。他们是完全独立的。
  2. 特征集总是固定的,在训练和测试时必须完全相同。
  3. 监督模型的目标是找到特征和标签之间的关系,以便尽可能准确地预测任何新特征集的标签。但它对两者的含义一无所知,这是一个纯粹的统计过程,即计算某事发生的频率。
  4. 向量之间的距离用于一些学习算法(例如 kNN),而不是决策树。不同的学习算法依赖于不同的方法,它们并不完全可比。

现在非常简单的介绍一下决策树学习来回答问题1:

  • 该算法从根开始逐步构建树,一次一个节点。
  • 创建节点时,算法会计算每个特征通过知道特征的值可以获得多少关于标签的信息。这是根据该节点的当前训练数据计算得出的。
  • 它选择特征带来关于标签的最多信息:节点由诸如 == value之类的条件组成,导致两个可能的子节点。xixi
  • 两个孩子“接收”过滤值后剩下的部分训练数据:只有 == value对应于true的节点的实例,以及只有 != value对应于false的节点的实例。xixi
  • 重复创建节点的过程,直到满足某些条件。当到达一个叶子时,该算法只是为其“接收”的训练数据子集分配多数标签。

最后一个问题:

  1. DT 学习算法有几种变体(甚至在它们的实现中也可以有变体),每个变体都有几个可以调整的超参数。

请注意,数学方程不是“美德信号”,人们需要它们才能准确理解如何实施该方法。