4. 时间特征构建:最佳联系时段识别、历史响应时间分布、时区与节假日特征
时间特征是催收触达效率的核心杠杆。在错误的时间拨打电话,不仅无法建立有效沟通,还会引发客户反感、增加投诉风险。本节将系统讲解如何从历史交互数据中挖掘时间规律,构建可落地的“时间智能”特征。
4.1 最佳联系时段识别
最佳联系时段并非固定不变的“9:00-11:00”或“14:00-17:00”,而是需要结合客户画像、历史行为和案件阶段动态计算。以下为构建最佳时段特征的标准化流程:
- 时段切片:将一天24小时划分为48个30分钟窗口(如00:00-00:30, 00:30-01:00, …)。
- 响应率计算:对每个窗口统计历史联系次数与有效接通次数,计算窗口响应率 = 有效接通数 / 总联系数。
- 平滑处理:使用移动平均或局部加权回归(LOESS)消除稀疏窗口的随机波动。
- 峰值提取:识别响应率最高的前3个窗口作为“黄金时段”,响应率高于均值1.5倍以上的窗口作为“优质时段”。
- 动态更新:按周或按月滚动更新,避免特征过时。
关键指标: 最佳时段特征通常以“客户-时段”二元组形式存储,例如
customer_id + time_slot_08:00 对应的响应概率值。在模型训练时,该特征可直接作为数值型输入。
实践建议: 对于新客户(无历史数据),可先使用同批次、同地区、同产品类型的群体最佳时段作为冷启动默认值,待积累3次以上联系记录后再切换为个性化时段。
4.2 历史响应时间分布
历史响应时间分布特征用于刻画客户在一天内不同时间点的“响应倾向性”,比单一的最佳时段包含更丰富的信息。常用特征包括:
| 特征名称 | 计算方式 | 业务含义 |
|---|---|---|
| 响应时间均值 | 历史有效接通时间的均值(转换为分钟数) | 客户最可能接听的中心时刻 |
| 响应时间标准差 | 历史有效接通时间的标准差 | 客户接听时间的规律性(值越小越规律) |
| 响应时间偏度 | 历史有效接通时间的偏度系数 | 客户倾向于上午还是下午接听(正偏=下午偏多) |
| 响应时间熵 | 将一天划分为12个2小时窗口,计算各窗口响应概率的信息熵 | 客户接听时间的分散程度(熵越高越分散) |
| 最近响应时间 | 最近一次有效接通的时间点 | 反映客户近期作息变化,权重应高于历史均值 |
# 示例:计算客户响应时间分布特征(Python伪代码)
import numpy as np
def compute_response_time_features(contact_history):
# contact_history: 包含 'contact_time' (datetime) 和 'is_effective' (bool) 的列表
effective_times = [c['contact_time'].hour * 60 + c['contact_time'].minute
for c in contact_history if c['is_effective']]
if len(effective_times) < 3:
return None # 数据不足
features = {
'mean_time': np.mean(effective_times),
'std_time': np.std(effective_times),
'skew_time': np.mean(((effective_times - np.mean(effective_times)) / np.std(effective_times)) ** 3),
'recent_time': effective_times[-1]
}
return features
避坑提示: 响应时间分布特征对数据量敏感。当客户历史有效接通次数 < 3 时,建议使用群体统计值替代个体特征,避免因样本过少导致过拟合。
4.3 时区与节假日特征
时区和节假日是时间特征中容易被忽视但影响巨大的维度。一个在客户工作时间拨打的电话,如果恰逢当地公共假日,效果可能适得其反。
4.3.1 时区特征构建
- 时区偏移量:根据客户手机号归属地、身份证号前6位或GPS定位,确定客户所在时区(如UTC+8, UTC-5)。
- 本地时间转换:将系统联系时间统一转换为客户本地时间,再提取“本地小时”、“本地星期几”等特征。
- 跨时区标识:标记客户时区与催收中心时区是否一致,若不一致则记录时差绝对值。
4.3.2 节假日特征构建
- 法定节假日:对接国家法定节假日API或维护节假日日历表,标记当天是否为节假日。
- 调休日:识别因调休而上班的周末(工作日特征)和因调休而休息的工作日(节假日特征)。
- 特殊日期:如发薪日(通常为每月10日、15日或20日)、账单日、还款宽限期最后一天等。
- 连续假期长度:当前日期处于连续假期中的第几天(如国庆长假第3天),影响客户情绪和接听意愿。
特征组合示例: 将“本地小时”与“节假日标识”交叉,生成“节假日_上午”、“工作日_下午”等组合特征,可显著提升模型对客户接听意愿的预测能力。
4.4 时间特征组合策略
单一时间特征的效果有限,通过特征组合可以挖掘更深层的交互模式。以下为经过验证的高效组合策略:
| 组合特征 | 构建方式 | 应用场景 |
|---|---|---|
| 本地时段 × 客户职业类型 | 将客户职业(上班族/自由职业/退休)与本地时段交叉 | 上班族在午休时段(12:00-13:30)响应率显著高于其他时段 |
| 节假日标识 × 逾期天数 | 节假日标识(0/1)与逾期天数分箱(1-7天/8-30天/30天+)交叉 | 节假日对短期逾期客户响应率提升明显,对长期逾期客户影响较小 |
| 时区差 × 联系次数 | 时区差绝对值(小时)与历史联系次数分箱交叉 | 时区差 > 3小时且联系次数 < 3的客户,接通率低于10% |
| 响应时间熵 × 最佳时段 | 熵值分箱(低/中/高)与最佳时段标识交叉 | 高熵客户即使有最佳时段,响应率也低于低熵客户20%以上 |
特征工程技巧: 时间特征组合建议使用“笛卡尔积 + 特征选择”策略。先通过笛卡尔积生成大量组合候选,再使用基于树模型的特征重要性或互信息进行筛选,保留Top 20-50个有效组合特征。
4.5 时间特征监控与迭代
时间特征具有时效性,客户作息习惯会随季节、社会事件、个人状态变化。建议建立以下监控机制:
- 周度漂移检测:对比本周与上周的“最佳时段”分布,若Top 3时段变化超过2个窗口,触发特征更新。
- 月度重训练:每月使用最新数据重新计算所有时间特征,确保特征反映当前客户状态。
- 异常事件标记:如疫情封控、重大节假日、自然灾害等,在特征中增加“异常事件影响系数”作为临时修正。
重要提醒: 时间特征不是“一次构建、永久使用”的静态资产。建议将时间特征的计算逻辑封装为可定时调用的ETL任务,并记录每次更新的版本号,便于回溯和效果对比。