跳到主要内容 跳到补充内容

转换数据类型

训练机器学习模型时,数据集准确表示所有数据类型非常重要。如果一个变量的表示不准确,那么它可能会导致一个精度低的模型,或者一个看起来不错但应用于真实世界数据时预测效果不佳的模型。您需要能够辨别每个特征度量的是什么,以及如何为该特征分配适当的表示。

一般来说,机器学习会将浮点数或双精度数据类型视为数值,将字符串视为分类。然而,这可能并不总是正确的解释,我们将在下面的示例中看到。

这些示例基于已聚合以回答问题的数据集:“用户是否会在首次购买日期后的 30 天内回购任何产品?” 数据集包含不同数据类型的列,例如字符串、双精度、整数、布尔值和日期。

列和数据类型

具有列名和数据类型的表。

字符串

下表显示了数据集中的两列,它们都具有数据类型字符串。MarketingSource 列在值之间没有可测量的差异,例如,“Facebook”和“客户推荐”之间的差异。没有数值或标量关系,因此应将该列视为分类列。

另一方面,SourceCostPerAcquisition 列的值从“低”到“高”,它们之间的可量化差异更大。这并不像以美元为单位计算每项资源收购的平均成本那样精确,但这两个值之间有一个明显的数量级。在这种情况下,可以讨论 SourceCostPerAcquisition 应被视为分类还是数字。

PersonID、MarketingSource 和 SourceCostPerAquitation 列的示例数据

带有样本数据的表格。

在这些情况下,建议的做法是创建两个单独的配置,每个配置都有不同的功能分类。这些实验将分开进行。第一种配置将用于原始字符串表示。在第二种配置中,您将为不同的值提供一个数字映射,将列转换为数据类型double。例如,“低”= 1.0,“中”= 2.0,“高”= 3.0。在运行每个配置之后,您可以更多地了解哪种配置更适合该特定用例。在某些情况下,使用字符串表示是有意义的,而在其他情况下,数字表示可能更有意义。

数字

当列中数据描述的内容存在可测量的差异时,应将其表示为数值。例如成本、收入、利润、计数、总额和平均值。

有时数据集可能有一个无法测量的数值,因为它是一个字典或像 ID 这样的增量值。在我们的示例中,如果 PersonID 列中的值没有以“Person_”开头,可能会被误认为是数值。将 ID 视为数值将不准确地表示这些行之间的差异。这种情况下的最佳实践是将 ID 表示为字符串。在使用数据集之前,可能需要确定是否应将任何数值列转换为分类值。

日期

在机器学习的背景下,日期字段类型是分类变量。虽然日期和时间戳可以相互减去,但日期有几个组成部分。问题是要考虑哪些组件以及如何:值应该是年、月、月或年的某一天或某一天的某一小时?也许您想要以分钟为单位的时差?为了获得最大的预测能力,应该将日期解析为至少几个组成部分。其中一些组成部分可以是分类的,有些组成部分可以是数值的。

例如,日期可以解析为星期几。这可以表示为数值(1 到 7)或字符串值(“Sunday”到“Saturday”)。

数字和字符串形式的工作日

用数字和字符串表示工作日的表。

用数字表示一周中的某一天有一些问题。星期几开始,是星期一还是星期天?此外,即使一周中的某一天很重要,它也可能隐藏在周期性趋势中。

在某些情况下,这一趋势可能非常有说服力,如图 1 所示,本周从周一开始。

图表 1:星期一开始的每个工作日的平均销售额

用清晰的趋势线绘制每个工作日的销售额。

图 2 的数据与图1的数据相同,但有一天发生了变化,因此本周从周日开始。在这里,数据的重要性要低得多。

图表 2:星期天开始的每个工作日的平均销售额

没有明确趋势线的每个工作日的销售额图表。

图 3 说明了使用日期的解析组件作为数值的另一个问题。可能存在一个显著的模式,但如果它不是线性的,就会被忽略。由于这一点,以及日期组成部分中经常出现的周期性趋势(例如,每日或季度季节性),建议将这些组成部分用作分类值,而不是数值。

图表 3:每个工作日的平均销售额创周中新高

周中周期性趋势达到峰值的每个工作日的销售额图表。

Qlik AutoML使用自动功能工程将日期和时间戳的组成部分分离为各自不同的列。这有助于提高您创建的模型的预测能力。衍生自父日期功能的自动设计功能被归类为数字功能。如果需要,您可以覆盖此功能,以便将日期列视为分类列。有关更多信息,请参阅日期特性设计

日期差异

日期差异可以更好地替代增量 Id,因为增量 ID 只描述记录添加到表中的顺序。增量 ID 很容易受到数量变化的影响(在许多示例中,为每天的客户数),而日期差异则与速度无关。

日期差异可以是秒、小时、天、月或季度中的一个。选择与您拥有的数据粒度最相关的一个。例如,当查看月度数据时,天的日期差不会有任何实际值。在这种情况下,日期相差几个月更为重要。

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!