分类与连续特征选择/工程

数据挖掘 机器学习 特征选择 特征工程
2021-10-01 00:18:45

我正在使用具有许多潜在预测变量的数据集,例如:

年龄:连续

孩子的数量:离散和数字

婚姻状况:分类(已婚/单身/离婚..)

Id_User:分类(与此人进行第一次采访的用户的 ID)

我停在四个潜在的预测因素上,还有更多,但为了简短起见,这些足以问我的问题。

问题:连续特征很容易处理、规范化并将其提供给模型,那么分类独立 呢?

注意:我知道遵循某种模式的分类特征可以编码为整数并提供给模型,但是如果这些分类特征作为整数没有意义(1 表示单身,2 表示已婚,3 表示离婚;对于模型将其视为定量预测器,因此将其提供给它是没有意义的)

有什么方法可以处理这些不同类型的功能?

4个回答

您要查找的内容称为虚拟变量,它们将您的分类数据转换为矩阵,如果该人属于某个类别,则该列为 1,否则为 0。

变量 ID 不可转换,因为您不希望您的模型过度拟合您的 ID 数据(意思是:您不希望您的模型记住每个 ID 的结果,您希望您的模型是通用的)。

import pandas as pd
dataset2 = pd.get_dummies(dataset)

对于分类特征的编码,有两种常见的方式:

序数编码器

这就是您提到的“编码为整数”的方式。在这种方法中,从 0 开始的整数被分配给每个类别。这种方法的问题是它随机地对类别进行优先级排序。因此,在类别之间没有优先级的情况下,正如您提到的,这种编码是没有意义的。唯一有效的情况是为某些类别分配更大的整数是有意义的。

一热编码器

该方法为每个类别特征制作一个与类别数量相同大小的特征向量(one-hot vector)。该方法将向量的每个分量分配给一个类别。对于每个数据样本,它为样本中存在其对应类别的组件分配 1,并为其他组件分配 0。这种方法的好处是,与序数编码器不同,它不优先考虑任何类别。

因此,在您的情况下,我强烈建议您使用 one-hot 编码器。

处理分类输入的一种可能性是引入类别输入向量观察的类别输入向量由下式给出tnth

tn=[t1n,t2n,...,tKn],其中为类别数。如果连续输入向量属于类别,则对于对于Kxnkt1i=1i=kt1i=0ik

这种类型的编码称为分类热编码

正如其他人所说,虚拟变量是一种方法。另一种方法是从具有该属性的人群中进行定量统计。例如,您可以创建一个“婚姻状况平均值”列,并使用与该主题具有相同婚姻状况的人中目标变量的平均值填充它。

如果您使用的是树方法,只需将整数分配给每个类别即可近似虚拟变量,尤其是在只有几个类别的情况下。例如,如果婚姻状况的唯一类别是已婚、单身、离婚和丧偶,并且您分别为它们分配 0、1、2、3,那么唯一可能的拆分是已婚与其他一切、丧偶与其他一切,或已婚/单身与离婚/丧偶。因此,三分之二的拆分实际上是虚拟变量,一旦您再次拆分该变量,最后一个拆分将变成虚拟变量。