特征生成大法

浏览: 2462

作者介绍:

程虹升,唯品会大数据部数据分析师,数据分析和挖掘实战的践行者,“51CEO”公众号的运营者。

Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.(by Jason Brownlee)

采集数据,清洗完毕,接下来就需要设计x变量(自变量,independent variable),之后再构建模型。

x变量通常被称作“特征”,因此设计和筛选x变量的过程也就是“特征生成”,包括两个步骤:特征的生成,特征的选择。

为什么要做特征工程呢?

Better features means flexibility.

Better features means simpler models.

Better features means better results.

如果把分析任务比作养孩子,那么特征工程就意味着这个孩子的“基因”,而后续选用的模型则是“后天环境”,“基因”好就能最大限度地防止GIGO(garbage in, garbage out)。

本文的主要内容为特征的生成,也就是如何从原始数据中获得更丰富的信息。

特征生成前的原始数据可以分3类情况:

  • 单列,即对单个变量进行转换、衍生;

  • 多列,多列变量组合成一列变量,包括组合运算和降维;

  • 多行,一般针对时间序列而言,将一个样本的多行时间序列数据统计后得到一行数据,即在时间尺度上压缩;

1. 单列变量

image.png

原始变量(后面均以“变量”指代“特征”)一般呈现为3种形式:

  • 字符型,如同人名一样,只是一个代号,e.g. 省市名称;

  • 数值型,e.g. 数量,金额等,或者“0,1”数值标记;

  • 日期(时间)型,e.g. 交易时间,登录时间等;

一般情况下,字符型的变量是离散的,数值型和日期型变量则是连续的。

注:数值型变量有时是二值化的(binary),或者具有等级属性,一般也看作是连续的。


1.1 离散变量

离散变量可以分为“类别型”和“顺序型”两类变量

数据一般分为4种类型:

类别型,e.g. 地区,省市;

顺序型,虽然离散但是有顺序,但顺序之间的间隔不一定相等,e.g. 围棋段位;

等距型,有序且间隔相等,但无绝对零点,可加减不可乘除,e.g. 温度;

等比型,有绝对零点,可以做四则运算,e.g. 长度、质量、时间等;

类别型,e.g. 用户所在的行业,居住省份信息;

当种类比较少时,可以考虑变换成哑变量(dummy variable),如下图:

image.png

注:哑变量变换示例

当种类比较多时,则可以考虑对该变量的值进行归类,e.g. 将省份转化为五大区,然后再对归类后的数据进行哑变量转化

顺序型,顺序型的离散变量常被当作连续变量来看,比如常见的Likert量表得分;

e.g. 问卷调查用户满意度,回答可能是“非常不满意,比较不满意,一般,比较满意,非常满意”,然后可以考虑转化为1-5的评分等级。

注:实际上在数据清洗的步骤中也可以做这一步。

1.2 连续变量

连续变量可以转化为离散变量或者连续变量。

“连续->连续”转化的情况一般有两类:

  • 分布变换,常见的有log或exp变换、平方根和平方变换、立方根和立方变换等;

  • 量纲统一,常见的标准化一般有3类:Z分数,[0,1],[-1,1];

    注:标准化可以参考文章,学术期刊综合评价数据标准化方法研究,俞立平等

“连续->离散”转化按得到的值的个数可以分为:

  • 二值化binary,即最终得到的值是0或者1;

    e.g. 考试成绩卡阈值60分,>=60分为“及格”,记为1,<60分为“不及格”,记为0;

  • 分箱binning,分箱操作可以分为3类:等距离分箱、等数量分箱、按分布分箱;

    e.g. 作直方图的时候即按等距离分箱来调整x label的颗粒度;

    e.g. 一大堆人排队等电梯就类似于等数量分箱,电梯装满就走;

    e.g. “天才在左,疯子在右”相当于按分布来筛选左右两侧的极端情况;

2. 多列变量


即由多列变量衍生出一列变量,可以分为:

  • “显式”运算,即我们可以清楚地知道原始变量怎么一步步计算出新的变量的,最常见的就是四则运算;

    e.g. 变量A-货车近3个月运行公里里程,变量B-货车近3个月UBI超速报警次数---->衍生变量C-平均每10公里的超速报警次数;

  • “隐式”运算,即得到的新变量和原来的变量的关系难以用一个函数来表达出来,e.g. 特征降维中常用的的主成份分析(PCA);

3.多行样本(时间序列)

image.png

单列变量和多列变量主要针对“横截面”数据,“多行样本”则是指时间序列数据,即一某研究对象在多个时间点有数据记录(多行)。

时间序列的数据可以提取三类特征:

  • 整体特征,整体的统计情况;

    e.g. 单个用户近一年的交易金额、订单数、客单价等;

  • 局部特征,即在整体的时间区间内按其他分类变量或者按不同时间颗粒度计算得到的数据;

    e.g. 该用户近一年内购买女装、美妆、3C、母婴、体用等各品类的交易情况;

    e.g. 该用户四个季度分别的下单情况;

  • 趋势特征,衡量发展性和稳定性的特征;

    e.g. 某用户本季度和上季度的环比交易变化情况(绝对量或者百分比);

本文主要结构如下,特征生成的方法包含但不限于文中所及,更多信息请参阅文末参考资料。

image.png

参考资料:

  1. https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/

  2. https://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/

  3. http://www.cnblogs.com/jasonfreak/p/5448385.html

  4. IBM SPSS 数据分析与挖掘实战案例精粹,张文彤,钟云飞,第17章

  5. 机器学习,周志华,第11章

  6. http://adataanalyst.com/machine-learning/comprehensive-guide-feature-engineering/

  7. http://scikit-learn.org/stable/data_transforms.html

推荐 1
本文由 每天进步一点点2015 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册