tensorflow 特征预处理总结

本文总结几种出现在tensorflow 的 feature_column api 的处理函数

1. feature_column 主要是连接数据和tf.estimator 之间的桥梁,将原始数据中的一些离散型、类别型特征转化成tensorflow 可使用的类型。并且神经网络只能处理数值型数据,而且在某些就算是数值类型的特征也需要做归一化,离散化等操作,这些都需要依赖feature_column 来做转化。

一般流程是:定义input_fn 来过滤、填补数据,然后输出到tf.feature_column 得到 feature_columns , 再将转化好的数据输入到tf.estimator , 在tf.estimator 中包含了DNNClassifier , DNNLinearCombineClassifier, LinearClassifier, 在Wide&Deep官方实现中就是使用这几种函数。

2. 那么现在需要构建特征列,具体介绍feature_column中主要使用的几个函数。

类别类型:

主要使用的是categorical_column_with_hast_bucket 以及categorical_column_with_identity

数值类型:

主要使用的是numeric_column, embedding_column, indicator_column, bucketized_column

在输入到网络的数值类型特征其实可以直接concat 到最终的向量中,一般不需要做这些类型转换

其中indicator 和 embedding columns不能直接作用在原始特征上,需要作用到categorical columns 上,将categorical column 得到的稀疏tensor 转换成one-hot 或者multi-hot 的稠密tensor

在类别类别中常使用的是categorical_column_with_hast_bucket, 尤其是词表不确定有多少的时候,或者词表特别大时浪费存储。我们可以指定hash_bucket_size 就可以避免,同时设置这个size 稍微大于总类别(其实就算小于总类别数,中间有哈希碰撞也不会太影响模型效果,实测)

组合类型:

多个特征组合成一个特征crossed column, 举个例子就是坐标信息(x,y )wide and deep 的官方实现中有使用到这个特征类型

另外,在同一个网络模型中,可能多个特征共享相同的embedding 映射空间,例如用户偏好歌曲id和行为序列中歌曲id,这时就可以用到tf.feature_column.shared_embedding_columns.(参数类似embedding column, 其返回值是和categrial column 相同维度)

还有一类特征,我们可以设定不同特征有不同的权重,例如我更关注用户的偏好而不关心用户地点信息,或者在行为序列中离的近的权重更大而离的远的权重小,那么我们可以使用weighted_categorical_column

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值