特征工程

来源:互联网 发布:读三毛梦里花落知多少 编辑:程序博客网 时间:2024/05/17 01:36

特征值处理

对特征的值进行操作

特征处理

  1. 特征二值化:通过阈值把特征转化为0-1,有些特征只接受布尔值作为输入。
  2. 特征离散化:把连续的数值转化为离散的,是让每一部分样本相同,还是每一部分区间长度相同?
  3. 特征值转化:放缩、平移
  4. 特征正规化:把所有的特征的分布变为N(0,1),这样在梯度下降时收敛更快。
  5. 对特征加入先验:例如可以用来区分是语法词还是情感词。

特征选择

less is more
特征工程通常有两个用处:

  1. 为了更好地预测,
  2. 为了让模型有更好的可解释性,如果模型可解释性增加,反过来又可以协助做更好的特征工程

为什么要做特征选择:

  1. 越少的特征解释性就越好
  2. 泛化能力更强,避免过拟合
  3. 收敛更快

所以我们要选择那些没有冗余的、与标签相关的特征
如何做特征选择:

  1. 选择特征集的所有子集?NP-hard
  2. 所以需要找到可行的办法:例如可以进行启发式的(无监督),使用训练集测试选择(有监督)
  3. 简单的办法:每次只选择一个特征测试,测试它的性能

特征选择之black list:
例如文本数据中的停用词:
优点:简单,有效
缺点:同义词 can 罐子

特征选择之非监督学习方法:
在文本数据中选择出现次数前x%的数据,因为选择过程中与标签无关,所以叫非监督。

特征选择之有监督学习方法:
filter approach:

特征选择之信息增益:
选择X使得H(Y)-H(Y|X)最大,

特征选择之wrapper approach:

特征选择之feature interaction:

特征选择之正则化:
选择对应参数最大的特征

特征变换

为什么要做特征变换:有些算法只能解决特定的问题,例如感知机只能解线性可分问题。

对于这样的问题,我们通常有两种选择:

  1. 特征变换
  2. 选择更加复杂的算法(例如神经网络)

特征变换的几种方式:

  1. 把原来的特征映射到更高维空间中
  2. 建立更多的特征
  3. 核方法(特征映射)

http://kti.tugraz.at/staff/denis/courses/kddm1/featureengineering.pdf