想象你是一家餐厅的大厨,每天最累的并不是掂勺炒菜,而是备菜。土豆要削皮切丝,牛肉要提前腌制,配菜要洗净码好。客人点什么,你就得临时加工什么,忙到深夜,第二天还得再来一遍。在机器学习的世界里,这个“备菜”环节就叫特征工程。所谓特征,就是从原始数据里加工出来的、能让模型做判断的信息;特征工程就是决定这些信息怎么切、怎么配的手艺。传统做法像手工备菜,靠数据工程师一点点拼统计量、写交叉列、试业务指标,几天几夜才能凑出一批能用的特征。好在现在出现了一位“自动备菜管家”——自动化特征工程。它能把冰箱里的所有食材自动切成成千上万种花样,再由主厨试菜挑选,把人从重复劳动中彻底解放出来。今天,我们就来认识这位管家。

岗位关联

对 AI 从业者来说:掌握自动化特征工程,能帮你从手工造特征的重复劳动中抽身,在数据竞赛和企业建模中大幅缩短项目周期,把精力留给真正的模型调优与业务洞察。

目录
  1. 可视化演示
  2. 手工特征之痛
  3. 认识 Featuretools
  4. 实体关系建模
  5. 深度特征合成原理
  6. 特征筛选与选择
  7. 实战价值与应用
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示让机器自己造特征的自动化工程的核心机制,通过开始/执行/监控/完成四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

让机器自己造特征的自动化工程:一自动化 一、自动化特征工程的核心概念与 二、深度特征合成DFS的原理与 核心机制可视化 让机器自己造特征的自动化工程整体架构与关键组件

手工特征之痛

假设你开了一家餐馆,每天要备几十道菜。土豆要削皮切丝炒酸辣土豆丝,要切块炖牛肉,还要切片烤薯角。客人点什么,你就要临时加工什么,忙到深夜才能收工。机器学习建模也一样:原始数据就像带着泥土的土豆,而真正决定模型口味的是“怎么切、怎么配”——做几个统计量、拼几个交叉列、设计几个业务指标。这些“切配”动作,就是特征工程。

可大多数人做特征工程,靠的是经验加蛮力。想到一个业务指标,就写一段代码算一个;项目时间紧,就只做几个最顺手的统计量。结果常常是:模型项目里一半以上的时间耗在造特征上,却还是漏掉大量有价值的组合。如果一张表有 n 个字段,想找两两组合,方案数量由组合数公式给出。这个数字增长非常快:20 个字段有 190 种组合,100 个字段接近 5000 种。靠手工一个个试,就等于把厨房里所有食材挨个搭配一遍,等配完菜,客人早走了。

所以我们需要一根“自动切配流水线”,把几百上千种组合瞬间批量做出来——这正是自动化特征工程登场的理由。

C(n,2)=n(n−1)2\displaystyle C(n, 2) = \frac{n(n-1)}{2}
公式通俗说明:组合数公式告诉你,字段每多几个,需要尝试的特征组合数量就会平方级地猛增,远超人力可处理的范围。
  1. 组合符号 $C(n,2)$表示从 n 个原始字段里任选 2 个做组合的方案总数,读作“n 选 2”。
    C(n,2)\displaystyle C(n,2)
  2. 有序配对 $n(n-1)$第一个字段有 n 种选法,第二个字段只能从剩下的 n-1 个里选,所以得到 n(n-1) 个有序配对。
    n(n−1)\displaystyle n(n-1)
  3. 分母 2 去掉重复因为“字段A+字段B”和“字段B+字段A”其实是同一组特征,所有配对恰好被算了两遍,所以除以 2 消除重复。
    n(n−1)2\displaystyle \frac{n(n-1)}{2}

认识 Featuretools

这位“自动备菜管家”名叫 Featuretools。它不是某个名厨,而是一套开源工具,专门负责把食材快速处理成半成品。它最拿手的绝活叫“深度特征合成”(Deep Feature Synthesis,DFS)。你只要告诉它冰箱里有哪几层货架、每层放什么食材,它就能自动设计出成千上万种切配方案,还能一次性把方案全部切配好。

Featuretools 的工作分三步:第一步,把多张数据表注册成实体集(EntitySet);第二步,给表与表之间搭好关系(Relationship);第三步,运行 DFS 生成特征矩阵。整个过程把你从“手动写 SQL 聚合”中彻底解放出来。比如你要统计“每个客户最近一个月的平均订单金额”,手工需要 join 两张表再 group by,而 DFS 自动就算了出来,而且会一次性算出几十个类似的统计量。

从符号角度看,它的输入是实体集、关系和目标表,输出是全新的特征矩阵:

有了这位管家,流程从“想一个菜切一次菜”变成“一次批量切出满冰柜的半成品”,这就是自动化带来的效率飞跃。

Fnew=DFS(E,R,t)\displaystyle \mathcal{F}_{\text{new}} = \mathrm{DFS}(\mathcal{E}, R, t)
公式通俗说明:这张输入输出关系图说明:DFS 把实体集、关系和目标表“吃”进去,吐出一整张自动构造好的特征矩阵。
  1. 实体集 $\mathcal{E}$所有参与计算的数据表集合,相当于把冰箱里的食材清点归类后装进同一个筐。
    E\displaystyle \mathcal{E}
  2. 关系集 $R$表与表之间通过外键建立的联系,相当于给管家一张“食材搭配规则表”。
    R\displaystyle R
  3. 目标表 $t$最终要为哪张表生成特征,对应今晚要服务的主菜,所有特征都以它为中心构造。
    t\displaystyle t
  4. 新特征矩阵 $\mathcal{F}_{\text{new}}$DFS 返回的特征矩阵,每一行是一个目标样本,每一列是自动合成的一个新特征。
    Fnew\displaystyle \mathcal{F}_{\text{new}}

实体关系建模

管理厨房不是把所有食材全倒进一个大冰柜就完事了,厨师得知道哪个抽屉是冷藏、哪个抽屉是冷冻、哪些食材之间是绝配。实体关系建模就是给管家画一张“冰箱示意图”。这张图画得越准确,备菜管家做出来的菜就越对路。

Featuretools 里的实体(Entity)就是一张数据表。客户表、订单表、商品表各是一个实体。关系(Relationship)定义表与表之间如何连接,最常见的是“一对多”:一个客户对应多张订单,一张订单对应多个商品。把这些实体和关系注册进 EntitySet,DFS 才能跨表聚合,从关联数据里挖出特征。

用数学语言描述,两个实体之间的关系可以看作一个映射关系:

冰箱示意图画好了,管家才能知道哪块肉可以配哪把菜。没有这张图,再全能的副厨也只能对着满冰箱食材发呆。

Rij:Ei×Ej→{0,1}\displaystyle R_{ij}: E_i \times E_j \to \{0,1\}
公式通俗说明:它表达的是:任意两张表之间,要么有关系(值为 1),要么没关系(值为 0),清清楚楚。
  1. 两张表 $E_i$ 与 $E_j$分别表示数据集中任意两张实体表,比如客户表和订单表。
    Ei, Ej\displaystyle E_i,\ E_j
  2. 关系 $R_{ij}$表示从表 i 到表 j 是否定义了一条连接路径,方向很重要——“一个客户有多张订单”和“一张订单属于一个客户”是两种视角。
    Rij\displaystyle R_{ij}
  3. 取值集合 {0,1}定义的关系存在时记为 1,不存在时记为 0,让机器能快速判断哪两张表可以联合计算特征。
    {0,1}\displaystyle \{0,1\}

深度特征合成原理

副厨最擅长的不是做某一道菜,而是把基础切法无限组合:土豆切丝,丝拌肉末,肉末加调料,调料再配高汤——每一层加工都产生一种新花样。深度特征合成(DFS)就是这个原理的自动化版本。

DFS 内置了两类算子:聚合算子(aggregation)如 sum、mean、count、max、min;变换算子(transform)如加减乘除、求差、归一化。第 1 层用聚合算子在子表上统计出基础特征,第 2 层再对基础特征套变换算子,得到更复杂的特征。层与层嵌套的层数就是 max_depth。深度越大,特征越复杂,数量也会急剧膨胀。

如果用集合递归表达,第 d 层特征由第 d-1 层特征与算子库组合生成:

备菜的花样越来越多,但也不是切得越细越好。切得太碎有时反而夹不起来,特征太多也一样——所以下一步要做筛选。

Fd=⋃f∈Fd−1{ g(f(e))∣g∈G, e∈E }\displaystyle \mathcal{F}_d = \bigcup_{f \in \mathcal{F}_{d-1}} \{\, g(f(e)) \mid g \in \mathcal{G},\ e \in \mathcal{E} \,\}
公式通俗说明:它描述的是备菜迭代表达式:把上一层的半成品,再套上各种新切法,就能得到更高级的新花样,循环往复。
  1. 上一层特征集 $\mathcal{F}_{d-1}$第 d-1 层已经生成的特征集合,它是下一轮加工的“食材池”。
    Fd−1\displaystyle \mathcal{F}_{d-1}
  2. 特征应用 $f(e)$把第 d-1 层的某一个特征 f 应用到实体 e 上,得到一份中间结果。
    f(e)\displaystyle f(e)
  3. 算子库 $g \in \mathcal{G}$从预设的聚合和变换算子库中取一个算子 g,对中间结果再做一次加工,相当于换一种新切法。
    g∈G\displaystyle g \in \mathcal{G}
  4. 并集 $\bigcup$把“所有旧特征 × 所有新算子”的配对结果全部收拢起来,构成第 d 层的完整特征全集。
    ⋃f∈Fd−1\displaystyle \bigcup_{f \in \mathcal{F}_{d-1}}

特征筛选与选择

管家一口气端上来五十道菜,主厨当然不会全部上桌,得亲自试菜:哪道味道足、哪道跟招牌菜重复、哪道根本不对味,最终只留下最精华的几道。DFS 生成成百上千个特征后,同样需要一轮“试菜”,也就是特征筛选。

常见的筛选三板斧:第一,用皮尔逊相关系数看特征与目标之间的关系,剔除几乎不相关的;第二,用树模型(如随机森林)给特征打重要性分数,按分数排序;第三,做共线性检查,去掉高度相似的特征,保留最有代表性的。这样既控制了模型复杂度,又避免了过拟合噪声。

皮尔逊相关系数是衡量两个特征线性关系的经典指标:

经过这轮“试菜”,留下的特征子集小而精,才是模型真正需要的美味佳肴。

r=∑i=1n(Xi−Xˉ)(Yi−Yˉ)∑i=1n(Xi−Xˉ)2  ∑i=1n(Yi−Yˉ)2\displaystyle r = \frac{\sum_{i=1}^{n}(X_i - \bar{X})(Y_i - \bar{Y})}{\sqrt{\sum_{i=1}^{n}(X_i - \bar{X})^2}\;\sqrt{\sum_{i=1}^{n}(Y_i - \bar{Y})^2}}
公式通俗说明:它像一把“味道相同的双胞胎探测器”:如果两个特征变化方向一致,得分接近 +1;方向相反,接近 -1;毫无关系,接近 0。
  1. 成对样本 $X_i, Y_i$两个特征在第 i 个样本上的取值,比如“年龄”和“消费金额”这一对。
    Xi, Yi\displaystyle X_i,\ Y_i
  2. 均值 $\bar{X}, \bar{Y}$两个特征各自的平均值,作为比较的基准线。
    Xˉ, Yˉ\displaystyle \bar{X},\ \bar{Y}
  3. 分子(协同变化)两个特征同时偏离各自均值的乘积之和,反映它们同涨同跌或者反向波动的程度。
    ∑i=1n(Xi−Xˉ)(Yi−Yˉ)\displaystyle \sum_{i=1}^{n}(X_i - \bar{X})(Y_i - \bar{Y})
  4. 分母(标准化)两个特征各自波动量的乘积再开根号,把结果压缩到 -1 到 1 之间,便于统一比较。
    ∑i=1n(Xi−Xˉ)2  ∑i=1n(Yi−Yˉ)2\displaystyle \sqrt{\sum_{i=1}^{n}(X_i - \bar{X})^2}\;\sqrt{\sum_{i=1}^{n}(Y_i - \bar{Y})^2}

实战价值与应用

以前备菜要一整晚,现在管家一小时就全部搞定。上菜速度飙升,主厨终于能腾出精力研究新菜式。自动化特征工程在真实项目中,带来的正是这种角色解放。

实战中最常见的落脚点有两个。一是数据竞赛:在 Kaggle 之类的比赛中,选手第一时间用 DFS 生成海量候选特征,快速建立 baseline,为后续调参和模型融合赢得时间。二是企业建模:电商、金融等行业天然有客户表、订单表、行为日志表等多表结构,用 DFS 可以标准化地生成用户行为特征和风险特征,不用每个项目都重新造轮子。整体来看,建模周期从数周缩短到数小时并不夸张。

可以用一个效率提升公式来量化这种变化:

副厨负责备菜,主厨专注炒菜——这就是自动化特征工程给团队带来的分工革命。

Rgain=Tmanual−TautoTmanual×100%\displaystyle R_{\text{gain}} = \frac{T_{\text{manual}} - T_{\text{auto}}}{T_{\text{manual}}} \times 100\%
公式通俗说明:它衡量“自动备菜比手工省下了多少时间”:省下的时间占总时间的百分比越高,自动化带来的收益越大。
  1. 手工耗时 $T_{\text{manual}}$过去依赖人工写代码、跑 SQL 造特征所花费的时间,单位通常是天。
    Tmanual\displaystyle T_{\text{manual}}
  2. 自动耗时 $T_{\text{auto}}$改用自动化特征工程后的耗费时间,单位通常是小时。
    Tauto\displaystyle T_{\text{auto}}
  3. 提升比例 $R_{\text{gain}}$两者之差除以手工耗时,再乘以 100%,得到节省时间的百分比,用来向团队汇报自动化的价值。
    Rgain=Tmanual−TautoTmanual×100%\displaystyle R_{\text{gain}} = \frac{T_{\text{manual}} - T_{\text{auto}}}{T_{\text{manual}}} \times 100\%

AI 应用场景

数据竞赛快速出基线

阶段:特征工程

解决的问题:传统竞赛选手需要手写大量特征代码,一组特征往往要折腾一两天。用 DFS 可以在一小时内生成成百上千个候选特征,快速搭建 baseline,比对手更早进入模型调优和集成阶段。

具体案例:在一场用户购买预测竞赛中,参赛者用 Featuretools 对用户表、订单表、商品表做深度特征合成,只花半天就生成了 800 多个特征,再用随机森林筛选出前 100 个,当周就把排名从 50% 提升到前 10%。

企业用户行为建模

阶段:特征工程与数据仓库

解决的问题:电商企业里,用户行为日志、订单记录、商品属性分散在多张表中,手工汇总容易遗漏重要信息。自动化特征工程将多表关系建模后,自动生成用户维度的行为统计特征,让算法工程师从繁重 SQL 中解脱。

具体案例:某电商推荐团队把 7 张业务表注册进 EntitySet,定义用户与订单、订单与商品的关系,用 DFS 生成“用户近 30 天购买均值”“用户最喜欢品类”等特征,推荐模型的 AUC 提升 3 个百分点。

金融风控多表特征衍生

阶段:特征工程

解决的问题:风控建模需要融合客户基本信息、交易流水、设备信息等多源数据,人工构造交易频次、金额波动等特征工作量大且易重复。自动化特征合成可以系统性地覆盖这些聚合特征。

具体案例:某消费金融风控团队使用 Featuretools 对客户表和上百万条交易流水做深度特征合成,自动生成“月均交易金额”“最大单笔消费间隔”等 300 多个特征,模型 KS 值提升 0.05,审批流程迭代周期从两周缩短到两天。

Python 演示

python54 行
import featuretools as ftimport pandas as pd # 构造三张表: 客户, 订单, 商品明细customers = pd.DataFrame({    'customer_id': [1, 2, 3, 4],    'age': [25, 32, 41, 28],    'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']}) orders = pd.DataFrame({    'order_id': [101, 102, 103, 104, 105, 106],    'customer_id': [1, 2, 1, 3, 4, 2],    'amount': [200.0, 450.0, 150.0, 320.0, 680.0, 560.0],    'order_time': ['2024-01-01', '2024-01-02', '2024-01-03',                   '2024-01-04', '2024-01-05', '2024-01-06']}) items = pd.DataFrame({    'item_id': [1, 2, 3, 4, 5, 6, 7, 8],    'order_id': [101, 101, 102, 102, 103, 104, 105, 106],    'item_name': ['phone', 'earphone', 'keyboard', 'mouse',                  'cup', 'backpack', 'computer', 'monitor'],    'price': [2000, 300, 150, 80, 25, 320, 5000, 1200]}) # 第一步: 创建实体集, 相当于清点冰箱食材es = ft.EntitySet(id='shop') # 第二步: 注册三张实体表, 分别指定主键索引es = es.add_dataframe(dataframe_name='customers',                      dataframe=customers,                      index='customer_id')es = es.add_dataframe(dataframe_name='orders',                      dataframe=orders,                      index='order_id')es = es.add_dataframe(dataframe_name='items',                      dataframe=items,                      index='item_id') # 第三步: 定义表与表之间的关系, 相当于给出食材搭配规则es = es.add_relationship(ft.Relationship(es['customers']['customer_id'],                                         es['orders']['customer_id']))es = es.add_relationship(ft.Relationship(es['orders']['order_id'],                                         es['items']['order_id'])) # 第四步: 深度特征合成, 自动生成候选特征矩阵feature_matrix, feature_defs = ft.dfs(entityset=es,                                      target_dataframe_name='customers',                                      max_depth=2,                                      verbose=True) print('自动生成特征数:', len(feature_defs))print(feature_matrix.head())
目的:用 Featuretools 自动完成多表特征合成,几行代码就生成了手工可能要写几十行 SQL 才能完成的聚合特征。
  1. es = ft.EntitySet(id='shop')创建实体集,对应“清点冰箱食材,准备开工”。
  2. es.add_dataframe(dataframe_name='customers', ...)把客户表注册为实体,并指定主键索引,让管家知道每个食材筐怎么编号。
  3. ft.Relationship(es['customers']['customer_id'], es['orders']['customer_id'])定义客户表与订单表之间的外键关系,是跨表聚合的前提。
  4. es.add_relationship(...)将关系正式加入实体集,相当于把食材搭配规则贴在冰箱门上。
  5. ft.dfs(entityset=es, target_dataframe_name='customers', max_depth=2)核心调用,自动生成候选特征,max_depth=2 表示最多做两层深度合成,控制特征复杂度。

常见误区

误区“DFS 一次生成了几千个特征,全部扔进模型里,肯定比手工做的几个特征强!自动化就是越多越厉害。”

正解候选特征多不等于有用。大量冗余和无关特征会拖慢训练速度、放大噪声,甚至导致严重的过拟合。就像把所有试菜的作品全部端上桌,客人反而不知道吃什么。正确做法是生成海量候选后,再用相关性、重要性等手段筛选出小而精的子集。

为何常见:看到“自动化”三个字,就误以为筛选和去重也被自动完成了,忽略了“生成候选”和“精选”是两回事。

误区“有了 Featuretools,我完全不需要懂业务了,让工具自己发挥就行。”

正解工具只能基于统计关系生成特征,它不懂“节假日前下单活跃”“夜间大额交易更可疑”这类业务常识。业务专家能把经验变成有价值的原始字段和关系定义,再交给自动化去放大。主厨依然要懂得菜品搭配,副厨只是更快地切菜。

为何常见:自动生成几千个特征的过程太炫酷,容易让人高估算法的通用性,低估业务语义的作用。

误区“max_depth 设成 5、设成 10,特征层层叠加,效果一定更好。”

正解深度越深,特征组合越复杂,数量指数级暴涨,计算成本和过拟合风险同步上升。备菜也不是切得越细越好——土豆切成薯泥和切成薯条是两种菜品,但切成一毫米的渣可能根本没法下锅。实践中一般从深度 1-2 开始尝试,根据验证集效果调整。

为何常见:只看到“层层组合很强大”,忽略了复杂度爆炸和过拟合代价,默认“深 = 好”。

误区“DFS 返回了 feature_matrix,直接喂给模型训练,不需要再做任何处理。”

正解DFS 只完成了“造候选”这一步,后续还需要做缺失值填充、无量纲化、去重筛选等处理。自动化特征工程不是端到端全自动建模,而是把最耗时的“备菜”自动化,烹饪(建模)仍然需要认真把控。

为何常见:把“特征生成自动化”误解为“整个机器学习流程自动化”,忽视了质量检查和数据清洗的必要性。

误区“把所有表一股脑塞进 EntitySet,不用定义关系,DFS 也能自己跑出好特征。”

正解不定义关系,DFS 就无法在表之间做跨表聚合,只能退化成单表特征变换,威力大打折扣。就像把食材乱堆在一起却不说搭配规则,再厉害的管家也只能做出一盘大杂烩。关系定义是深度特征合成的骨架。

为何常见:想跳过多表关系梳理,直接享受自动化的结果,忽略了这个环节恰恰是最需要业务理解的地方。

面试题

Q1. 特征工程在机器学习项目中的主要目的是什么?

单选题 · easy

  • A.增加训练样本的总数量
  • B.把原始数据加工成更有效特征← 正确答案
  • C.自动减少模型里的全部参数
  • D.提升计算机硬件的运算速度

答案:B。特征工程的核心是加工原始数据,产生更能表达业务规律的输入特征,就像备菜决定了一道菜的口感和颜值。A 属于数据增强,C 和 D 与特征工程无关。

Q2. 以下哪个是自动化特征工程的代表工具?

单选题 · easy

  • A.特征工程库 Featuretools← 正确答案
  • B.深度学习框架 TensorFlow
  • C.可视化分析工具 Tableau
  • D.分布式版本管理工具 Git

答案:A。Featuretools 是自动化特征工程的开源库,核心能力是深度特征合成。TensorFlow 是深度学习框架,Tableau 是可视化工具,Git 是版本管理工具,它们都不负责自动造特征。

Q3. 在 Featuretools 中,“实体(Entity)”指的是什么?

单选题 · mid

  • A.一个机器学习预测模型
  • B.一张数据表(如客户表)← 正确答案
  • C.一种特征计算的基元
  • D.一条样本对应的标签

答案:B。实体对应一张数据表,例如客户表、订单表、商品表。多个实体组成实体集,再通过关系连接起来。模型、特征基元和标签都不是 Featuretools 中“实体”的定义。

Q4. 皮尔逊相关系数的取值范围是多少?

单选题 · mid

  • A.取值落在闭区间 -1 到 1← 正确答案
  • B.取值落在闭区间 0 到 1
  • C.任何大于等于 0 的实数
  • D.包括全体正负整数的实数

答案:A。皮尔逊相关系数经过分母标准化后,取值范围固定在 [-1, 1]。正数代表正相关,负数代表负相关,0 表示没有线性相关。B 只描述了非负区间,C 和 D 的范围都过大。

Q5. 特征筛选中常用的手段有哪些?

多选题 · mid

  • A.皮尔逊相关系数检验← 正确答案
  • B.模型特征重要性排序← 正确答案
  • C.把所有特征直接投入模型
  • D.去除高度冗余重复的特征← 正确答案

答案:ABD。皮尔逊相关系数用于过滤与目标无关的特征,模型特征重要性排序用于保留高价值特征,去冗余用于消除共线性。C 是错误做法,不做筛选直接全部投入容易导致过拟合,也违背了“筛选”的前提。

Q6. 在深度特征合成中,“深度(depth)”的含义是什么?

单选题 · mid

  • A.数据表包含的总行数
  • B.特征基元叠加的层数← 正确答案
  • C.样本标签的总个数
  • D.神经网络模型的层数

答案:B。深度表示特征基元组合嵌套的层数。第 1 层做一次聚合,第 2 层把第 1 层结果再套新算子,相当于备菜的层层加工。行数、标签数、模型层数都不是特征合成的深度。

Q7. 关于 Featuretools 中 dfs() 函数的输出,下列说法正确的是?

单选题 · hard

  • A.输出就是可以直接建模的最终数据集
  • B.输出特征矩阵且可回溯到特征定义← 正确答案
  • C.输出只有一张空白无用的表
  • D.输出包含了超参数调优结果

答案:B。dfs() 返回特征矩阵和特征定义列表,每个自动生成的特征都可以回溯到它由哪些基元、哪些关系组合而来。但输出的特征还需经过清洗和筛选后才能建模,所以 A 太绝对。C 和 D 描述都不正确。

Q8. 下列关于自动化特征工程的说法,正确的有哪些?

多选题 · hard

  • A.自动化能完全替代业务专家
  • B.候选特征越多模型效果越强
  • C.实体关系影响跨表特征生成← 正确答案
  • D.深度过深会导致特征爆炸和过拟合← 正确答案

答案:CD。实体关系是 DFS 跨表聚合的前提,定义错了关系,生成的特征质量会很差;深度过深会让特征数量指数级增长,带来过拟合风险。A 和 B 都是常见误区:自动化不能替代业务经验,候选特征多也必须经过筛选。

Q9. 手工特征工程最大的痛点是什么?

单选题 · easy

  • A.模型参数过多需要反复调优
  • B.造特征耗时费力且容易遗漏组合← 正确答案
  • C.计算时无法利用 GPU 加速
  • D.原始数据无法长期持久化存储

答案:B。手工造特征依赖个人经验和反复尝试,费时费力,还容易漏掉有价值的组合。就像备菜只能靠人一刀一刀切,慢且容易漏花样。其他选项描述的不是特征工程的主要痛点。

Q10. 使用 Featuretools 做自动化特征工程的正确步骤包括哪些?

多选题 · hard

  • A.创建实体集合 EntitySet← 正确答案
  • B.注册实体表并定义关系← 正确答案
  • C.不定义关系直接运行 dfs
  • D.用 max_depth 控制特征复杂度← 正确答案

答案:ABD。标准流程是:创建 EntitySet、注册实体表并指定索引、定义表间关系、调用 dfs 并控制 max_depth。C 是错误做法,没有关系定义 DFS 就无法跨表聚合,特征生成质量会大打折扣。