将虚拟变量用于具有多个分类变量的机器学习
Using dummy variables for Machine Learning with more than one categorical variable
我希望对一些具有大量分类变量的数据使用 Python 进行多元线性回归或逻辑回归。我知道对于一个分类变量,我需要将其转换为虚拟变量,然后删除一种类型的虚拟变量以避免共线性,但是有人熟悉在处理多种类型的分类变量时应该采用什么方法吗?
我对每个人都做同样的事情吗?例如,将每种类型的记录转换为一个虚拟变量,然后为每个记录删除一个虚拟变量以避免共线性?
如果有很多分类变量,并且在这些变量中,如果有很多水平,使用虚拟变量可能不是一个好的选择。
如果分类变量具有 bin 形式的数据,例如变量 age
具有 10-18, 18-30, 31-50, ...
形式的数据,您可以使用标签编码或使用 [= 创建新的数值特征22=] 个 bin 或为较低年龄和较高年龄创建两个特征
如果您有从任务启动到结束的时间戳,例如,机器启动时间到机器停止时间,您可以通过以小时或分钟为单位计算持续时间来创建新功能。
给定许多分类变量但级别数很少,在这种情况下明显且唯一的出路是对分类变量应用 One-Hot Encoding。
但是当分类变量有很多水平时,可能会出现某些情况太少或太频繁。对此类数据应用 One-Hot Encoding 会严重影响模型性能。在这种情况下,建议应用某些业务 logic/feature 工程,从而首先减少级别数。此后,如果新功能仍然是分类的,您可以对它使用 One-Hot Encoding。
在需要为虚拟变量替换多个分类变量的情况下。该方法应该是为虚拟变量编码每个变量(如单个分类变量的情况),然后删除每个变量存在的每个虚拟变量的一个实例,以避免共线性。
基本上,每个分类变量都应被视为单个变量。
我希望对一些具有大量分类变量的数据使用 Python 进行多元线性回归或逻辑回归。我知道对于一个分类变量,我需要将其转换为虚拟变量,然后删除一种类型的虚拟变量以避免共线性,但是有人熟悉在处理多种类型的分类变量时应该采用什么方法吗?
我对每个人都做同样的事情吗?例如,将每种类型的记录转换为一个虚拟变量,然后为每个记录删除一个虚拟变量以避免共线性?
如果有很多分类变量,并且在这些变量中,如果有很多水平,使用虚拟变量可能不是一个好的选择。
如果分类变量具有 bin 形式的数据,例如变量 age
具有 10-18, 18-30, 31-50, ...
形式的数据,您可以使用标签编码或使用 [= 创建新的数值特征22=] 个 bin 或为较低年龄和较高年龄创建两个特征
如果您有从任务启动到结束的时间戳,例如,机器启动时间到机器停止时间,您可以通过以小时或分钟为单位计算持续时间来创建新功能。
给定许多分类变量但级别数很少,在这种情况下明显且唯一的出路是对分类变量应用 One-Hot Encoding。
但是当分类变量有很多水平时,可能会出现某些情况太少或太频繁。对此类数据应用 One-Hot Encoding 会严重影响模型性能。在这种情况下,建议应用某些业务 logic/feature 工程,从而首先减少级别数。此后,如果新功能仍然是分类的,您可以对它使用 One-Hot Encoding。
在需要为虚拟变量替换多个分类变量的情况下。该方法应该是为虚拟变量编码每个变量(如单个分类变量的情况),然后删除每个变量存在的每个虚拟变量的一个实例,以避免共线性。
基本上,每个分类变量都应被视为单个变量。