Featuretools中的Woodwork类型系统详解
featuretools 项目地址: https://gitcode.com/gh_mirrors/fea/featuretools
概述
Featuretools是一个强大的自动化特征工程工具,它依赖于一套完整的类型系统来确保在创建实体集(EntitySet)、特征基元(Primitives)、特征(Features)和特征矩阵时的类型一致性。在Featuretools中,Woodwork类型系统扮演着至关重要的角色。
Woodwork类型系统的三大支柱
1. 物理类型(Physical Types)
物理类型定义了数据在磁盘或内存中的存储方式,也称为列的dtype
。理解物理类型很重要,因为Pandas在执行DataFrame操作时依赖这些类型。
关键点:
- 每个Woodwork逻辑类型类都有一个对应的物理类型
- 物理类型决定了数据在底层如何存储和操作
2. 逻辑类型(Logical Types)
逻辑类型提供了超出物理类型之外的额外信息,用于解释或解析数据。多个逻辑类型可能共享相同的物理类型,但赋予数据不同的含义。
在Featuretools中:
- 逻辑类型决定了数据如何被读入实体集
- 影响深度特征合成(Deep Feature Synthesis)的使用方式
Featuretools提供了list_logical_types()
函数来查看所有可用的逻辑类型:
import featuretools as ft
ft.list_logical_types()
3. 语义标签(Semantic Tags)
语义标签为列提供了关于数据含义或潜在用途的额外信息。一个列可以有多个语义标签,也可以没有。
语义标签分为两类:
Woodwork定义的语义标签
这些标签由Woodwork在初始化时自动添加,可以使用list_semantic_tags()
函数查看:
ft.list_semantic_tags()
Featuretools定义的语义标签
'last_time_index'
:表示该列是由Featuretools创建的最后时间索引列'foreign_key'
:表示该列是关系的子列,与另一个DataFrame中的索引列相关联
Woodwork在Featuretools中的应用
在实体集中的应用
实体集中的每个DataFrame都存储了Woodwork类型信息。我们可以通过ww
命名空间访问这些信息:
es = ft.demo.load_retail()
products_df = es["products"]
products_df.ww
这将显示DataFrame中每列的物理类型、逻辑类型和语义标签。
在深度特征合成(DFS)中的应用
特征基元(Primitives)需要能够指定允许的输入类型和可预测的返回类型。Woodwork的ColumnSchema
对象用于描述这些类型。
ColumnSchema示例
product_ids_series = products_df.ww["product_id"]
column_schema = product_ids_series.ww.schema
column_schema
ColumnSchema
可以:
- 作为单个列的类型定义
- 描述其他列可能落入的类型空间
类型空间示例
- 无限制的类型空间(包含整个DataFrame):
from woodwork.column_schema import ColumnSchema
ColumnSchema()
- 按语义标签限制的类型空间(仅包含数值列):
ColumnSchema(semantic_tags={"numeric"})
- 按逻辑类型限制的类型空间(仅包含整数列):
from woodwork.logical_types import Integer
ColumnSchema(logical_type=Integer)
- 组合限制的类型空间(整数且为数值的列):
ColumnSchema(logical_type=Integer, semantic_tags={"numeric"})
实际应用场景
-
特征基元的输入输出类型:每个基元都有
input_types
和return_type
,由ColumnSchema
描述 -
特征生成:在DFS过程中,Featuretools会选择与基元
input_types
匹配的列,生成具有明确类型定义的特征 -
特征堆叠:特征的
column_schema
属性允许DFS将特征层层堆叠
总结
Woodwork类型系统为Featuretools提供了强大的类型支持,使得:
- 实体集的构建更加精确
- 特征基元的输入输出类型定义更加清晰
- 深度特征合成的过程更加可控和可预测
理解Woodwork类型系统将帮助您更好地利用Featuretools进行自动化特征工程,构建更有效的机器学习模型。
featuretools 项目地址: https://gitcode.com/gh_mirrors/fea/featuretools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考