深度学习中的特征工程

转自本人博客 Lew's Blog

  1. 什么是特征工程?
    顾名思义,特征工程是一种工程活动,目的是从原始数据中最大限度的提取出能表征原始数据信息的特征。数据和特征决定了机器学习的上限,算法和模型不过是逼近这个上限。不过深度学习不用像传统机器学习那样人为合成高级复杂特征,只需利用人类的先验知识处理一阶特征,后面深度学习会自己学习到相关的复杂特征。
  2. 数据类型
    不同的数据有不同的数据类型,而不同数据类型的数据处理方式也不同
    • 离散型数据
      在进行机器学习或深度学习的建模中,总会碰到离散型数据,比如 性别:男,女;比如学历:高中,大学,硕士,博士。一般来说,对离散型的数据有以下几种处理方式:
      • One-Hot Encoding(若特征种类很多,高稀疏化)
      • Hash Encoding(低稀疏,高压缩)
      • embedding(注意比较与Hash Encoding 的区别,NLP常用)
      • 基于计数的encoding
      • 特殊情况:当输入是0,1的二值信号,而且0是对所模拟的模型是有作用的,那么这时候采用flatten的战术,即0变成0,1 ,1变成1,0 。比如原来64个输入特征,flatten后变成128个特征,实例参考建模攻击PUF的相关项目。注意flatten和one-hot有本质区别,一个是扩展特征的长度,一个是扩展特征的维度。
    • 连续型数据
      除了分类这样的离散数据,我们也会碰到诸如身高,学习成绩,资金等连续型的数据。对于连续型数据,有以下的处理方式:
      • 缺失数据处理:在收集来的数据中,往往会出现某处数据为空不存在的情况。一般处理方式有填0处理,填NAN处理,平均值或中位值处理等。没有特殊情况的话,一般不推荐填0处理,0和空相差的意义较大,0是有意义的。
      • 归一化:归一化与标准化的区别:标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。
      • 离散化:将连续值分区,某个分区内的数据均为某个分类值。例如个人资产为连续值,处理后 个人资产小于100W为普通阶级,个人资产100W-1000W为中产阶级,个人资产1000W以上为富人阶级等。某些情况下若取值跨度太大或者太小,可以取对数或者开方平方等处理后再离散化。
    • 时间数据
      时间数据本质上也还是一种连续数据,但是有一些特殊的地方,比如时区,比如周期性。因此处理时尤其要注意特殊节假日,时区等问题。
    • 空间数据
      例如经纬度,地址,邮编等,比较不规范,根据具体情况进行处理

Reference

  1. 详解特征工程与推荐系统
  2. 特征工程到底是什么?
  3. 数据预处理: One-Hot Encoding
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容