目录
自动化特征工程
自动化特征工程是伴随自动机器学习而产生的特征工程新研究领域,可以把自动化特征工程定义为根据具体场景自动构建特征流程,无须人工参与设计特征即可快速高效完成特征工程的一种方法。
手工特征工程存在的主要问题
机器学习建模都需要通过特征工程生成特征变量,多数情况下主要通过业务经验和试验来手工生成特征,手工特征工程存在的主要问题如下。
- 1)效率低下,开发时间长。
- 2)受限于业务专家经验,只能建立在经验范围内能想得到的特征,难以批量化产出。
- 3)可移植性差,通常手工建立的特征只适用于特定业务问题,不具有通用性。
自动化特征工程的意义和价值
自动化特征工程按不同数据类别进行抽象化,设定衍生特征的范式,自动化构建成百上千个特征,可以极大提升特征工程工作效率,将建模周期大大缩短。自动化特征工程可以突破专家经验局限,快速挖掘出更多对预测有效果的特征,可能会带来一些创新性的发现。
自动化特征工程方法分类
基于预定义算子和特征组合机械式衍生,除了传统的统计算子例如max、min、mean、median、std外,对于特定形态的数据,例如时序类、流水类数据,可以构造预定义的统一算子,例如定义max出现次数、突破均值的次数、max距今最近时长等,并结合不同时间窗口,以及多个特征交叉组合来批量生成特征。
基于批量自动化表征学习方式,例如使用随机森林、GBDT等,每次随机改变模型参数或者改变样本抽样,得到不同的预测模型,提取中间层特征或者最终预测值作为特征。
自动化特征工程工具
Python 和机器学习开源社区已经有大量的自动化特征工程工具,这些工具内部定义了自动化衍生特征的算子或者衍生框架流程,使用这些工具可以批量高效地进行特征衍生。常用的自动化特征工程工具有Featuretools、TSFresh
基于Featuretools自动特征提取
Featuretools 是一个实现自动化特征工程的Python开源框架,可以将关系数据集转换为特征矩阵,用于机器学习。Featuretools 将深度特征合成算法(DFS)作为库的核心内容,以特征基元作为基本操作,通过叠加基元操作得到新特征。
Featuretools的基本概念
- 1)实体和实体集:原始数据表例如客户信息表,一般以DataFrame形式保存,每一张表都是一个实体,每一行数据表征一个实体即“客户”。每个实体必须含有主键来唯一标识该实体。把一个二维表看作一个实体,实体集就是一个或多个二维表的集合。
- 2)关系:原始数据表之间有层级关联关系,例如客户信息表和订单表,一个客户有多张订单。
- 3)特征基元:特征基元是Featuretools用来自动构建特征的基础操作,通过单独使用或者叠加使用特征基元来构造新特征。使用特征基元的意义在于,只要限制输入和输出的数据类型,就可以在不同数据集中采用相同的特征基元操作。特征基元分为聚合和转换两类:聚合基元是根据父表和子表的关联关系,对父表实体完成子表特征聚合;例如max、min、sum、mean、mode等;转换基元是对单个实体进行的操作,对实体的一个或者多个变量进行计算,并为该实体计算一个新变量,转换基元即作用于实体的单变量或多变量的函数。除此之外,Featuretools 还可以通过API自定义自己的特征基元,确定特征基元的类型,定义输入和输出的数据类型,编写该特征基元的功能函数,就可以实现自定义特征基元,并和其他基元叠加使用。
- 4)深度特征合成:根据实体集里的实体和特征基元创造新特征,实现多层级特征的聚合,可以简单地理解为对于多级表依次向上级表进行各种聚合。
基于TSFresh的时序数据自动特征提取
时间序列预测
时序数据即时间序列数据,是按时间顺序记录的一个或多个指标。时间序列分析包括两种形态:一种是典型的统计时间序列,通过统计分析方法,挖掘不同时点随机变量之间的依赖关系,从而对未来时点进行预测;另一种是提取整个序列的特征,例如波动性或趋势等,目的是实现序列的聚类或分类(而不是对未来时点进行预测)。本文所提取的特征是第二种。
TSFresh概述
TSFresh是一个对序列数据进行自动执行特征工程的Python开源库,通过预定义的算子,批量计算时间序列特征。TSFresh具有如下特点。
- 1)减少特征工程提取时间,提高特征衍生效率。
- 2)具有丰富的预定义时序特征,TSFresh预定义了超过100种特征。这些特征包含了描述时间序列的基本特征,例如峰值数量、超过平均值次数等,也包含了更复杂的特征,例如反转对称统计量、近似嫡、样本熵等。
- 3)自带特征评估和过滤功能,TSFresh包含内置过滤程序,用于评估特征对于目标变量的解释能力与重要性,基于成熟的假设检验理论,采用多重检验方法,将没有统计显著性的特征过滤掉,保留最有预测力的特征变量。
print('hello 今天高兴些')