将虚拟变量用于具有多个分类变量的机器学习

时间:2017-05-24 13:47:53

标签: python machine-learning dummy-variable

我希望在一些具有大量分类变量的数据上使用Python进行多元线性回归或Logistic回归。我理解,使用一个分类变量,我需要将其转换为虚拟对象,然后删除一种类型的虚拟对象,以避免共线性,但是在处理多种类型的分类变量时,是否有人熟悉该方法应该是什么? / p>

我是否为每个人做同样的事情?例如,将每种类型的记录转换为虚拟变量,然后为每个删除一个虚拟变量以避免共线性?

2 个答案:

答案 0 :(得分:1)

如果有许多分类变量,并且在这些变量中,如果有很多级别,使用虚拟变量可能不是一个好的选择。

如果分类变量具有二进制形式的数据,例如,具有age形式数据的变量10-18, 18-30, 31-50, ...,您可以使用标签编码或使用均值/中值创建新的数字特征箱子或为低年龄和高年龄创造两个特征

如果您有从启动任务到结束的时间戳,例如,机器的启动时间到机器停止的时间,您可以通过计算小时或分钟的持续时间来创建新功能。

鉴于许多分类变量但级别较少,在这种情况下明显且唯一的出路是对分类变量应用单热编码。

但是当分类变量有很多级别时,某些情况可能会过于罕见或过于频繁。对此类数据应用单热编码会严重影响模型性能。在这种情况下,建议应用某些业务逻辑/功能工程,从而首先减少级别数。此后,如果新功能仍属于分类,则可以对其使用One-Hot Encoding。

答案 1 :(得分:0)

如果需要为虚拟对象替换多个分类变量。方法应该是为虚拟对每个变量进行编码(如单个分类变量的情况),然后删除每个变量存在的每个虚拟对象的一个​​实例,以避免共线性。

基本上,每个分类变量应该被视为单个变量。