特征工程

虚拟变量和虚拟编码

虚拟变量和虚拟编码

        我们在做特征工程时,往往会遇到这样的情况:数据集里有个特征叫做“职业”,新手在做特征工程的时候往往会这样设计:把职业做成一个特征变量,然后赋值0表示学生、1表示公务员、2表示工程师等等。这种分类方法,从术语上叫作“名义变量”(Nominal Variable )。从阅读的角度并没有错,在做机器学习的时候貌似也能起到不错的效果。但是这样做是否足够好?

        如果你的学习器是个多线性回归问题,你的模型是 。倘若采用名义变量,很明显这些名义变量将产生线性关系。然而“学生、公务员这些内容实际是并列关系,只是代表职业这个特征中的不同类别而已。显然用这种方式标记特征中的类别会对最终的性能产生影响。那么有没有更好的办法解决这个问题?

        答案其实很简单,我们这样设计:

类别\标记值

学生

公务员

工程师

学生

1

0

0

公务员

0

1

0

工程师

0

0

1

        这种将某个特征中的n个分类通过编码变成n个特征的0-1分类方法就叫虚拟编码(Dummy Coding),而这n个新特征就叫做虚拟变量(Dummy Variable)。因此虚拟变量的定义是,是把一个变量经过更高级别的测量方法进行编码后,表现成分类变量。

        大家可以看下这个教程中的2.1,很好的虚拟编码的例子。

.

原创内容,转载请注明出处。

Leave a Reply

Your email address will not be published. Required fields are marked *