
1) 【一句话结论】在AI模型推理服务中,特征工程需通过系统化流程(数据预处理、特征构造、选择与降维),结合业务逻辑与模型特性,从用户行为日志等原始数据中提取有效特征,同时优化计算效率,平衡模型性能与实时推理成本。
2) 【原理/概念讲解】特征工程是将原始数据转化为模型可理解特征的关键步骤。原始数据(如用户行为日志)包含大量原始信息(如点击、停留时间),这些信息对模型直接可用性低,需通过特征工程处理。核心是挖掘数据中的模式(如用户偏好、行为习惯),类比“食材烹饪”:预处理(清洗食材,去除杂质)、特征构造(切配、调味,生成新特征)、特征选择(选优质食材,去除冗余)、降维(减少食材种类,提升效率)。具体步骤包括:数据清洗(处理缺失/异常值)、特征构造(生成交互特征、时序特征)、特征选择(筛选有效特征)、降维(减少特征维度)。
3) 【对比与适用场景】
| 方法 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 特征选择方法 | 筛选对模型预测有用的特征,减少冗余 | 根据特征与标签的关系或模型训练结果筛选 | 所有特征工程环节 | 需结合数据规模与模型类型,避免过度简化 |
| - 过滤法(方差选择法、卡方检验) | 基于统计检验,不依赖模型,计算快 | 简单高效,适用于高维数据 | 分类问题,特征与标签相关性高 | 可能遗漏交互信息,如“设备类型+操作类型”的组合 |
| - 嵌入法(L1正则化、随机森林重要性) | 将特征选择与模型训练结合 | 特征稀疏化(L1),或模型内部分特征重要性 | 线性模型(如逻辑回归)、树模型(如随机森林) | 计算成本较高,可能过拟合 |
| - Wrappers(递归特征消除) | 结合模型训练结果,迭代选择 | 评估特征子集对模型性能的影响 | 树模型(如XGBoost) | 计算成本高,适用于特征数量适中 |
| 特征交叉 | 将两个或多个特征组合成新特征,捕捉交互信息 | 生成组合特征,如“设备类型+操作类型” | 需要捕捉特征间交互(如用户在手机上点击视频 vs 电脑上点击文章) | 可能导致特征爆炸,需筛选 |
| 时序特征提取 | 从时间序列数据中提取特征,捕捉动态变化 | 处理时间依赖,如滑动窗口统计、自回归 | 用户行为日志按时间顺序记录 | 需确定时间窗口大小,避免信息泄露或丢失关键信息 |
4) 【示例】:假设用户行为日志包含字段:用户ID、时间戳、操作类型(点击/浏览/购买)、页面ID、设备类型(手机/电脑)、停留时间。提取特征步骤:
伪代码示例(简化):
def extract_features(log_data):
# 预处理
log_data['stay_time'].fillna(log_data['stay_time'].median(), inplace=True)
q1 = log_data['stay_time'].quantile(0.25)
q3 = log_data['stay_time'].quantile(0.75)
iqr = q3 - q1
upper_bound = q3 + 1.5 * iqr
log_data['stay_time'] = log_data['stay_time'].clip(upper=upper_bound)
# 基础特征
features = {
'is_click': (log_data['操作类型'] == '点击').astype(int),
'device_type': log_data['设备类型'],
'stay_time_std': (log_data['stay_time'] - log_data['stay_time'].mean()) / log_data['stay_time'].std()
}
# 时序特征(延迟窗口,避免信息泄露)
recent_clicks = (log_data['操作类型'] == '点击').rolling(window=7).sum().shift(1).fillna(0)
features['recent_clicks'] = recent_clicks
# 特征交叉
features['device_click'] = f"{features['device_type']}_{features['is_click']}"
# 特征选择(嵌入法,随机森林重要性)
# 假设训练后得到重要性,筛选前20%
selected_features = ['is_click', 'device_type', 'stay_time_std', 'recent_clicks', 'device_click']
return features[selected_features]
5) 【面试口播版答案】:在AI模型推理服务中,处理特征工程的核心是从原始数据中提取有效特征并优化效率。比如用户行为日志这类数据,首先做预处理,比如处理缺失值(用中位数填充停留时间缺失)和异常值(用IQR方法过滤极长停留时间),然后提取基础特征(如点击标识、设备类型、标准化停留时间),接着处理时序特征(比如滑动窗口计算过去7天点击次数,捕捉用户行为的动态变化),再进行特征交叉(比如设备类型和操作类型组合,生成“手机点击”特征,捕捉交互作用),接着用特征选择方法(如随机森林的feature_importance)筛选有效特征,最后用PCA降维(如果特征维度过高),保留主要方差的特征。整个过程通过系统化流程(预处理→构造→选择→降维),结合业务逻辑与模型特性,平衡模型性能与实时推理成本,提升AI模型推理的准确性和效率。
6) 【追问清单】:
7) 【常见坑/雷区】: