行为序列处理方法
此文根据之前特征向量化的工作记录做一些延伸。
行为序列(如用户点击序列、购买序列、浏览序列,例如 [item1001, item1003, item1002, ...])的核心特点是 有序性、时序关联性、变长性,向量化的关键是 保留 “顺序信息” 和 “序列内元素的关联信息”(而非单纯把每个元素单独编码)。
一、基础方法:序列元素编码 + 聚合(适合简单模型 / 快速落地)
核心思路:先对序列中每个元素(如物品 ID、商品分类)做基础编码(Embedding / 目标编码),再通过 “聚合操作” 将变长序列转为固定长度向量(适配传统机器学习模型,如逻辑回归、GBDT)。
1. 方法:元素 Embedding + 池化(Pooling)
步骤:
- 单个元素编码:将序列中每个元素(如物品 ID)映射为低维稠密向量(即物品 Embedding,可通过 Word2Vec、矩阵分解或模型训练得到);
- 示例:
item1001→[0.12, 0.34, 0.56],item1003→[0.21, 0.43, 0.65],item1002→[0.18, 0.39, 0.51];
- 示例:
- 序列聚合(池化):用 “统计方式” 将变长序列的多个向量合并为 1 个固定长度向量(消除序列长度差异);
- 常用聚合方式:
- 平均池化(Mean Pooling):所有元素向量的均值(最常用,保留整体偏好);示例:
(item1001向量 + item1003向量 + item1002向量) / 3→ 得到 1 个 3 维向量; - 最大池化(Max Pooling):取每个维度的最大值(突出序列中 “最显著” 的特征);
- 求和池化(Sum Pooling):所有元素向量的和(适合计数类场景)。
- 平均池化(Mean 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位置向量p1,itemB位置向量p2(p1≠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 处理,低延迟响应)。
四、关键选型原则
- 序列长度:
- 短序列(n≤20):优先用 “Embedding + 池化” 或 CNN;
- 中长序列(20<n≤100):优先用 LSTM/GRU;
- 长序列(n>100):优先用 Transformer(截断)或 “最近 N 个元素 + 池化”。
- 模型复杂度:
- 传统模型(LR/GBDT):用 “Embedding + 池化” 或统计特征;
- 深度学习模型:用 LSTM/Transformer;
- 业务需求:
- 仅需 “整体偏好”:用平均池化 + 统计特征;
- 需 “时序依赖”(如下一步行为预测):用 LSTM/Transformer;
- 需 “局部模式”(如连续行为):用 CNN。
- 工程成本:
- 快速落地:用 Embedding + 池化(无需复杂模型训练);
- 追求效果:用 Transformer(需 GPU 资源和大量数据)。
五、总结
行为序列向量化的核心是 “保留顺序” 和 “捕捉关联”,选型优先级:
- 快速落地 / 简单场景 → Embedding + 平均池化;
- 中规模 / 时序依赖 → LSTM/GRU;
- 大规模 / 复杂关联 → Transformer(自注意力);
- 传统模型适配 → 统计特征 + 池化向量。
最常用的是 “Transformer(自注意力)+ Embedding + 池化” 组合,既能保证时序捕捉效果,又能适配工程落地需求(如截断长序列、并行训练)。
更多推荐



所有评论(0)