决策树和序数编码:实用指南

分类变量至关重要,因为它们通常承载着影响预测模型结果的重要信息。然而,它们的非数值性质给模型处理带来了独特的挑战,需要特定的编码策略。本文将首先讨论数据集中常见的不同类型的分类数据。我们将深入探讨序数编码,以及如何在实现决策树回归器时利用它。通过使用 sklearn 中的 OrdinalEncoder 和 Ames 住房数据集的实际 Python 示例,本指南将为您提供有效实施这些策略的技能。此外,我们将直观地演示这些编码变量如何影响决策树回归器的决策。

通过我的书《进阶数据科学启动您的项目。它提供了带有可运行代码的自学教程

让我们开始吧。

决策树和序数编码
图片来源:Kai Pilger。保留部分权利。

概述

这篇博文分为三部分;它们是:

  • 理解分类变量:序数与名义
  • 在 Python 中实现序数编码
  • 可视化决策树:序数编码数据的洞察

理解分类变量:序数与名义

数据集中的分类特征是基本要素,在预处理过程中需要仔细处理,以确保准确的模型预测。这些特征大致可分为两类:序数名义。序数特征在其类别之间具有自然的顺序或层次结构。例如,Ames 数据集中的“ExterQual”特征描述了房屋外部材料的质量,其级别包括“差”、“一般”、“平均”、“好”和“优秀”。这些类别之间的顺序非常重要,可以在预测建模中加以利用。相比之下,名义特征不暗示任何固有的顺序。类别是独立的,并且它们之间没有顺序关系。例如,“Neighborhood”特征表示不同的社区名称,如“CollgCr”、“Veenker”、“Crawfor”等,没有任何内在的排名或层次结构。

分类变量的预处理至关重要,因为大多数机器学习算法需要数值格式的输入数据。这种从分类到数值的转换通常通过编码实现。编码策略的选择至关重要,并受分类变量类型和所用模型的影响。

机器学习模型的编码策略

线性模型,例如线性回归,通常对序数和名义特征都采用独热编码。这种方法将每个类别转换为一个新的二元变量,确保模型将每个类别视为一个独立的实体,没有任何序数关系。这至关重要,因为线性模型假定区间数据。也就是说,线性模型线性解释数值输入,这意味着分配给序数编码中每个类别的数值可能会误导模型。线性模型可能会错误地假定序数编码中每个增量整数值反映了基础定量度量的等步长增加,如果此假设不成立,则可能会扭曲模型输出。

基于树的模型,包括决策树和随机森林等算法,以不同的方式处理分类数据。这些模型可以从序数特征的序数编码中受益,因为它们根据特征值进行二元拆分。序数编码中保留的固有顺序可以帮助这些模型进行更有效的拆分。基于树的模型本质上不评估类别之间的算术差异。相反,它们评估在任何给定编码值处的特定拆分是否能最好地将目标变量分割为其类别或范围。与线性模型不同,这使得它们对类别间距的敏感度较低。

现在我们已经探讨了分类变量的类型及其对机器学习模型的影响,下一部分将指导您实际应用这些概念。我们将深入探讨如何使用 Ames 数据集在 Python 中实现序数编码,为您提供有效准备数据以进行模型训练的工具。

想开始学习进阶数据科学吗?

立即参加我的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

在 Python 中实现序数编码

要在 Python 中实现序数编码,我们使用 sklearn.preprocessing 中的 OrdinalEncoder。此工具特别适用于为基于树的模型准备序数特征。它允许我们手动指定类别的顺序,确保编码尊重数据的自然层次结构。我们可以使用扩展数据字典中的信息来实现这一点。

上面的代码块通过首先填充缺失值,然后应用适当的编码策略,有效地处理了分类变量的预处理。通过在编码之前查看数据集,我们可以确认我们的预处理步骤已正确应用

上面的输出强调了 Ames 数据集中在任何序数编码之前的序数特征。下面,我们说明提供给 OrdinalEncoder 的具体信息。请注意,我们不提供特征列表。我们只提供数据集中每个特征的排名顺序。

这为序数编码的有效应用奠定了基础,其中类别的自然顺序对于后续模型训练至关重要。特征中的每个类别都将转换为反映其指定等级或重要性的数值,而不假定它们之间存在等距间隔。

转换后的数据集如下所示。强烈建议与原始数据集进行快速检查,以确保结果与我们从数据字典中获取的信息一致。

在本节关于实现序数编码的结尾,我们为稳健的分析奠定了基础。通过将每个序数特征精确地映射到其固有的层次值,我们使预测模型能够更好地理解和利用数据中固有的结构化关系。对编码细节的仔细关注为更具洞察力和精确度的建模铺平了道路。

可视化决策树:序数编码数据的洞察

本文的最后一部分,我们将深入探讨决策树回归器如何解释和利用这些经过精心编码的数据。我们将通过视觉方式探索决策树的决策过程,突出我们特征的序数性质如何影响模型中的路径和决策。这种视觉描绘不仅将证实正确数据准备的重要性,还将以具体的方式阐明模型的推理。现在,分类变量已经过深思熟虑的预处理和编码,我们的数据集已为下一个关键步骤做好了准备:训练决策树回归器。

通过可视化决策树,我们提供了模型如何处理特征以得出预测的图形表示

可视化决策树。点击放大。

这棵树中用于分割的特征包括“ExterQual”、“FireplaceQu”、“BsmtQual”、“GarageQual”和“KitchenQual”。选择这些特征是基于它们在分割数据时降低 MSE 的能力。这些分割的级别或阈值(例如,ExterQual <= 2.5)是在训练过程中确定的,以优化将数据点分离成更同质的组。这种可视化不仅证实了我们编码策略的有效性,还展示了决策树为预测建模带来的战略深度。

进一步阅读

API

教程

Ames 住房数据集和数据字典

总结

在本文中,您研究了序数和名义分类变量之间的区别。通过使用 Python 和 sklearn 中的 OrdinalEncoder 实现序数编码,您以尊重数据固有顺序的方式准备了 Ames 数据集。最后,您亲身体验了如何通过可视化决策树和编码数据来提供切实的洞察,从而更清晰地了解模型如何根据您提供的特征进行预测。

具体来说,你学到了:

  • 分类变量的基本区别:理解序数变量和名义变量之间的区别。
  • 模型特定的预处理需求:不同的模型,如线性回归器和决策树,需要对分类数据进行定制的预处理以优化其性能。
  • 序数编码中的手动指定:在 OrdinalEncoder 中使用“categories”来自定义您的编码策略。

您有任何问题吗?请在下面的评论中提出您的问题,我将尽力回答。

开始学习进阶数据科学!

Next-Level Data Science

掌握数据科学项目成功的思维模式

...通过清晰、实用的例子建立专业知识,尽量减少复杂的数学,并专注于实践学习。

在我的新电子书中探索如何实现
新一代数据科学

它提供了自学教程,旨在指导您从入门到高级。学习优化工作流程、管理多重共线性、完善基于树的模型以及处理缺失数据——以及更多,以帮助您获得更深入的见解并用数据进行有效的故事讲述。

通过实际练习提升您的数据科学技能


查看内容

暂无评论。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。