摘要: 本文详细阐述了深度学习如何来实现处理结构化数据的方法。

嵌入源自于NLPword2vec)中的单词学习,上图来自Aylien

本博文将涉及机器学习中两个重复出现的问题:第一个问题是深度学习在图像和文本中都有较好的表现,我们又如何将其用于表格数据?其次,在构建机器学习模型时,你必须始终问自己一个问题:将如何处理数据集中的分类变量?令人惊讶的是,我们可以用相同的答案回答这两个问题:实体嵌入。

现在,深度学习在许多方面都优于其他机器学习方法:图像识别,音频分类和自然语言处理只是众多应用中的一部分。这些研究领域都使用所谓的“非结构化数据”,即没有预定义结构的数据。一般来说,这些数据也可以按照一定的顺序(像素,用户行为,文本)排列。深度学习已成为处理非结构化数据的标准。现在的问题是深度学习是否也可以在结构化数据上有较好的表现。结构化数据是以表格格式组织的数据,其中列表示不同的特征,而行表示不同的数据样本。这与数据在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,审校:袁虎。

原文链接

干货好文,请关注扫描以下二维码:

实体嵌入(向量化):用深度学习处理结构化数据相关推荐

  1. 【干货】Entity Embeddings : 利用深度学习训练结构化数据的实体嵌入

    [导读]本文是数据科学家Rutger Ruizendaal撰写的一篇技术博客,文章提出深度学习在非结构数据中有不错的表现,当前通过实体嵌入也可以使之在结构化数据中大放异彩.具体讲解了如何利用深度学习训 ...

  2. 如何用深度学习处理结构化数据?

    这篇博客主要关注的是深度学习领域一个并不非常广为人知的应用领域:结构化数据.本文作者为旧金山大学(USF)在读研究生 Kerem Turgutlu. 使用深度学习方法按照本文所介绍的步骤处理结构化数据 ...

  3. 【深度学习】吴恩达深度学习-Course3结构化机器学习项目-第一周机器学习(ML)策略(1)作业

    题目仅含中文!! 视频链接:[中英字幕]吴恩达深度学习课程第三课 - 结构化机器学习项目 参考链接: [中英][吴恩达课后测验]Course 3 - 结构化机器学习项目 - 第一周测验 吴恩达< ...

  4. 吴恩达深度学习笔记——结构化机器学习项目(Structuring Machine Learning Projects)

    深度学习笔记导航 前言 传送门 结构化机器学习项目(Machine Learning Strategy) 机器学习策略概述 正交化(orthogonalization) 评价指标 数字评估指标的单一性 ...

  5. 吴恩达深度学习 | (15) 结构化机器学习项目专项课程第二周学习笔记

    课程视频 第二周PPT汇总 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第三部分结构化机器学习项目专项的第二周课程:机器学习(ML)策略(2) . 目录 1. 进行误差分析 2. 清除标注错误 ...

  6. Spark最新的两大研发方向深度学习和结构化流处理

  7. DeepTables: 为结构化数据注入深度学习的洪荒之力

    近年来深度学习在CV.NLP等非结构化领域展现出超强的统治力,突破最高水平的算法层出不穷.深度学习在结构化和非结构化领域表现出来的巨大反差已成为热门话题,自从以XGBoost.LightGBM为代表的 ...

  8. 【华为云技术分享】Spark如何与深度学习框架协作,处理非结构化数据

    随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...

  9. 知识抽取学习笔记:面向非结构化数据的抽取

    1概念 知识抽取,即从不同来源.不同结构的数据中进行知识提取,形成知识(结构化数据)存入到知识图谱.大体的任务分类与对应技术如下图所示: 2知识抽取的技术与难点 从结构化数据库中获取知识:D2R 难点 ...

最新文章

  1. fcitx输入法在wps、wineqq中失灵问题的解决
  2. 2015年度打榜之数据备份硬件
  3. Invalid character escape '\o'.
  4. python运行py文件参数错误_Pycharm运行加载文本出现错误的解决方法
  5. Django框架深入了解_02(DRF之序列化、反序列化)
  6. Poj - 3254 Corn Fields (状压DP)(入门)
  7. ensp 查看配置命令
  8. wicket_Wicket模型的干净方法
  9. 邮件安全之邮件认证技术
  10. hdu 2609 How many(最小表示法)
  11. javascript基础修炼——前端路由的基本原理
  12. 【Spring】Spring注解配置okhttp3
  13. 最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器
  14. python 第一行 报错_解决python的空格和tab混淆而报错的问题
  15. vue 创建图片坐标点_Vue Echarts 显示地图且根据坐标设置标注点
  16. 办公自动化:PDF文件合并器,将多个PDF文件进行合并...
  17. Android MVP架构实现
  18. 算法设计与分析——背包问题(Java)
  19. mysql ip访问限制解除
  20. 阿南达医药科技宣布FDA批准了针对阿片类用药障碍(OUD)的新药临床试验申请

热门文章

  1. arduino小车电机不转_一文解析—电机驱动设计方案
  2. 蓝牙麦克风 android,带有蓝牙麦克风的Android语音识别器
  3. C++ 引用Lib和Dll的方法总结
  4. C++中容器的分类以及相关用法
  5. java实现第七届蓝桥杯愤怒小鸟
  6. Cannot create directory: /home/lrh/.vim/view.
  7. IDEO:以洞悉人性为设计主轴
  8. 学无止境啊,身体是革命本钱
  9. DeDeCMS采集问题与技巧集锦
  10. 修改游戏服务器的数据,修改游戏服务器数据的教程