此文根据之前特征向量化的工作记录做一些延伸。

行为序列(如用户点击序列、购买序列、浏览序列,例如 [item1001, item1003, item1002, ...])的核心特点是 有序性、时序关联性、变长性,向量化的关键是 保留 “顺序信息” 和 “序列内元素的关联信息”(而非单纯把每个元素单独编码)。

一、基础方法:序列元素编码 + 聚合(适合简单模型 / 快速落地)

核心思路:先对序列中每个元素(如物品 ID、商品分类)做基础编码(Embedding / 目标编码),再通过 “聚合操作” 将变长序列转为固定长度向量(适配传统机器学习模型,如逻辑回归、GBDT)。

1. 方法:元素 Embedding + 池化(Pooling)

步骤:
  1. 单个元素编码:将序列中每个元素(如物品 ID)映射为低维稠密向量(即物品 Embedding,可通过 Word2Vec、矩阵分解或模型训练得到);
    • 示例:item1001→[0.12, 0.34, 0.56]item1003→[0.21, 0.43, 0.65]item1002→[0.18, 0.39, 0.51]
  2. 序列聚合(池化):用 “统计方式” 将变长序列的多个向量合并为 1 个固定长度向量(消除序列长度差异);
    • 常用聚合方式:
      • 平均池化(Mean Pooling):所有元素向量的均值(最常用,保留整体偏好);示例:(item1001向量 + item1003向量 + item1002向量) / 3 → 得到 1 个 3 维向量;
      • 最大池化(Max Pooling):取每个维度的最大值(突出序列中 “最显著” 的特征);
      • 求和池化(Sum Pooling):所有元素向量的和(适合计数类场景)。
适用场景:
  • 传统机器学习模型(LR、GBDT、XGBoost),或深度学习模型的基础特征输入;
  • 对 “序列顺序” 不敏感,仅关注 “用户整体偏好”(如用户喜欢的商品类别分布)。
优点:
  • 简单易实现,计算成本低,无长度限制;
  • 适配所有模型(固定长度向量)。
缺点:
  • 丢失序列顺序信息(如 [A,B] 和 [B,A] 聚合后向量相同);
  • 无法捕捉元素间的时序关联(如 “先点击 A 再点击 B” 的逻辑)。

2. 方法:统计型特征编码(基于序列统计量)

步骤:

不直接对序列向量聚合,而是从序列中提取 “统计特征”,将其作为数值特征(本质是向量化的一种简化形式):

  • 常用统计特征:
    • 频次统计:序列中每个元素的出现次数(如 item1001出现2次 → 特征值 = 2);
    • 时序统计:序列长度(如浏览了 5 个商品)、最近 N 个元素(如最后点击的 3 个商品 ID 的 Embedding 均值)、元素间隔(如两次点击的时间差均值);
    • 类别统计:序列中涉及的商品类别数(如覆盖 3 个品类)、Top1 品类占比(如 70% 是家电)。
适用场景:
  • 特征工程阶段快速补充信息,或与其他向量化方法结合使用;
  • 模型对时序关联要求低,仅需 “序列整体属性”。
示例:

用户行为序列 [item1001(家电), item1003(家电), item1002(服装)] → 统计特征:

  • 序列长度 = 3;
  • 家电品类占比 = 2/3≈0.67;
  • 最后 1 个元素 Embedding=[0.18, 0.39, 0.51]。

二、进阶方法:时序关联编码(保留顺序,适合深度学习)

核心思路:通过 “时序模型” 直接处理变长序列,输出包含顺序信息的固定长度向量,适合深度学习模型(如 CNN、RNN、Transformer)。

1. 方法:循环神经网络(RNN/LSTM/GRU)

原理:
  • RNN:通过 “隐藏状态” 传递序列的历史信息,逐元素处理序列(如先处理 item1,再用 item1 的信息处理 item2),最终输出 “最后一个隐藏状态” 作为整个序列的向量;
  • LSTM/GRU:解决 RNN 的 “长序列梯度消失” 问题,能捕捉长序列中的远期依赖(如用户上周点击的商品对今天行为的影响)。
示例:

行为序列 [item1001, item1003, item1002] → 逐元素输入 LSTM:

  • 处理 item1001 → 隐藏状态 h1
  • 处理 item1003 → 结合 h1 生成 h2
  • 处理 item1002 → 结合 h2 生成 h3
  • 最终序列向量 = h3(固定长度,如 64 维)。
适用场景:
  • 长序列、需捕捉时序依赖的场景(如用户浏览路径分析、下一步行为预测);
  • 深度学习模型(如推荐系统的 DeepFM、NCF,或时序预测模型)。
优点:
  • 完整保留序列顺序,能捕捉元素间的时序关联(如 “先看手机再看手机壳” 的逻辑);
  • 适配变长序列(不同用户的行为序列长度可不同)。
缺点:
  • 计算复杂度高,训练慢;
  • 对短序列效果一般,且无法并行处理(逐元素计算)。

2. 方法:卷积神经网络(CNN)

原理:

将序列视为 “1 维文本”,用卷积核(Kernel)滑动窗口提取序列的 “局部特征”(如连续 2-3 个元素的组合模式),再通过池化层将局部特征聚合为固定长度向量。

示例:

行为序列 [item1001, item1003, item1002, item1005] → 用长度为 2 的卷积核:

  • 窗口 1:[item1001, item1003] → 提取局部特征 f1
  • 窗口 2:[item1003, item1002] → 提取局部特征 f2
  • 窗口 3:[item1002, item1005] → 提取局部特征 f3
  • 池化后输出 [max(f1,f2,f3)] 作为序列向量。
适用场景:
  • 序列的 “局部模式” 对结果影响大(如 “连续点击两个家电商品” 的组合特征);
  • 需并行处理(卷积操作可并行),提升训练效率。
优点:
  • 捕捉局部时序模式,并行计算速度快;
  • 对序列长度不敏感,鲁棒性强。
缺点:
  • 难以捕捉长距离依赖(卷积核窗口有限);
  • 对顺序的敏感度弱于 LSTM/Transformer。

3. 方法:Transformer(自注意力机制)

原理:

通过 “自注意力(Self-Attention)” 机制,计算序列中每个元素与其他所有元素的 “关联权重”(如 item1 与 item3 的关联度),同时捕捉 “全局依赖” 和 “顺序信息”,最终通过池化(如取第一个 Token 的向量,或所有 Token 的均值)得到序列向量。

关键优势:
  • 并行处理:无需逐元素计算,训练效率远高于 LSTM;
  • 全局依赖:能直接捕捉序列中任意两个元素的关联(如长序列中第 1 个和第 10 个元素的关系);
  • 位置编码(Positional Encoding):通过添加位置向量,明确保留序列的顺序信息(解决 CNN/RNN 对长距离顺序捕捉不足的问题)。
适用场景:
  • 长序列、复杂时序关联场景(如用户长期行为序列分析、多行为序列融合);
  • 主流推荐模型(如 DIN、DIEN、SIM,或大模型微调)。
示例:

用户行为序列 [itemA, itemB, itemC, itemD] → Transformer 计算:

  • 自注意力权重:itemB 与 itemD 的关联度 = 0.8(用户先看 B 再看 D,关联紧密);
  • 位置编码:itemA 位置向量 p1itemB 位置向量 p2p1≠p2,保留顺序);
  • 最终序列向量 = 所有元素的 “加权向量和”(权重由自注意力和位置编码共同决定)。
优点:
  • 时序捕捉能力最强,能同时兼顾全局依赖和顺序;
  • 并行计算,训练效率高;
  • 适配变长序列,鲁棒性强。
缺点:
  • 计算复杂度高(O (n²),n 为序列长度),长序列(如 n>100)需做截断;
  • 对数据量要求高(需大量行为数据训练注意力权重)。

三、常见推荐系统组合

实际场景中,不会单一使用一种方法,而是 “组合使用” 以兼顾效果和效率:

方案 1:轻量级场景(中小规模数据)

  • 行为序列元素 → 物品 Embedding(Word2Vec 预训练);
  • 序列聚合 → 平均池化 + 最近 3 个元素的最大池化;
  • 补充特征 → 序列长度、Top1 品类占比、最近一次行为的时间差;
  • 适配模型:DeepFM、XGBoost(固定长度向量输入)。

方案 2:中大规模场景(推荐系统主流)

  • 行为序列 → Transformer(自注意力机制)+ 位置编码;
  • 序列向量 → 自注意力输出的均值池化;
  • 融合特征 → 与用户画像 Embedding、物品特征向量拼接;
  • 适配模型:DIN(深度兴趣网络)、SIM(序列兴趣匹配)、大模型微调。

方案 3:实时场景(低延迟要求)

  • 行为序列 → 最近 N 个元素(如 N=20)的 Embedding;
  • 序列聚合 → 平均池化(计算快,延迟低);
  • 适配模型:实时推荐系统(如 Flink Streaming 处理,低延迟响应)。

四、关键选型原则

  1. 序列长度
    • 短序列(n≤20):优先用 “Embedding + 池化” 或 CNN;
    • 中长序列(20<n≤100):优先用 LSTM/GRU;
    • 长序列(n>100):优先用 Transformer(截断)或 “最近 N 个元素 + 池化”。
  2. 模型复杂度
    • 传统模型(LR/GBDT):用 “Embedding + 池化” 或统计特征;
    • 深度学习模型:用 LSTM/Transformer;
  3. 业务需求
    • 仅需 “整体偏好”:用平均池化 + 统计特征;
    • 需 “时序依赖”(如下一步行为预测):用 LSTM/Transformer;
    • 需 “局部模式”(如连续行为):用 CNN。
  4. 工程成本
    • 快速落地:用 Embedding + 池化(无需复杂模型训练);
    • 追求效果:用 Transformer(需 GPU 资源和大量数据)。

五、总结

行为序列向量化的核心是 “保留顺序” 和 “捕捉关联”,选型优先级:

  • 快速落地 / 简单场景 → Embedding + 平均池化;
  • 中规模 / 时序依赖 → LSTM/GRU;
  • 大规模 / 复杂关联 → Transformer(自注意力);
  • 传统模型适配 → 统计特征 + 池化向量。

最常用的是 “Transformer(自注意力)+ Embedding + 池化” 组合,既能保证时序捕捉效果,又能适配工程落地需求(如截断长序列、并行训练)。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐