处理决策树模型中的缺失数据

2025 年 4 月 2 日 | 阅读 6 分钟

引言

本文重点介绍在决策树模型中处理缺失数据的不同方法。我们将探讨缺失数据在训练和预测过程中产生的各种影响,以及克服这些缺失值(因此)带来的问题的各种技术。无论您是初学者还是高级机器学习从业者,本文都将带您了解处理决策树中缺失数据的基本知识,包括案例修改和代码片段。

在机器学习专家和数据科学家工作中,尤其是在处理真实数据时,经常会遇到缺失数据的挑战。分类和回归决策树中几乎普遍存在的缺失值问题也不例外。如果基于缺失数据进行建模,其后果可能是模型出现偏差、准确性下降以及泛化能力减弱。

缺失数据类型

在深入研究处理缺失数据策略之前,了解可能出现的不同缺失模式至关重要。

  • 完全随机缺失 (MCAR): 在这种情况下,我们假设缺失的数据点在数据集中随机分布,并且它们不与任何特定的已知或未知变量相关。这些缺失值总是随机且无缘无故的,即没有根本的系统原因。
  • 随机缺失 (MAR): 在这种情况下,缺失数据的出现取决于数据集中已观察到的个体变量。然而,当考虑了先前的变量后,缺失变量就变得随机了。总之,缺失值可以由数据中的其他变量来解释,并且在纠正之后,缺失模式本身就没有特殊意义。
  • 非随机缺失 (MNAR): 这种模式代表了系统缺失数据与实际缺失值之间的系统性关联。数据缺失是非随机的,因为它与缺失部分数据的未观察值相关。

第一步是识别数据集中缺失数据的模式,这将有助于您选择可能更适合或更有效地处理上述某些模式的策略类型。

决策树如何处理缺失值。

决策树采用一种严格的方法,可确保在训练和预测过程中对缺失数据进行准确分析。

  • 特征分割:在决策树的开发过程中,树会自动根据基尼系数或信息增益等标准选择数据中最显著的特征。如果选定的分割特征的分支节点存在缺失值,则树会利用现有数据来决定将该实例分配到哪个分支,而不是完全忽略该实例。
  • 加权不纯度计算:在选择最佳分割特征方面,决策树会计算所得分割的不纯度(例如,基尼不纯度或熵)。如果正在评估的特征存在空白,则机器会计算包含空白的实例和不包含空白的实例的分支的不纯度。这样做是为了找出与缺失值相关的错误权重,并将该权重添加到正确分割的计算中。
  • 代理分割:为了增强预测时的鲁棒性,决策树会在训练阶段通过映射到代理分割来预见缺失值的存在。当原始分割器包含空字段时,分支分割和后备分割是备用规则或分支。

因此,这些系统性方法包括决策树将包含缺失值的实例整合到决策过程中,而不是被丢弃或被插补值替换。即使在遗漏数据的情况下,决策树数据保留的特性也是其强大之处之一。

如何处理决策树模型中的缺失数据示例

为了更好地理解决策树如何处理缺失数据以预测航班延误,让我们考虑一个创建模型来预测航班延误的案例。假设从数据集中找到的某些航班在“天气”属性上存在空白。

  • 最佳特征选择:首先,决策树算法选择最有信息量的特征,例如“一天中的时间”,来创建初始分割。算法的目的是以最有效的方式将数据分成子集,以区分例如延误和未延误的航班。
  • 加权不纯度计算:随着树的回归,它开始遇到“天气”特征的各种值缺失的点。为了克服这一点,算法会根据具有缺失“天气”数据的实例的权重来估计不纯度水平(例如熵或基尼不纯度)。这确保了由缺失值引起的不纯度被纳入整体不纯度计算中,这反过来又有助于决策过程。随着树的回归,它开始遇到“天气”特征的各种值缺失的点。为了克服这一点,算法会根据具有缺失“天气”数据的实例的权重来估计不纯度水平(例如熵或基尼不纯度)。这确保了由缺失值引起的不纯度被纳入整体不纯度计算中,这反过来又有助于决策过程。
  • 代理分割实现:为了在后续树节点中处理边缘变量“天气”中的缺失数据,决策树会进行代理分割。当主要分割规则(即“一天中的时间”)存在缺失值时,这些代理分割会作为备用特征或备用功能在航空公司中运行。在模型训练期间采用此类代理分割,即使在单个示例中天气相关特征不可用时,也可能能够进行推断。

决策树处理缺失数据的自适应方式,在分析中使用时,同时保持其预测结果的准确性。该模型将是计算加权不纯度级别并实现代理分割的方法,然后是隐式数据插补。这将是处理现实世界中经常缺失的缺失值的通用模型。

使用 Python 利用决策树

Python 生态系统,尤其是 scikit-learn 库,为构建和训练决策树模型时的缺失数据处理提供了框架。

导入所需库:首先,从 scikit-learn 中导入尽可能多的库,根据您正在处理的是分类任务还是回归任务,使用 `DecisionTreeClassifier` 或 `DecisionTreeRegressor`。

  • 加载和分割数据:使用 pandas 等数据处理库将您的数据集导入 Python。将数据分成特征集 (X) 和目标变量 (y),然后使用 `train_test_split` 等工具再次分成训练集和测试集。
  • 处理剩余的缺失值:可以使用 Python 的决策树算法在树的构建过程中感知缺失数据。但是,这些缺失值可能仍然存在于您数据集的某些点,因此您仍然可以使用均值或中值插补等技术来处理它们。
  • 构建决策树模型:创建所需的决策树模型类型(例如,`DecisionTreeClassifier` 或 `DecisionTreeRegressor`)并使用训练数据对其进行训练。在算法树构建过程中自动进行缺失值的预处理。
  • 进行预测:当模型训练好后,就可以使用它来预测新数据,即使这些新数据包含一些尚未确定的特征值。由于其固有的通用缺失处理方法,模型将能够智能地处理这些类型的缺失值。

结论

决策树在数据插补方面表现出色,其技术包括分割属性、不纯度计算和使用替代分割。我们可以肯定地说,决策树模型处理缺失数据的能力也许是它们的一大优势。