Skip to content

📄 PPT内容页初稿


第1页:封面页

标题:基于标签的推荐系统算法对比实验
副标题:张量分解 vs LDA vs 图推荐算法
信息

  • 汇报人:XXX
  • 日期:XXXX年XX月
  • 项目基于MovieLens数据集

第2页:项目背景与目标

研究背景

  • 标签在推荐系统中具有重要价值:增强可解释性、提供语义信息、缓解冷启动
  • 不同算法在标签推荐任务中表现各异,需要系统对比

研究目标

  1. 对比三类标签推荐算法的效果与效率
  2. 探索交互建模与语义建模的优劣
  3. 为实际应用提供算法选型依据

对比算法

  • 结构化交互建模:CP分解、Tucker分解、稀疏CP
  • 语义主题建模:LDA主题模型
  • 关系图建模:基于图的推荐算法

第3页:数据预处理流程

数据源:MovieLens数据集(tags.csv, ratings.csv, movies.csv)

标签清洗流程

原始标签 → 小写转换 → 去除特殊字符 → 长度过滤 → 无效标签剔除

关键处理策略

  • 频次过滤:min_frequency = 3
  • 用户覆盖:min_users = 2
  • 标签规模:max_tags = 1000

数据结构构建

  • 张量:用户×电影×标签(1123×2015×847)
  • 图结构:11838个节点,89396条边

第4页:张量分解算法

CP分解

  • 核心思想:三维张量的低秩近似
  • 公式:$X \approx \sum_{r=1}^R u_r \otimes v_r \otimes t_r$
  • 优势:参数少、训练快、解释性好

Tucker分解

  • 核心思想:核心张量+因子矩阵的多线性变换
  • 公式:$X \approx G \times_1 U \times_2 V \times_3 T$
  • 优势:表达力强、对噪声鲁棒

稀疏CP(ALS)

  • 适用场景:大规模稀疏数据
  • 优化目标:带正则化的平方损失
  • 更新策略:交替最小二乘法

第5页:LDA主题模型

建模思想

  • 标签 → "词"
  • 用户/电影 → "文档"
  • 学习文档-主题分布θ和主题-词分布φ

训练流程

文档构建 → 词频统计 → LDA训练 → 主题解释

推荐机制

  • 用户主题分布θ_u + 电影主题分布θ_i → 融合θ_ui
  • 标签打分:p(tag) = θ_ui · φ
  • 按概率排序生成Top-K推荐

优势特点

  • 语义可解释性强
  • 冷启动友好
  • 主题词可视化

第6页:图推荐算法

图结构构建

节点类型:
- 用户:609个
- 电影:9742个  
- 标签:1487个

边类型:
- 用户-电影(评分关系)
- 用户-标签(偏好关系)
- 电影-标签(关联关系)

推荐策略

  1. 基于标签传播:用户偏好标签 → 关联电影
  2. 基于用户相似性:共同行为 → 相似用户喜好
  3. 分数融合:加权合并两类推荐

评估维度

  • 新颖性:0.04
  • 标签相关性:0.535
  • 覆盖率:1.0

第7页:实验设计

数据划分策略

  • 随机划分:80%训练,20%测试
  • 时间划分:按时间戳分割,更贴近实际场景

评估指标

  • 精度指标:Precision@K, Recall@K, F1@K (K=5,10,20)
  • 效率指标:训练时间(秒)
  • 质量指标:新颖性、标签相关性、覆盖率

超参数设置

张量分解:R=30, λ=0.01, max_iter=200
LDA:K=50, max_iter=100
图算法:α=0.6, β=0.4

第8页:精度对比结果

Precision@K趋势

K=5:  CP(0.225) > Tucker(0.205) > LDA(0.081)
K=10: CP(0.445) > Tucker(0.315) > LDA(0.102)  
K=20: CP(0.735) > Tucker(0.491) > LDA(0.161)

关键发现

  • CP分解在各项精度指标上表现最优
  • LDA在K较小时精度较低,但随着K增大改善明显
  • Tucker分解表达力强但需要更多训练时间

可视化建议:折线图展示三种算法随K变化的精度趋势


第9页:训练效率对比

训练时间对比

CP分解:18秒
Tucker分解:100秒  
LDA:3.75秒
图算法:45秒

效率-精度权衡

  • LDA训练最快,适合快速原型开发
  • CP分解在精度和效率间取得良好平衡
  • Tucker分解精度高但训练成本最大

工程建议

  • 小规模数据:优先CP分解
  • 快速迭代:选择LDA
  • 精度优先:考虑Tucker分解

第10页:可解释性分析

LDA主题示例

主题1:科幻、未来、太空、外星人
主题2:浪漫、爱情、温馨、感人  
主题3:悬疑、惊悚、恐怖、紧张

图结构分析

  • 中心节点:热门电影和常用标签
  • 社区发现:相似兴趣用户群体
  • 路径分析:用户→标签→电影的推荐路径

张量因子解释

  • 每个因子维度对应一种潜在语义
  • 用户/电影在因子空间的位置反映偏好特征

第11页:推荐质量分析

==这里将展示结果的两张图放上== 新颖性 vs 相关性

  • LDA:相关性中等,新颖性较高
  • 图算法:相关性最高,新颖性中等
  • 张量分解:相关性高,新颖性相对较低

覆盖率表现

  • 图算法:覆盖率1.0,能够覆盖所有测试用户
  • LDA:覆盖率0.87,存在部分冷启动用户无法覆盖
  • 张量分解:覆盖率0.92,表现均衡

类型分布

  • 各算法推荐电影类型分布基本符合用户历史兴趣
  • 图算法在类型多样性上略胜一筹

第12页:总结与建议

算法优劣总结

张量分解:
- 优点:精度高、交互建模强
- 缺点:训练成本高、可解释性中等

LDA:
- 优点:训练快、可解释性强、冷启动友好  
- 缺点:精度相对较低、依赖主题数设定

图算法:
- 优点:关系丰富、覆盖率广
- 缺点:可解释性中等、参数调优复杂

适用场景建议

  • 数据密集、精度优先:张量分解
  • 语义驱动、快速迭代:LDA
  • 关系复杂、多样性强:图算法

未来工作

  • 多算法融合:LDA主题作为图节点特征
  • 时序动态建模:考虑用户兴趣演化
  • 跨域推荐:标签知识的迁移学习
mermaid
usecaseDiagram
    actor 客户
    actor 邮购公司职员
    actor 供应商
    actor 运输公司
    boundary 订单处理软件
    
    usecase "订单处理总流程" as UC1
    usecase "客户订单管理" as UC2
    usecase "采购与库存管理" as UC3
    usecase "配送管理" as UC4
    usecase "财务账单管理" as UC5
    
    usecase "提交订单" as UC2_1
    usecase "退货申请" as UC2_2
    usecase "查询订单状态" as UC2_3
    usecase "维护个人订单" as UC2_4
    usecase "修改订单信息" as UC2_5 <<include>>
    usecase "取消订单" as UC2_6 <<include>>
    
    usecase "处理客户订单" as UC3_1
    usecase "管理产品目录" as UC3_2
    usecase "采购产品" as UC3_3
    usecase "查询库存" as UC3_4 <<include>>
    usecase "触发补货" as UC3_5 <<include>>
    
    usecase "安排配送" as UC4_1
    usecase "选择运输公司" as UC4_2 <<include>>
    usecase "跟踪物流" as UC4_3 <<include>>
    
    usecase "生成账单" as UC5_1
    usecase "处理付款" as UC5_2 <<include>>
    usecase "处理退货账单" as UC5_3 <<extend>>

    ' 参与者与用例的关联
    客户 -- UC2_1
    客户 -- UC2_2
    客户 -- UC2_3
    客户 -- UC2_4
    UC2_4 -- UC2_5
    UC2_4 -- UC2_6

    邮购公司职员 -- UC3_1
    邮购公司职员 -- UC3_2
    邮购公司职员 -- UC3_3
    UC3_3 -- UC3_4
    UC3_3 -- UC3_5

    邮购公司职员 -- UC4_1
    UC4_1 -- UC4_2
    UC4_1 -- UC4_3

    邮购公司职员 -- UC5_1
    UC5_1 -- UC5_2
    UC5_1 -- UC5_3

    ' 系统边界内的总流程关联
    UC1 -- UC2
    UC1 -- UC3
    UC1 -- UC4
    UC1 -- UC5