Feature Tools 简介

FeatureTools是2017年9月上线的github项目,是一个自动生成特征的工具,应用于关系型数据。html

github连接:https://github.com/Featuretools/featuretools git

项目官网:https://www.featuretools.com/github

API doc:https://docs.featuretools.com/api_reference.html算法

最近看了一下这个开源工具,对生成关系型特征有一些帮助,把这个项目简单总结一下。api

这个项目起源于Deep Feature Systhesis 这篇文章,连接是 http://www.jmaxkanter.com/static/papers/DSAA_DSM_2015.pdf ,官网上也有相似资料,可是没有文章介绍的详细。工具

Feature Tools是 Deep Feature Systhesis (DFS) 算法的开源实现,实现原理以下。ui

假定咱们有四个Entity,即四张表(Table):Customer, Order, Order Product 和 Product。他们之间的关系是这样的:htm

1个Customer对应多个Order,其他的以此类推。blog

咱们的目标是给Customer创建特征。递归

DFS方法把特征分为两类:

1. Entity feature, 仅依据Customer表中的数据计算特征,计算出的特征简称efeat;

2. Ralated feature, 依据Customer表和其余表的关系计算特征,relation又为两类,一是forward relation, 即一对一的关系,好比 一个Order只对应一个Customer,二是 backward relation,即一对多的关系,好比 一个Customer对应多个Order。

假设咱们不是对Customer计算特征,而是对Order计算特征,这时Customer和Order是forward relation,能够直接把Customer的字段加到Order表中,而后再计算各类特征,这样计算获得的特征简称 dfeat;

若是是针对Customer计算特征,Customer和Order是backward relation,此时就须要先计算相同Customer的不一样Order的特征值(好比 sum, max, min, mean, std等),计算获得的特征简称rfeat。

DFS把Entity之间的关系称为parent-child关系,好比 Customer和Order是一对多的关系,因此Customer是parent,Order是child。这是FeatureTools的输入参数之一。

上面的概念都搞清楚了,就能天然理解DFS计算特征的过程了:根据parent-child关系,计算rfeat和dfeat,把rfeat和dfeat合并到parent表中,计算parent的efeat,以递归方式执行这些操做便可,也就是自底向上累积计算特征。

附上文中给出的伪代码:

文中提到了一个注意点:通常先计算rfeat,后计算dfeat,同一个Entity通常只使用一次。

通常来讲,rfeat包含的信息量更多,也更经常使用,因此rfeat相比dfeat更重要一些,这是个人理解。

featureTools的使用比较简单,能够参考5-minutes demo实操一下:https://docs.featuretools.com/#minute-quick-start

要把这个工具的全部api都了解清楚,能够参考上面的api连接,下载数据,跑demo,把全部特征都计算一遍。

p.s. 这个工具备两个弱点:

1. 使用这种多层全排列的方式容易形成特征维数过多,实践中必须作特征筛选,下降特征维数。

2. 这种暴力搜索获得的特征,可解释性可能偏弱,须要深刻研究那些优质特征的可解释性。懂业务的人搞出几个解释性强的特征,可能秒杀暴力搜索获得的全部特征。因此,实际应用时,能够用暴力搜索法做为特征挖掘的辅助算法。

3. 从官网文档看,FeatureTools只有单机版,处理的数据量有限。

相关文章
相关标签/搜索