原文发表于:2018-01-03

特征工程简介

下面总结来自于读书笔记的总结,如有错误和补充,欢迎评论指出。
特征工程是机器学习中的black art,也是机器学习算法面试中常见的问题。在机器学习算法中,通常会使用特征来描述样本的属性。特征分为连续特征和离散特征,离散特征又分为有序类别特征和无序类别特征。

特征类型

特征处理

特征处理一般包括单个特征的处理和多个基础特征的组合。

连续特征的处理

连续特征处理一般包括归一化、离散化、函数变换等几种处理方法。

归一化

其中归一化又有线性缩放和均值方差归一化的方法,具体使用哪一种可以根据特征分布情况来确定。

离散化

另外一种方法是对连续特征进行离散化,然后再交给模型处理。在训练线性模型时,连续特征离散化能够使目标值与离散化特征之间有比较好的线性关系。

常用的离散化方法有:

  • 等距离离散,离散后每段距离一致

  • 等样本点离散,离散后落在每段的样本数大致相同

  • 画图观察趋势法,画图观察特征与目标之间的关系,然后确定离散区间段

  • 决策树离散话方法,将要离散化的特征值与目标值组合成样本训练决策树模型,使用分割点作为离散点

函数变换

还有一种处理连续特征的方法是进行函数变换,函数变换指的是将原始特征通过非线性函数进行变换,然后使用变换后的值作为一个特征加入模型训练。常用的变换函数有log(x),log(1/(1-x)),xa等。

无序类别特征的处理

可以用one-hot编码方式将无序类别特征表示为一个数值向量。

比如有red、green、blue三种颜色,进行one-hot编码后,

  • red 表示为(1,0,0)

  • green 表示为(0,1,0)

  • blue 表示为(0,0,1)

有序类别特征的处理

当然在处理有序类别特征时,可以将其看着是无序特征进行处理,但是这会丢失特征之间的顺序关系。常见的是以一种递进的关系来表示有序类别的特征。

比如有bad、normal、good三种特征,我们可以用向量表示如下:

  • bad 表示为 (1,0,0)

  • normal 表示为(1,1,0)

  • good 表示为(1,1,1)

这样表示就能够保留特征之间的顺序关系。

特征组合

特征组合包括离散特征之间的组合、离散特征与连续特征之间的组合、连续特征之间的组合等。特征组合的相关细节暂不做本文讨论内容,感兴趣的读者请阅读其他文章。

特征设计

  • 静态特征:人口画像、历史统计特征
  • 互动类型:点击、加购、收藏、购买、浏览、搜索

最近x小时内点击ID/类目序列

time decay特征

离散化,1 <60; 2 <360 ...

参考文献

  • Trevor Hastie et al. The Elements of Statistical Learning, 2001.