feature_columns
最后更新于
最后更新于
回想使用xgboost等机器学习模型训练时, 拿到的数据集中有各种数值型和类别型等初始特征. 一般来说, 我们拿到数据集后, 不会直接就上模型开始训练了, 而是在经过细致的数据分析后, 确定特征工程的思路, 对每个原始特征进行转换, 得到新的特征. 例如:
数值型特征
Normalization
分箱, 离散化
类别型特征
one-hot
multi-hot
查找Embedding矩阵, 将每种类型转换为对应的Embedding向量
交叉: 两两特征之间交叉产生新的特征
经过转化得到新特征, 此时的数据集是一个数值类型的稠密矩阵, 才能feed给神经网络. 从数据流的角度来看, 输入是原始数据中的每一列, 而模型需要是的稠密矩阵作为输入层, 而原始输入和稠密矩阵输入层之间的连接, 或者说特征工程部分, 可以通过tf.feature_columns
模块完成.
因此总结为feature_columns的作用总结为: feature_columns是原始数据和模型之间的桥梁. 这里的模型可以是Estimator API构建的模型, 也可以是用朴素的tensorflow或keras构建的模型, 两者相比只是在使用tf.feature_columns
的方法上有所区别. 后续内容会体现出这个细节, 整体来是tf.feature_columns
与Estimator API配合使用更为方便.