异常值:据我了解,决策树对异常值具有鲁棒性。任何人都可以通过一个例子来确认我的假设是否正确吗?(如果我有一个从 0 到 9 的特征,但有一个值为 10000 的异常值呢?)它是为该异常值样本创建一个单独的叶子,还是与其他树的叶子合并?
NULL 值:我们是否需要在使用决策树构建模型之前替换空值,或者决策树技术会自动处理它?
谢谢你。
异常值:据我了解,决策树对异常值具有鲁棒性。任何人都可以通过一个例子来确认我的假设是否正确吗?(如果我有一个从 0 到 9 的特征,但有一个值为 10000 的异常值呢?)它是为该异常值样本创建一个单独的叶子,还是与其他树的叶子合并?
NULL 值:我们是否需要在使用决策树构建模型之前替换空值,或者决策树技术会自动处理它?
谢谢你。
异常值:在决策树学习中,您根据一个指标进行拆分,该指标取决于拆分后左右叶子上的类的比例(例如,Giny Impurity)。如果异常值很少(应该是这种情况:如果没有,您不能使用任何模型),那么它们将与这些比例无关。因此,决策树对异常值具有鲁棒性。
空值:您必须替换它们(除非您使用的软件已经为您执行此操作,通常情况并非如此)。
编辑异常值:
我在异常值中所说的只是关于分类树。但是,在回归树中肯定不是这样。回归树的分裂标准取决于被分裂的两组的平均值,并且由于平均值受到异常值的严重影响,因此回归树将受到异常值的影响。解决这个问题有两种主要方法:要么删除异常值,要么构建自己的决策树算法,根据中值而不是平均值进行分割,因为中值不受异常值的影响。但是,基于中位数的树算法会非常慢,因为计算中位数比计算平均值要慢得多。
一般来说,决策树能够处理异常值,因为它们的叶子是根据旨在尽可能多地区分结果子集的指标构建的。无论您是使用 Gini Impurity、Information Gain 还是 Variance Reduction 来构建决策树都不会改变结果:所有这些模型都旨在创建尽可能大(和同质)的桶。在这种方法下,重要的是了解您的功能的一般行为。个人行为(异常值)被忽略,因为您从它们中获得的信息很少。
假设您的异常值只占数据集的一小部分,那么创建叶子来隔离它们的可能性很小(至少在创建决策树的第一步中),因为您将获得的关于互补的信息非常少子集。但是,如果您有大量异常值(但它们真的是异常值吗?),并且它们往往具有相同的结果,那么您可能会得到一片叶子来隔离它们。
另一方面,无论是通过替换、转换还是从您的观察中删除,都应该处理空值。这将取决于您的数据集。
决策树算法的流行实现要求您替换或删除空值,但 Quinlan(决策树算法之父)的原始 C4.5 算法专门设计了能够处理缺失值的算法。
请参阅以下链接中的讨论以获取简单的语言解释:
https://www.quora.com/In-simple-language-how-does-C4-5-deal-with-missing-values