用户行为轨迹模式挖掘与预测 - 变阶马尔可夫模型
Skill-Trajectory-Pattern-Mining · 14-用户分析
1. 解决的问题
母婴电商需要桑基图展示用户从首页→搜索→PDP→加购→支付的流量宽度
2. 核心算法逻辑
三步法闭环:① 改进 DBSCAN 密度聚类识别典型轨迹模式(用 LCS 相似度替代欧氏距离);② 频繁子轨迹挖掘(FPTree 变体,支持度阈值筛选高频页面序列);③ 变阶马尔可夫模型(VariableOrder Markov, VOM)预测下一步页面。
3. 业务应用场景
业务问题:母婴电商需要桑基图展示用户从首页→搜索→PDP→加购→支付的流量宽度。当前只知道每页 PV,不知道页面间的转移概率,无法渲染 Sankey。
| 字段 | 类型 | 示例 | |------|------|------| | `session_id` | string | `"sess_20250101_u001"` | | `user_id` | string | `"u001"` | | `page_type` | string | `"HOME"/"SEARCH"/"CAT"/"PDP"/"CART"/"ORDER"/"PAY"` | | `page_name` | string | `"/product/12345"` | | `dwell_time_sec` | int | `45`(秒) | | `event_time`
| 缩写 | 页面类型 | 说明 | |------|---------|------| | `HOME` | 首页 | 品牌官网/平台首页 | | `SEARCH` | 搜索结果页 | 关键词搜索 | | `CAT` | 品类页 | 奶粉/纸尿裤等类目 | | `PDP` | 商品详情页 | Product Detail Page | | `CART` | 购物车 | | | `ORDER` | 订单确认页 | | | `PAY` | 支付页 | | | `REVIEW` | 评论页 | | | `PROMOTION` | 促销活动页 | |
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
5000 万
7. 代码模板
代码块数量:8 · 路径:未检测到
"""
Trajectory Pattern Mining & Variable-Order Markov Prediction
轨迹模式挖掘与变阶马尔可夫预测
功能:
1. 数据预处理(session 清洗、页面类型映射)
2. LCS-based 轨迹相似度计算
3. 改进 DBSCAN 聚类(r-neighborhood)
4. 频繁子轨迹挖掘
5. 变阶马尔可夫转移概率矩阵构建
6. 下一步页面预测(带停留时间权重)
7. 输出 Plotly/ECharts 桑基图 JSON
依赖: pip install numpy pandas scikit-learn
"""
import json
import math
from collections import defaultdict, Counter
from typing import Dict, List, Optional, Tuple
import numpy as np
import pandas as pd
# ─────────────────────────────────────────────
# 1. 数据结构定义
# ─────────────────────────────────────────────
# 母婴电商页面类型标准映射
PAGE_TYPE_MAP = {
"/": "HOME",
"/index": "HOME",
"/search": "SEARCH",
"/category": "CAT",
"/product": "PDP",
"/cart": "CART",
"/checkout": "ORDER",
"/payment": "PAY",
"/review": "REVIEW",
"/promotion": "PROMO",
}
# Sankey 展示用的页面顺序(漏斗层级)
FUNNEL_ORDER = ["HOME", "SEARCH", "CAT", "PDP", "REVIEW", "CART", "ORDER", "PAY", "PROMO"]
# ─────────────────────────────────────────────
# 2. 数据预处理
# ─────────────────────────────────────────────
class TrajectoryPreprocessor:
"""
用户轨迹序列预处理器
- 过滤停留时间异常(< min_dwell 或 > max_dwell)
- 过滤超长 session(> max_pages)
- 合并超节点(重复子序列压缩)
"""
def __init__(
8. 论文来源
未自动抽取;请查看原始 Skill 卡片。