自动化特征工程—Featuretools

Featuretools是一个可以自动进行特征工程的python库,主要原理是针对多个数据表以及它们之间的关系,通过转换 (Transformation)和聚合 (Aggregation)操作自动生成新的特征。转换操作的对象是单一数据表的一列或多列(例如对某列取绝对值或者计算两列之差);聚合操作的对象是具有父子 (one-to-many)关系的两个数据表,通过对父表的某列进行归类(groupby)计算子表某列对应的统计值。下面通过几个简单的例子进行介绍,Featuretools在实际应用中的案例可以参考它的Github仓库

例 1. 顾客交易记录,每个交易对应一个顾客,可分多次支付(需要求解的问题是关于顾客的)

建立数据

生成新的特征

以特征SUM(transactions.PLUSONE(MAXIMUM(payments.money)))为例,下图说明了对customer_id=1的顾客该特征是如何计算的:


例2. 顾客交易记录,每个交易对应一个顾客,可分多次支付(需要求解的问题是关于交易的)

同上,仅改动一行代码:

以特征customers.PLUSONE(SUM(payments.money))为例,下图说明了对transaction_id=1的交易该特征是如何计算的:


例3. 顾客交易记录,每个交易对应一个顾客和一个商品(需要求解的问题是关于顾客的)

建立数据

生成新的特征

以特征SUM(transactions.products.MAXIMUM(transactions.amount))为例,下图说明了对customer_id=1的顾客该特征是如何计算的:


Featuretools的一个重要特性是可以在建立特征工程时自动考虑时间的影响,防止数据泄露。下面仍以一个简单的例子进行说明,同上仍为顾客交易记录,每个交易对应一个顾客和一个商品,但是需要求解的问题是关于顾客在某个时间点的情况。

建立数据

生成新的特征

下图以特征SUM(transactions.products.MAX(transactions.amount))为例,说明建立特征时如何考虑了时间的影响:

Leave a Comment

Your email address will not be published. Required fields are marked *