深度特征合成

深度特征合成(Deep Feature Synthesis, DFS)是一种用于对关系和时间数据执行特征工程的自动化方法。

输入数据

DFS需要结构化的数据集才能执行特征工程。以下演示使用的是模拟客户交易数据集。

深度学习里的特征通道数怎么改变 深度特征合成_机器学习

运行DFS

通常,没有自动化特征工程的情况下,数据科学家会编写代码以汇总客户的数据,并应用不同的统计功能,从而产生量化客户行为的功能。在此示例中,专家可能对一下特征感兴趣:sessions的总数/customer注册的月份。

将target_entity指定为customer并且将“count”和“month”指定为原语primitives时,DFS可以生成这些功能。

深度学习里的特征通道数怎么改变 深度特征合成_原语_02


上例中,“count”是一个聚合原语(aggregation primitive),因为它基于与一个customer相关的许多sessions来计算单个值。“month”是一个转换原语(transform primitive),因为它将一个customer的一个值转换为另一个。

创建“深度特征”

DFS的名称源于该算法能够堆叠原语以生成更复杂特征的能力。每次堆叠原语时,都会增加特征的“深度”。max_depth参数控制DFS返回功能的最大深度。

深度学习里的特征通道数怎么改变 深度特征合成_深度学习里的特征通道数怎么改变_03


选择其中一个深度为2的生成特征了解一下:

深度学习里的特征通道数怎么改变 深度特征合成_机器学习_04


该特征为每一个customer:(1)计算每个session的所有交易金额,得到每个session的总金额;(2)然后将均值应用于多个sessions的总金额,以确定每个session花费的平均金额。

举例:为每个customer计算他们开始session时 最常见的时间

深度学习里的特征通道数怎么改变 深度特征合成_原语_05

改变目标实体

DFE功能强大,可以为数据集中任何实体创建特征矩阵。将目标实体切换为session,那么可以为每个session综合功能。

深度学习里的特征通道数怎么改变 深度特征合成_数据集_06


上例中,DFS也可以对父实体构建深度特征。比如:计算session的customer的平均交易额。

深度学习里的特征通道数怎么改变 深度特征合成_python_07


参考官方链接:Deep Feature Synthesis