第六章:项目实战之推荐/广告系统
第一部分:推荐系统基础与召回算法
第三节:推荐数据基础准备
在推荐系统中,数据是核心。召回算法、排序算法以及广告投放策略的效果,最终都依赖于高质量的基础数据。因此,推荐系统的数据准备环节尤为关键。
一、推荐系统中的数据类型
推荐系统常用的数据类型主要包括 用户行为数据、物品(商品/内容)特征数据、用户特征数据、以及上下文数据。
-
用户行为数据(User Behavior Data)
-
描述用户与物品之间的交互行为。
-
常见字段:
-
user_id:用户唯一标识 -
item_id:物品唯一标识 -
behavior_type:行为类型(浏览、点击、收藏、购买等) -
timestamp:行为发生时间
-
-
示例:
user_id item_id behavior_type timestamp 1001 2001 click 2025-10-17 09:35 1001 2002 buy 2025-10-17 09:40
-
-
物品特征数据(Item Feature Data)
-
描述物品自身属性,如类别、价格、品牌等。
-
示例:
item_id category brand price 2001 手机 苹果 6999 2002 手机 小米 3999
-
-
用户特征数据(User Feature Data)
-
描述用户的静态或动态特征,如性别、年龄、兴趣标签等。
-
示例:
user_id gender age interest_tags 1001 男 28 游戏, 科技, 手机 1002 女 24 美妆, 电影, 旅行
-
-
上下文数据(Context Data)
-
推荐发生的环境信息,如时间、地点、设备类型等。
-
示例:
user_id device hour location 1001 iOS 9 上海 1002 Android 14 北京
-
二、推荐系统数据准备流程

数据准备主要包括 数据采集 → 数据清洗 → 数据构建 → 特征工程 四步。
1. 数据采集
-
来源:
-
日志系统(用户点击、浏览、购买行为)
-
数据库(商品信息、用户注册信息)
-
第三方数据(兴趣标签、社交行为)
-
-
注意:
-
数据量巨大,需要考虑 分布式存储(如 HDFS、ClickHouse)
-
数据实时性要求不同,推荐召回通常用 离线批量数据,广告推荐可能要求 实时流数据
-
2. 数据清洗
-
目的:保证数据质量,去除异常、重复、缺失值
-
常见方法:
-
去重:同一用户同一行为重复记录
-
异常值处理:价格为 0 或负数
-
缺失值填充:如性别缺失可用
未知填充
-
3. 数据构建
-
将原始日志数据转化为模型可用的数据
-
关键操作:
-
构建 用户-物品交互矩阵
示例:user_id item_2001 item_2002 item_2003 1001 1 0 1 1002 0 1 0 -
1表示有行为,0表示无行为
-
-
构建 负样本(用于训练推荐模型)
-
对于显式反馈(购买/评分)数据,负样本可以随机选取未交互物品
-
对于隐式反馈(点击/浏览)数据,负样本采样策略更重要
-
-
4. 特征工程
-
用户特征:
-
人口统计信息(年龄、性别)
-
历史行为统计(点击次数、购买频率)
-
-
物品特征:
-
类别、价格区间、品牌
-
物品热门度(点击量、购买量)
-
-
交互特征:
-
用户-物品历史行为次数
-
最近一次行为时间距当前时间的间隔
-
-
上下文特征:
-
时间、地点、设备类型
-
节假日、促销活动标记
-
三、推荐数据构建示例(Python)
下面是一个简单示例,展示如何从日志数据构建用户-物品交互矩阵:
import pandas as pd
# 原始行为日志
logs = pd.DataFrame({
'user_id':[1001,1001,1002,1003],
'item_id':[2001,2002,2002,2003],
'behavior_type':['click','buy','click','click']
})
# 将行为映射为评分(简单策略)
behavior_map = {'click':1, 'buy':3}
logs['rating'] = logs['behavior_type'].map(behavior_map)
# 构建用户-物品矩阵
user_item_matrix = logs.pivot_table(index='user_id', columns='item_id', values='rating', fill_value=0)
print(user_item_matrix)
输出示例:
| item_id | 2001 | 2002 | 2003 |
|---|---|---|---|
| user_id | |||
| 1001 | 1 | 3 | 0 |
| 1002 | 0 | 1 | 0 |
| 1003 | 0 | 0 | 1 |
四、总结
-
数据是推荐系统的基础:无论是召回还是排序,模型的性能依赖于高质量、完整的数据。
-
数据类型丰富:用户行为、物品特征、用户特征、上下文信息缺一不可。
-
数据处理流程系统化:采集 → 清洗 → 构建 → 特征工程,每一步都直接影响模型效果。
-
实践中重点:
-
构建用户-物品交互矩阵
-
负样本采样策略
-
特征工程优化
-

被折叠的 条评论
为什么被折叠?



