原理阐述
- 当我们有一个包含
n
n
n个类别的分类变量时,哑变量会创建
n
n
n个新的变量(也就是哑变量)。对于每个样本,在这
n
n
n个新变量中,只有一个变量的值为1,其余
n
−
1
n - 1
n−1个变量的值为0,这个为1的变量就代表了该样本所属的类别。例如,对于“性别”这个分类变量(有男、女两个类别),会创建两个哑变量,假设为“性别_男”和“性别_女”。如果一个样本是男性,那么“性别_男”这个哑变量的值为1,“性别_女”的值为0;反之,女性样本对应的“性别_女”为1,“性别_男”为0。
应用场景
- 在回归分析中被广泛使用。比如在线性回归模型中,如果直接将分类变量(如职业类别)放入模型,模型会错误地假设类别之间存在一种数量上的关系(比如把职业类别用数字1、2、3等来表示,模型可能会认为3对应的职业类别在数值上是1对应的职业类别的3倍)。而使用哑变量可以避免这种错误的假设,正确地处理分类变量对因变量的影响。
- 在逻辑回归用于分类问题时,如预测贷款是否违约,对于像“贷款渠道”这种分类变量,将其转换为哑变量后放入模型,能够更好地捕捉不同贷款渠道与违约概率之间的关系。
与其他编码方式对比
- 与标签编码(Label Encoding)不同,标签编码是将分类变量的类别转换为整数,会引入类别之间的顺序关系,而哑变量不存在这种顺序关系,更适合没有自然顺序的分类变量。例如,对于“颜色”分类变量(红、绿、蓝),使用标签编码可能会让模型误解为红<绿<蓝这种顺序关系,而哑变量则不会。
- 相比二进制编码(Binary Encoding),哑变量在类别数量较少时更直观。二进制编码更侧重于高效地利用二进制来表示较多的类别,当类别数较少时,哑变量能更直接地展示每个类别是否出现的情况。例如,对于只有3个类别的变量,哑变量可以很清晰地用3个变量表示每个类别,而二进制编码可能会因为编码转换过程稍显复杂而不太直观。