摘要: 本文详细阐述了深度学习如何来实现处理结构化数据的方法。
本博文将涉及机器学习中两个重复出现的问题:第一个问题是深度学习在图像和文本中都有较好的表现,我们又如何将其用于表格数据?其次,在构建机器学习模型时,你必须始终问自己一个问题:将如何处理数据集中的分类变量?令人惊讶的是,我们可以用相同的答案回答这两个问题:实体嵌入。
现在,深度学习在许多方面都优于其他机器学习方法:图像识别,音频分类和自然语言处理只是众多应用中的一部分。这些研究领域都使用所谓的“非结构化数据”,即没有预定义结构的数据。一般来说,这些数据也可以按照一定的顺序(像素,用户行为,文本)排列。深度学习已成为处理非结构化数据的标准。现在的问题是深度学习是否也可以在结构化数据上有较好的表现。结构化数据是以表格格式组织的数据,其中列表示不同的特征,而行表示不同的数据样本。这与数据在Excel工作表中的表现形式类似。目前,结构化数据集的黄金标准是梯度提升树GBT模型(Chen&Guestrin,2016)。他们在Kaggle比赛以及学术文献中一直都有最好的表现。最近的深度学习已经表明它可以在结构化数据上匹配这些增强树模型。实体嵌入在此扮演着重要角色。
结构化数据与非结构化数据
实体嵌入
实体嵌入在结构化数据上拟合神经网络这一方面已经取得成功,例如,Kaggle竞赛中的获胜方案使用实体嵌入来处理每次乘坐的分类元数据预测出租车车距(deBrébisson et al.,2015)。同样,预测罗斯曼药店商店销售任务的第三个解决方案使用了比第一个和第二个解决方案更为简单的方法。该团队使用一个具有实体嵌入的简单前馈神经网络作为分类变量来实现,分类变量的种类超过1000个类别,如商店ID(Guo&Berkahn,2016)。
如果这是你第一次阅读有关嵌入的内容,我建议你先阅读本文。简而言之,嵌入是指向量的类别表示。让我们来演示一下下述这句话是如何工作的:
‘Deep learning is deep’
我们可以用向量来表示每个单词,所以“deep”这个单词变成类似[0.20,0.82,0.45,0.67]的东西。实际上,人们会用像1 2 3 1这样的整数代替单词,并使用查找表来查找链接到每个整数的矢量。这种做法在自然语言处理中非常常见,并且还用于包含行为序列的数据,如在线用户的踪迹。实体嵌入是指在分类变量上使用这一原则,其中分类变量的每个类别都由向量表示。
让我们快速回顾下机器学习处理分类变量的两种常用方法。
1. 热编码(One-hot encoding):创建二进制子特征,如word_deep,word_learning,word_is。属于该数据点的类别值为1,其他值为0。所以,对于“deep”这个词,特征word_deep为1,word_learning,word_is则为0。
2. 标签编码(Label encoding):像之前的例子那样分配整数,因此“deep”为1,“learning”为2等等。这种方法比较适用于基于树的方法,但不适用于线性模型,因为它意味着赋值的顺序。
实体嵌入基本上将标签编码方法上升了一个层次,不仅仅是将一个整数分配给一个类别,而是整个向量。这个向量可以是任意尺寸,并且必须由研究人员指定。你可能想知道这些实体嵌入的优点是什么。
1.实体嵌入解决了独热编码的缺点。具有许多类别的独热编码变量会导致非常稀疏的向量,这在计算上是无效的,并且难以优化。标签编码解决了这一问题,但只能用于基于树的模型。
2.嵌入提供有关不同类别之间距离的信息。使用嵌入的优点在于,在神经网络的训练期间,也要训练分配给每个类别的向量。因此,在训练过程结束时,我们最终会得到一个代表每个类别的向量。这些训练过的嵌入被可视化,为每个类别提供可视化。在Rossmann销售预测任务中,即使没有为模型提供地理位信息,德国的可视化嵌入显示了与各州地理位置相似的集群。
3.训练好的嵌入可以保存并用于非深度学习模型。例如,每月训练分类特征的嵌入并保存。通过加载训练好的分类特征嵌入,我们可以使用这些嵌入来训练随机森林或梯度提升树GBT模型。
选择嵌入尺寸
嵌入尺寸是指代表每个类别的向量长度,并且可以为每个分类特征设置。 类似于神经网络中超参数的微调(tuning),嵌入尺寸的选择没有硬性的规定。在出租车距离预测任务中,每个特征的嵌入尺寸为10。这些特征具有不同的维度,从7(一周的天数)到57106(客户端ID)。为每个类别选择相同的嵌入尺寸是一种简单易行的方法,但可能不是最优的方法。
对于Rossmann商店销售预测任务,研究人员选择1和M之间的一个值(类别数量)-1,最大嵌入尺寸为10。例如,一周中的某天(7个值)的嵌入尺寸为6, 而商店ID(1115个值)的嵌入尺寸为10。但是,作者没有明确的选择1和M-1之间选择的规则。
Jeremy Howard重建了Rossmann竞赛的解决方案,并提出了以下解决方案来选择嵌入尺寸:
可视化嵌入
嵌入的优点是可以将已经学习到的嵌入进行可视化处理,以显示哪些类别彼此相似。最流行的方法是t-SNE,它是一种降维技术,特别适用于高维数据集的可视化处理。最后,让我们列举两个简单的可视化嵌入的例子。以下是家用产品的可视化嵌入及其所属类别。类似的产品,如烤箱,冰箱和微波炉之间非常相似;充电器,电池和钻头等产品也是如此。
另一个例子是在本文前面提到的Rossmann销售预测任务中德国各州的学习嵌入。嵌入中各州之间的邻近性与其地理位置相似。
德国各州学习嵌入示例
参考资料
[1]Chen, T., & Guestrin, C. (2016, August). Xgboost: A scalable tree boosting system. In Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining (pp. 785–794). ACM.
[2]De Brébisson, A., Simon, É., Auvolat, A., Vincent, P., & Bengio, Y. (2015). Artificial neural networks applied to taxi destination prediction. arXiv preprint arXiv:1508.00021.
[3]Guo, C., & Berkhahn, F. (2016). Entity embeddings of categorical variables. arXiv preprint arXiv:1604.06737.
以上为译文。
文章原标题《Using Deep Learning for Structured Data with Entity Embeddings》,
译者:Mags,审校:袁虎。
原文链接
干货好文,请关注扫描以下二维码: