深度学习笔记:特征抽取

6 篇文章 0 订阅
2 篇文章 0 订阅

简单来说,深度模型的输入只能数字类型,现实中的数据则不尽相同,如性别,年龄,商品价格等。

例如:
可以将性别作为特征,男性设置为0,女性设置为1;
也可以将年龄和性别组合后作为一个特征,大于18岁的男为3,小于18岁的女为4。
数字代表模型输入的特征值。

因此,特征抽取就是将这些具体的原始数据通过规则转化为模型可识别的数字(或数组)的过程。本文重点介绍特征分类、特征抽取的过程、特征抽取实现方法、在线特征服务架构。

特征分类

dense/sparse特征

  • dense特征,直接作为模型输入
  • spase特征,一般通过转为embedding作为模型输入

user/item/context/combo/sequence特征

  • user特征,在线服务单次请求只有一个user,user特征一般是(1,N)大小的。user行为是实时变化的,一般user特征是实时获取的。
  • item特征,item特征和商品(物料)数相关,单词请求对M个item预测,item特征的维度是(M,N)维度。item变化一般没那么实时,一般item属性是增量更新的。
  • context特征,是随着输入而变化的Item特征。
  • combo特征,是多个特征交叉产生的特征,可以是item与item交叉,也可以是user和item交叉。
  • sequence特征,分为user序列和item序列。如user序列输入可以是一个用户感兴趣的item集合上的行为。item序列则可以是与该item相关的user集合的行为。

特征抽取

  • Tensorflow特征抽取整体上分为四大类方法:Bucketing(按照边界点分段)、Crossing(不同特征交叉)、Hashing(哈希分桶)、Embedding

  • 阿里RTP特征生成 是和TF类似的思路实现。

  • 自定义特征抽取:
    特征抽取的结果只要符合模型输入的数值型要求,就可以任意定义特征抽取实现。

TF和RTP的特征抽取实现比较有通用型,算法同学几乎不用开发特征抽取逻辑,只需要专注特征构建、选择和模型设计即可。
自定义特征没有通用性,几百个模型会产生成千上万的特征。特征抽取类一般需要C++实现,让工程同学帮助实现具体特征抽取类不太现实,让算法同学手写C++多少有点勉为其难。

抽取加速

以上TF和阿里的通用特征抽取实现,因为抽取类是通用的,只需要确定数量的TF算子实现。通过特征配置,可以将每个特征拼接成图中的一个算子,通过TF图执行,自然实现并行加速(最慢的FeatOp和EmbLookupOp是性能瓶颈)。

对于计算慢的特征抽取节点可以通过Fused优化。该方式需要将特征原始字段按列存储(每个item特征算子是对某一个特征在item上抽取)。

如下图所示
在这里插入图片描述

如果不太方便列存,

特征选择

特征重要性选择一般通过AutoML方式实现,是在训练阶段完成。AutoML除了可以进行特征重要性选择,还可以进行模型参数调节。可以参考AutoML综述

在线服务架构

全图化架构:将特征抽取、embedding查询、infer计算通过tf图拼接,组成分布式服务。

在这里插入图片描述

微服务架构:
在这里插入图片描述

参考资料

https://blog.51cto.com/u_15567091/5248722
https://blog.csdn.net/qq_19446965/article/details/107744850
https://baijiahao.baidu.com/s?id=1632931170015375330&wfr=spider&for=pc
https://developers.googleblog.com/2017/11/introducing-tensorflow-feature-columns.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值