使用实体嵌入的结构化数据进行深度学习

嵌入(embedding)的想法来自于NLP(word2vec)

在这篇文章中,我们将讨论机器学习中的两个问题:第一个问题是关于深度学习如何在图像和文本上表现良好,并且我们如何在表格数据中使用它。第二个问题是你在构建机器学习模型时必须问自己的问题:在这个数据集中,我如何处理分类变量?

令人惊讶的是,我们可以用同样的答案来回答两个问题:实体嵌入(entity embeddings)。

在许多方面,深度学习的表现都优于其他机器学习方法:图像识别、音频分类和自然语言处理只是其中的一些例子。这些研究领域都使用所谓的“非结构化数据”,即没有预定义结构的数据。一般来说,这些数据也可以作为一个序列(像素、用户行为、文本)进行组织。在处理非结构化数据时,深度学习已经成为标准。最近的一个问题是,深度学习是否也能在结构化数据上表现最好。结构化数据是以表格形式组织的数据,其中列表示不同的特性,而行代表不同的数据样本。这类似于如何在Excel表中表示数据。目前,结构化数据集的黄金标准是梯度提升树模型(Chen & Guestrin, 2016)。在学术文献中,它们总是表现得最好。最近,深度学习表明,它可以与结构化数据的这些提升树模型的性能相匹配。实体嵌入在这方面起着重要的作用。

结构化和非结构化数据

实体嵌入

在将神经网络与结构化数据进行匹配时,实体嵌入已经被证明是成功的。例如,在Kaggle(大数据竞赛平台)的竞赛中,预测出租车行驶距离的获胜的解决方案使用实体嵌入来处理每一辆车的分类元数据。同样,德国大型超市Rossmann预测商店销售的第三解决方案使用了一种比第一和第二解决方案更复杂的方法。该团队通过使用一个简单的前馈神经网络和实体嵌入来实现这种成功。这包括超过1000个类别的变量,比如store id。

简而言之,嵌入指的是向量的类别表示。让我们来看看它是如何在短句中奏效的:

‘Deep learning is deep’

我们可以用一个向量来表示每个单词,所以“deep”这个词就变成了像是[0.20, 0.82, 0.45, 0.67]这样的变量。在实践中,一个人可以用像1 2 3 1这样的整数替换单词,并使用查找表来查找与每个整数相关的向量。这种做法在自然语言处理中非常常见,并且也被用于包括行为序列的数据。实体嵌入指的是在分类变量上使用这一原则,即一个分类变量的每一个类别都由一个向量表示。让我们快速回顾一下在机器学习中处理分类变量的两种常用方法。

  • 独热编码:创建二进制的子特性,如word_deep, word_learning, word_is。这些是属于该数据点的类别为1,其他的则为0。因此,对于“deep”这个词来说,特性word_deep将是1,特性word_learning和word_is等将是0。
  • 标签编码:像我们在前面的例子中那样分配整数,所以deep变成1,learning变成2等等。这个方法适用于基于树型结构的方法,但不适用于线性模型,因为它意味着所赋值的顺序。

实体嵌入基本上是将标签编码方法提升到下一个级别,不只是将一个整数赋值给一个类别,而是整个向量。这个向量可以任意大小,必须由研究人员指定。下面列出了3个实体嵌入的优点。

1. 实体嵌入解决了独热编码的缺点。具有多个类别的独热编码变量会导致非常稀疏的向量,这在计算上效率很低,而且很难达到优化。标签编码也解决了这个问题,但是只能被基于树型结构的模型使用。

2. 嵌入式数据提供了不同类别之间距离的信息。使用嵌入的美妙之处是,在神经网络训练过程中,分配给每个类别的向量也被训练。因此,在训练过程的最后,我们会得到一个代表每一个类别的向量。这些经过训练的嵌入式设备可以被可视化,从而为每个类别提供深入的见解。在Rossmann的销售预测任务中,德国各州的可视化嵌入显示了类似的各州的地理位置的集群。尽管这些地理信息都没有提供给模型。

3. 经过训练的嵌入式设备可以在非深度学习模型中被保存和使用。例如,每个月都可以训练分类特性的嵌入,并保存嵌入的特性。这些嵌入可以被用来训练一个随机森林或者一个梯度提升树模型,通过加载被学习的嵌入物来进行分类特性。

选择嵌入的大小

嵌入大小指的是表示每个类别的向量的长度,并且可以为每个类别特性设置。与神经网络中超参数的优化过程类似,对于选择嵌入的大小没有严格的规则。在出租车距离预测任务中,研究人员使用了每个特性为10的嵌入大小。这些特性有非常不同的维度,范围从7(每周的天数)到57106(客户id)。为每个类别选择相同的嵌入大小是一种简单而透明的方法,但可能不是最优的方法。

对于Rossmann商店的销售预测任务,研究人员选择了1到M(类别的数量)-1的值,最大的嵌入大小为10。例如,每周的一天(7个值)的嵌入大小为6,而store id(1115个值)的嵌入大小为10。然而,没有明确的规则来选择1和m-1之间的大小。

Kaggle的前主席和首席科学家Jeremy Howard重建了Rossmann竞争的解决方案,并提出了以下解决方案来选择嵌入尺寸:

# c is the amount of categories per feature
embedding_size = (c+1) // 2
if embedding_size > 50: 
    embedding_size = 50

可视化嵌入

嵌入的优点是可以将所学到的嵌入进行可视化,以显示哪些类别是相似的。最流行的方法是t-SNE,它是一种用于维数减少的技术,可以很好地利用高维性来可视化数据集。让我们用两个快速的可视化嵌入例子来结束这篇文章。以下是家得宝(美国家居连锁店)产品及其所属类别的可视化嵌入。类似的产品,如烤箱、冰箱和微波炉,彼此非常接近。对于像充电器、电池和钻头这样的产品也是如此。

家得宝产品的嵌入

另一个例子是在这篇文章中提到的Rossmann销售预测任务中,德国各州的状态嵌入。在嵌入中这些相邻的州接近于它们的地理位置。

德国各州嵌入的例子

本文为atyun出品,转载请注明出处。更多内容关注微信公众号atyun_com 或访问网站www.atyun.com

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2018-02-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据派THU

送你一份不正经的深度学习简述(附论文)

1894
来自专栏人工智能LeadAI

基于自然语言识别下的流失用户预警

在电商运营过程中,会有大量的用户反馈留言,包括吐槽的差评,商品不满的地方等等,在用户运营生态中,这部分用户是最有可能流失也是最影响nps的人群,通过对其评价的语...

38513
来自专栏腾讯高校合作

犀牛鸟·学问 | ECCV 2018论文宣讲研讨会回顾(二)

1872
来自专栏机器学习算法与Python学习

深度学习CNN发展大事件一览

深度学习(DeepLearning)尤其是卷积神经网络(CNN)作为近几年来模式识别中的研究重点,受到人们越来越多的关注,相关的参考文献也是层出不穷,连续几年都...

1320
来自专栏AI科技大本营的专栏

微信高级研究员解析深度学习在NLP中的发展和应用 | 公开课笔记

近年来,深度学习方法极大的推动了自然语言处理领域的发展。几乎在所有的 NLP 任务上我们都能看到深度学习技术的应用,并且在很多的任务上,深度学习方法的表现大大超...

1102
来自专栏数据魔术师

机器学习|刘博士谈机器学习--起手式

1658
来自专栏AI研习社

现在 tensorflow 和 mxnet 很火,是否还有必要学习 scikit-learn 等框架?

原题如下: 现在 tensorflow 和 mxnet 很火,那么对于深度学习(机器学习)准备入门的学生还有必要学习 scikit-learning,caffe...

42910

机器学习的稳健算法

机器学习通常被认为是解决困难问题的一个魔法解决方案,它将使我们从单纯的人类中解脱出来。但事实上,对于数据科学家和机器学习工程师来说,有很多问题比带有限规则集的图...

20811
来自专栏PPV课数据科学社区

三张图读懂机器学习 :基本概念、五大流派与九种常见算法

机器学习正在进步,我们似乎正在不断接近我们心中的人工智能目标。语音识别、图像检测、机器翻译、风格迁移等技术已经在我们的实际生活中开始得到了应用,但机器学习的发展...

4005
来自专栏人工智能

机器学习的基本概念

我发现,查阅和掌握机器学习基本概念的最佳方法是,回顾机器学习教科书的介绍章节,并观看典型的在线课程视频。

46810

扫码关注云+社区