将连续数据转换为分类数据的目的

数据挖掘 机器学习 数据 分类数据 数值
2022-02-02 12:45:27

我正在阅读使用泰坦尼克号数据集的笔记本教程,链接在这里,并注意到他们非常喜欢序数数据而不是连续数据。

例如,他们将 Age 和 Fare 特征都转换为有序数据箱。

我知道在手动进行数据分析时,像这样对数据进行分类很有帮助,因为从人类的角度来看,更少的类别使数据更容易理解。但直觉上,我认为这样做会导致我们的数据失去精度,从而导致我们的模型失去精度或准确性。

有人可以解释何时将数值数据转换为序数数据是合适的,以及为什么它有效的基本统计数据?

3个回答

您的直觉通常是正确的 - 在许多情况下,过早离散连续变量是不可取的。这样做会丢弃潜在的有意义的数据,结果可能高度依赖于你如何存储连续变量,这通常是相当随意的。例如,按年龄十年对人进行分组意味着 50 岁和 59 岁之间的相似性高于 59 岁和 60 岁之间的相似性。这样做可能在统计能力方面有一些优势,但如果您的分箱没有反映数据中的自然切点,您可能只是丢弃了有价值的信息。

你可以在这里找到一个非常相似的问题:

https://stats.stackexchange.com/questions/68834/what-is-the-benefit-of-break-up-a-continuous-predictor-variable?noredirect=1&lq=1

你的问题很笼统,我只能回答一部分。最重要的是,没有办法说这个或那个总是更好。这取决于您使用的方法和(通常)还取决于数据。让我们考虑两个例子。

1)想想神经网络。它们通常可以很好地处理没有太大差异的数据。这是数据经常被缩放和/或标准化的原因之一。在这里将连续特征转换为分类特征可能会有所帮助。

2)考虑线性回归。您需要在回归方程中指定函数形式才能很好地捕获数据生成过程。假设您将“年龄”作为特征,并且该特征与您的 y 没有线性关系。您可以尝试二次形式或其他方法。但是,如果您生成年龄等级(例如 10 年间隔),您可以将此特征作为“假人”添加到您的模型中,并且您无需过多担心“年龄”作为特征的参数化(假人的工作方式类似于在这种情况下回归样条)。

所以这真的取决于问题。实际上,您需要尝试不同的表示形式,具体取决于您的模型和数据。也把 Kaggle 内核看得太严重了。他们经常提供很好的例子,但大多数内核都是真正的动手操作。

将数值数据转换为分类数据需要熟悉数据集。例如,在您提到的泰坦尼克号数据集的情况下,乘客的年龄或等级具有预测能力,但如何?

票价是根据舱位而定的,不同的舱位可能在不同的甲板上。所以本质上,它是一个分类特征。

对于年龄,您不会期望 9 岁和 10 岁的生存概率不同,因为其他所有特征(类别、性别等)都是相同的。可视化数据并寻找自然拐点非常重要。