Encoding Categorical Features

如果有几千个不同的values如何encode?
我想的是通过analysis把相似的归类变成sub-categories再做one-hot encoding。网上看到又说Target Encoding。请问老师哪种更好,有没有其他更好的办法?

目前最常用的方法是利用Neural Network得到这个feature的embedding,也就是一个dense vector representation。具体做法是:直接把这个categorical feature作为neural network的一个input value(或者把这个categorical feature先做one-hot encoding, 然后把这个很长很长的sparse vector作为neural network的Input的一部分),然后利用你定义的label训练出这个neural network的网络结构。这样一来,在它的hidden layer里面你就能得到这个feature的dense vector表示了。这个dense vector的长度我们也可以自己在NN网络结构中自己定义,比如,你可以用4个value的vector来表示“国家”这个feature。

上述Neural Network构造embeddings是现在工作中最常用的方法,面试中这样说也是没问题的。如果不想用NN,那么target encoding也是一个可行的方案。但是效果一般不如NN embedding.