类别特征处理与实体嵌入
常见的类别特征处理方法
- one-hot (太经典这里不再介绍)
- histgram 映射
- Entity Embeddings(实体嵌入)
histgram 映射
比如我们根据人们的一些身体特征来预测这个人会不会得糖尿病
其中有一个类别特征为男或者女,这时候我们如何对这个特征进行映射处理呢。
按照histgram 的处理方式,会按照预测的类别的占比来标注属性。也是假如有这样一个统计列表:
性别\是否得病 | 有糖尿病 | 无糖尿病 |
---|---|---|
男 | 60 | 40 |
女 | 50 | 50 |
我们可以男:60/(60+40) = 0.6;女:50/(50+50) = 0.5。作为各自的特征。
Entity Embeddings
Embedding的起源和火爆都是在NLP中的,经典的word2vec都是在做word embedding这件事情,而真正首先在结构数据探索embedding的是在kaggle上的《Rossmann Store Sales》中的rank 3的解决方案,作者在比赛完后为此方法整理一篇论文放在了arXiv,文章名:《Entity Embeddings of Categorical Variables》。
其网络结构如下图所示:
结构非常简单,就是embedding层后面接上了两个全连接层,代码用keras写的,构建模型的代码量也非常少,用的keras的sequence model。
文章有几点分析比较值得关注的地方。
- 店铺所在地的嵌入向量在用TSNE投影到两维空间后和地图位置有着极大的相似性。
- 使用嵌入后的向量可以提高其他算法(KNN、随机森林、gdbt)的准确性。
- 作者探索了embedding和度量空间之间的联系,试图从数学层面深入探讨embedding的作用。
后边又有人在做了更复杂的网络在做 Entity Embeddings,如:《Artificial Neural Networks Applied to Taxi Destination Prediction》