用途
该技能用于分析带时间戳的活动数据,重建活动画像并识别时间模式。核心原理是:时间戳编码了行为节律,在多个粒度上分箱可以揭示单一粒度分析会遗漏的日常规律、周周期、季节趋势和间歇性爆发。
主要能力
- 多粒度分箱:按小时、日、周、月聚合时间戳,重建活动分布。
- 活动热力图:构建 7x24 矩阵(行=星期几,列=小时),是信息量最大的时间可视化。
- 昼夜规律检测:通过每日小时分布的余弦相似度衡量活动在相同小时聚集的一致性,输出 0-1 的规律性分数。
- 周模式与星期几分析:使用 Kruskal-Wallis 检验判断活动是否随星期几显著变化,并比较工作日与周末。
- 季节分解:在时间跨度足够时,使用 STL 将活动序列分解为趋势、季节和残差,并计算季节强度。
- 突发检测:识别活动超过均值加若干倍标准差的窗口,发现异常高峰。
- 参与风格分类:根据时间模式区分稳定贡献者、集中爆发型用户、周末型用户等。
使用方式
工作流包含十个步骤:
- 验证时间戳数据与时区信息。
- 归一化时区并处理夏令时。
- 多粒度分箱(小时、日、周、月)。
- 构建活动热力图(星期几 x 小时)。
- 检测昼夜规律。
- 识别周与星期几模式。
- 季节分解(若时间跨度足够)。
- 突发检测。
- 分类参与风格。
- 将发现写入 docs/analysis/12-temporal-circadian-patterns.md。
关键阈值与注意事项:
- 任何分析最少需要 20 条时间戳,低于此值仅列出原始时间戳。
- 小时分箱需要 50 条以上且分布在 7 个以上不同日期。
- 周模式需要至少 4 周数据。
- 季节分解需要至少 2 个完整季节周期(周季节性需 14 周以上,年度需 2 年以上)。
- 小时分箱前必须进行时区归一化,仅用 UTC 会使昼夜模式产生偏移。
- 夏令时转换应使用 pytz 或 zoneinfo 的 tz_localize,避免朴素偏移算术导致重复或缺失小时。
- 突发检测阈值为窗口内活动超过均值加 2 倍标准差,可按语料调整。
- 热力图标准方向为行=星期几,列=小时,7x24 网格。
- pandas 重采样别名:h=小时,D=日,W=周,ME=月末;pandas >= 2.0 应使用 ME 而非已弃用的 M。
适用场景
- 数据集包含用户操作的时间戳(帖子、提交、购买、登录、消息)。
- 需要重建用户或系统最活跃/最不活跃的时段。
- 调查昼夜规律(一致的日常模式 vs 不规律时间)。
- 检测周周期(工作日与周末行为差异)。
- 识别季节趋势或长期活动演变。
- 发现活动爆发(突然高于基线的峰值)。
- 根据时间模式分类参与风格。
- 为下游画像或聚类提供时间特征。
限制
- 时间戳缺少任何时区指示且无法合理推断时不应使用,因为未归一化的分箱会产生误导性的小时画像。
- 总时间戳少于 20 条时数据不足。
- 不适用于流式数据的实时异常检测,该技能面向回顾性批量分析。
- 不应试图从活动时间推断物理位置。
- 若时间戳缺少时区信息,应检查列名是否暗示 UTC、是否存在单独时区列;若都没有,记录假设并继续使用 UTC,不要从活动模式猜测时区。