本文是我们多模态推荐系统实践项目的一篇周报日志,主要记录了项目启动阶段对三个主流推荐系统数据集的分析对比,以及多模态数据预处理中的初步挑战和进展。本文适合对推荐系统感兴趣,尤其是多模态推荐或大模型增强推荐系统方向有研究的同学阅读与参考。
🧭 一、项目背景与数据需求
在传统推荐系统中,用户与物品的交互(如评分、点击、浏览)常常被建模为一张稀疏的用户-物品矩阵。然而,随着大模型(如ChatGPT、DeepSeek)在推荐系统中的广泛尝试,推荐任务正逐渐从“行为建模”向“语义理解”演化。在此背景下,我们本学期的实训项目目标,是设计一个基于大模型辅助的多模态推荐系统,覆盖从召回阶段、精排阶段到**推荐理由生成(AIGC)**的完整流程。
为了支撑上述目标,我们选取了三个具备多模态特征的公开数据集:MicroLens、PixelRec 和 Amazon Review 2018,并在本周完成了初步的数据探索与清洗流程。
📦 二、三大数据集对比分析
2.1 MicroLens 数据集
• 来源:由UCSD等机构发布,基于Movielens扩展构建
• 规模:
• MicroLens-100K:13,670条评论,用户数2246,物品数273
• MicroLens-1M:含评论文本和图像,共计百万级别交互
• 模态信息:
• ✅ 用户/物品ID
• ✅ 评论文本
• ✅ 评分
• ✅ (重点)电影海报图片
• 特点总结:
• 适合从小规模逐步扩展至大规模模型实验
• 图像为电影官方海报,语义强、统一性好
• 用户和物品稀疏度相对较高,适合冷启动分析
2.2 PixelRec 数据集
• 来源:PixelRec团队开发,用于构建视觉主导型推荐系统
• 规模:
• 用户数3.6万+,物品数14.3万+
• 图像数量近30万张,交互量达500万级
• 模态信息:
• ✅ 用户ID、物品ID
• ✅ 图像(商品图片)
• ✅ 类别标签、时间戳
• 特点总结:
• 强调图像在推荐中的主导作用,极度稀疏的行为信息
• 更适合做“冷启动推荐”“视觉向召回”
• 无文本评论,挑战在于如何仅靠视觉构建多样化兴趣建模
2.3 Amazon Review 数据集(2018)
• 来源:Amazon官方开放,多个领域的数据合集
• 选用子集:本次选取 Electronics 和 Clothing & Shoes 两个品类
• 规模:
• 每个子集包含几十万用户、数百万商品及交互
• 评论文本约200字左右
• 模态信息:
• ✅ 用户/商品ID
• ✅ 评论文本(丰富)
• ✅ 评分、时间戳
• ✅ 商品元信息(如品牌、类别、价格)
• ✅ 商品图像(部分品类支持)
• 特点总结:
• 模态种类最丰富,但图像质量不统一
• 评论文本种类多样但有冗余、广告、错字等“噪声”
• 非常适合做大模型在推荐语生成与解释性推荐任务的探索
🌐 三、多模态推荐系统的挑战初探
3.1 模态异质性:语义、格式与语境的鸿沟
• 文本 vs 图像:文本表达抽象、时间敏感性强;图像则具备直观感性和静态特征,不具备上下文。
• 用户交互 vs 商品内容:行为数据是“偏好显性表达”,而模态内容只是“语义线索”,二者不具备天然一致性。
3.2 数据稀疏性与冷启动问题
• PixelRec中很多用户可能只交互过1~2次,图像之间缺乏明显语义聚合
• Amazon中某些商品图片缺失,仅能依赖文本建模
3.3 多模态融合技术难度大
• 如何对齐图文向量空间?
• 如何联合建模模态间注意力机制?
• 在LLM参与下,Prompt该如何设计,才能让模型理解“图像+评论+历史行为”共同语义?
🔧 四、本周完成的工作与技术细节
4.1 数据下载与清洗脚本构建
我们为三个数据集分别编写了清洗与转换脚本,统一转化为适用于推荐建模的结构:
# 数据目录结构
./dataset/
├── amazon/
│ ├── metadata.json
│ ├── reviews.json
│ └── cleaned_reviews.csv
├── micro_lens/
│ └── ml-100k.csv
├── pixel_rec/
│ └── interactions.csv
4.2 清洗流程总结(以Amazon为例)
• 文本清洗:
• 去除重复评论、表情符号、HTML标签
• 统一大小写、去除停用词
• 图像下载:
• 批量异步下载图像URL,失败自动重试3次
• 按商品ID重命名并压缩存储
• 结构化转换:
• 生成(user_id, item_id, rating, review_text, img_path)格式CSV,用于模型训练
部分代码示意:
def clean_text(text):
text = re.sub('<.*?>', '', text) # 去除HTML标签
text = re.sub(r'[^a-zA-Z0-9\s]', '', text)
return text.strip().lower()
df['cleaned_review'] = df['reviewText'].apply(clean_text)
4.3 模态映射校验
• 保证每条交互都对应有效的文本/图像
• 对PixelRec进行图像数量统计,排除无效或重复项
• 为每个数据集生成初步模态覆盖率统计表(如下)
数据集 文本覆盖率 图像覆盖率 多模态完整比例
MicroLens 100% 100% 100%
PixelRec 0% 95.2% 95.2%
Amazon(选集) 97.6% 81.3% 79.5%
🧠 五、个人思考与下周计划
本周感悟
本周最大收获是从“数据即信息”到“模态即认知”的理解转变。
在传统推荐中,我们往往认为评分是核心,评论是附属;但在多模态环境下,图像、评论、行为三者其实是平等的,它们都在以不同“语言”刻画用户的偏好与商品特性。尤其当我们将LLM引入后,我们更需要站在“内容生成”的角度去理解每一模态的表达方式,而不仅是做特征工程。
此外,在做图像对齐与评论清洗的过程中,我也初步体会到了**“数据工程”在推荐系统中的第一性原理地位** —— 好的数据决定好模型,复杂的推荐算法往往不敌一个干净、结构化良好的训练集。
下周计划
• 搭建召回阶段pipeline,初步尝试基于图像特征的相似度召回
• 构建微调所需的图文embedding提取模块
• 阅读PixelRec与FashionRec论文,探索“仅图像驱动推荐”的可行性与改进思路
持续更新中……如果你也对多模态推荐系统感兴趣,欢迎一起交流、讨论!