深度学习中的特征工程——不同数据类型与采用的处理方式

之前关于特征工程的blog:https://blog.csdn.net/qq_33472765/article/details/86422199

什么是特征工程?

顾名思义,特征工程是一种工程活动,目的是从原始数据中最大限度的提取出能表征原始数据信息的特征。数据和特征决定了机器学习的上限,算法和模型不过是逼近这个上限。不过深度学习不用像传统机器学习那样人为合成高级复杂特征,只需利用人类的先验知识处理一阶特征,后面深度学习会自己学习到相关的复杂特征。

数据类型

不同的数据有不同的数据类型,而不同数据类型的数据处理方式也不同

    • 离散型数据
      在进行机器学习或深度学习的建模中,总会碰到离散型数据,比如 性别:男,女;比如学历:高中,大学,硕士,博士。一般来说,对离散型的数据有以下几种处理方式:
      • 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

猜你喜欢

转载自blog.csdn.net/qq_33472765/article/details/86561511
今日推荐