这是一个基于深度学习的用户行为序列分析框架,用于从用户行为序列中构建嵌入表示(embeddings)。该框架支持多种模型架构,包括Transformer、DSSM、SASRec以及多模态模型,可以根据不同的应用场景灵活选择。
deepBehaviorSequence/
├── data.py # 数据处理相关代码
├── models.py # 模型定义代码
├── train.py # 模型训练代码
├── embedding_utils.py # 嵌入处理工具
├── example.py # 使用示例
├── convert_to_onnx.py # 模型转换为ONNX格式
├── inference_onnx.py # ONNX模型推理
├── embeddings/ # 存储嵌入的目录
│ └── user_embeddings.pkl # 用户嵌入数据
└── README.md # 项目说明文档
-
多种模型架构:
UserBehaviorTransformer
: 基于Transformer的用户行为分析模型DSSM
: 深度语义相似度模型SASRec
: 自注意力序列推荐模型DSSM_SASRec
: 结合DSSM和SASRec的混合模型MultiModalBehaviorEncoder
: 多模态用户行为编码器
-
模块化设计:
- 使用工厂模式创建不同类型的模型
- 抽象出训练、评估和数据处理逻辑
- 提供嵌入管理和分析工具
-
嵌入分析工具:
- 提取用户行为嵌入
- 保存和加载嵌入
- 计算用户相似度
- 用户聚类
- 嵌入可视化
-
模型部署:
- 支持将模型转换为ONNX格式
- 提供ONNX模型推理示例
pip install torch numpy matplotlib scikit-learn onnxruntime
from models import ModelFactory
from train import train_model, prepare_data
# 准备数据
sequences = [...] # 用户行为序列
labels = [...] # 标签
# 准备训练数据
train_dataloader, val_dataloader = prepare_data(sequences, labels, batch_size=32)
# 定义模型配置
config = {
'num_events': 10,
'd_model': 128,
'nhead': 4,
'num_layers': 2
}
# 训练模型
model = train_model(
model_type='transformer',
config=config,
train_dataloader=train_dataloader,
val_dataloader=val_dataloader
)
from embedding_utils import EmbeddingManager
# 创建嵌入管理器
embedding_manager = EmbeddingManager(model)
# 提取用户嵌入
for user_id, sequence in user_sequences.items():
event_ids, time_intervals, mask = sequence
embedding_manager.extract_embedding(user_id, event_ids, time_intervals, mask)
# 保存嵌入
embedding_manager.save_embeddings("embeddings/user_embeddings.pkl")
from embedding_utils import find_similar_users, cluster_users
# 加载嵌入
embedding_manager = EmbeddingManager()
embedding_manager.load_embeddings("embeddings/user_embeddings.pkl")
# 查找相似用户
similar_users = find_similar_users("user1", embedding_manager, top_k=5)
# 用户聚类
user_clusters, cluster_centers = cluster_users(embedding_manager, n_clusters=3)
# 可视化嵌入
reduced_embeddings, fig = embedding_manager.visualize_embeddings(method='tsne')
# 创建多模态模型
multimodal_config = {
'num_events': 10,
'num_locations': 10,
'num_devices': 5,
'd_model': 128,
'nhead': 4,
'num_layers': 2
}
multimodal_model = ModelFactory.create_model('multimodal', multimodal_config)
# 使用多模态模型提取嵌入
embedding = multimodal_model(event_ids, locations, devices, time_intervals, mask)
查看 example.py
文件,了解完整的使用流程。
python example.py
- 将模型转换为ONNX格式:
python convert_to_onnx.py
- 使用ONNX模型进行推理:
python inference_onnx.py
- 在
models.py
中定义新的模型类 - 在
ModelFactory
类中添加对应的创建方法
在 embedding_utils.py
中添加新的分析函数
MIT