【第六章:项目实战之推荐/广告系统】1.推荐系统基础与召回算法-(3)推荐数据基础准备

第六章:项目实战之推荐/广告系统

第一部分:推荐系统基础与召回算法

第三节:推荐数据基础准备


一、推荐系统的数据基础:一切从“行为”开始

推荐系统的核心是“理解用户兴趣”,而兴趣的根源是行为数据
无论是电影推荐、商品推荐还是信息流推送,其本质都依赖于对用户行为的捕捉与建模。

常见的数据类型如下表:

数据类型示例用途
用户行为日志点击、点赞、收藏、购买、播放构建用户画像、兴趣偏好
用户属性信息年龄、性别、地域、设备人群分层、个性化推荐
内容信息标题、标签、类别、价格、图片特征提取、内容相似性计算
上下文信息时间、天气、节日、设备类型场景化推荐
反馈数据停留时长、跳出率、转化率评估推荐效果

推荐系统的数据不是“静态的表格”,而是持续更新的动态流


二、数据来源:从日志到特征的演化路径

推荐系统最重要的输入是行为日志
这些日志通过前端埋点(Tracking)与后端采集(Kafka/Flink)形成完整的数据闭环。

1.用户行为日志收集(Logging)
类型示例说明
曝光日志(Impression)用户看到的内容ID代表推荐机会
点击日志(Click)用户点击行为代表显性兴趣
停留日志(Stay)浏览时长、播放时间表示潜在兴趣
转化日志(Conversion)下单、购买、注册表示最终目标达成

这些数据通过埋点 SDK 自动上传到日志系统,然后流入数据仓库。

典型技术栈:Kafka + Flink + HDFS + Hive + Spark


2.数据清洗(Data Cleaning)

行为日志往往包含大量噪声,需要清洗和标准化处理。

常见操作:

  • 去除异常数据(如机器人点击、爬虫访问)

  • 过滤无效曝光(如网络延迟、缓存重复)

  • 时间统一化(时区、时间戳格式)

  • 用户标识统一(user_id映射、匿名ID归一化)

# 示例:清洗日志数据
df = df.drop_duplicates(['user_id', 'item_id', 'timestamp'])
df = df[df['action'].isin(['click', 'view', 'purchase'])]
df['event_time'] = pd.to_datetime(df['event_time'])

3.数据存储(Data Storage)

清洗后的数据进入数据仓库或特征平台,常见结构:

层级名称说明
ODS层原始数据层日志原样存储
DWD层清洗明细层清洗、去重后数据
DWS层汇总层聚合后的行为统计(如点击次数)
ADS层应用层提供模型训练或分析用数据

工具常见组合:Hive + SparkSQL + Airflow + Redis


三、特征工程:把行为“转化”为模型可理解的信号

推荐算法不直接使用原始日志,而是使用特征(Feature)
特征是算法建模的语言,决定了模型理解用户和内容的能力。

1.用户特征(User Features)
类型示例描述
静态特征性别、年龄、地区基础属性
动态特征最近点击的内容、时间分布反映近期兴趣
行为统计特征点击次数、平均停留时长兴趣强度
嵌入向量通过Embedding表示的兴趣分布模型输入核心特征

示例:
用户最近点击了5篇科技文章,可提取为“科技类兴趣权重高”的embedding。


2.内容特征(Item Features)
类型示例描述
类别特征类目ID、标签、品牌表示内容属性
文本特征标题、简介经过BERT或TF-IDF提取向量
图像特征封面图片通过CNN或CLIP生成特征向量
热度特征点击量、收藏量反映内容受欢迎程度

图像类推荐(如电商、短视频)常使用 ResNet / CLIP 预训练向量做内容特征。


3.用户-内容交互特征(Cross Features)

交叉特征用于描述“特定用户对特定内容的关系”,例如:

特征示例含义
用户点击该类目次数user_click_count(item.category_id)偏好度
用户是否看过该内容has_viewed(item_id)历史交互
用户上次点击与当前时间间隔time_diff(last_click, now)时间衰减特征

四、负样本构造:推荐系统的“反面教材”

推荐任务通常是二分类问题(喜欢 vs 不喜欢),但日志里只有正样本(点击/购买),没有“没兴趣”的负样本。
因此我们需要人工构造负样本

常见负采样策略:
策略描述适用场景
随机采样随机选择未点击内容快速但噪声大
按曝光采样从曝光但未点击中选取更真实反映用户选择
按相似度采样选取与点击内容相似但未选的细粒度建模兴趣边界
# 示例:基于曝光采样构造负样本
neg_samples = all_impressions[~all_impressions['item_id'].isin(clicked_items)]
neg_samples = neg_samples.sample(n=len(clicked_items))

注意:负样本比例会直接影响模型训练稳定性。常用正负比 1:4 或 1:10。


五、样本标注与数据集划分

1.样本标注

通常将用户行为转化为标签:

  • 点击、收藏、购买 → 正样本(label=1)

  • 曝光未点击 → 负样本(label=0)

2.数据集划分

保持时间一致性是推荐系统的关键!

数据集时间区间用途
训练集历史数据(如过去30天)模型训练
验证集最近7天数据调参验证
测试集最新数据(线上前一天)模型评估

不能随机划分,因为用户兴趣具有时间连续性。


六、数据可视化与分析

在训练模型前,必须先“看懂数据”。
推荐系统中的数据分析常用图表包括:

  • 用户行为分布(点击率、购买率)

  • 内容热度Top-N统计

  • 用户兴趣标签词云

  • 时间维度趋势图(早晨、午间、夜间行为差异)

经验:优秀的推荐系统工程师,首先是一个数据分析高手


七、本节总结:数据是推荐算法的“地基”

模块目标工具
行为日志收集采集用户与内容交互行为Kafka / Flink
数据清洗去重、过滤、统一时间格式Spark / Pandas
特征工程构建用户与内容特征TF.Transform / Feature Store
负样本构造生成合理训练标签Pandas / PyTorch Dataset
数据分析理解用户行为分布matplotlib / seaborn

优质的数据集,是训练出高性能推荐模型的第一步。


本节学习目标总结

学习要点内容
理解推荐系统数据的组成与来源行为日志 + 属性特征 + 上下文
掌握数据清洗与特征构造方法统一格式、Embedding转换
能够生成训练样本与负样本正负样本比例与采样策略
了解推荐系统数据分析思路行为分布与兴趣画像

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值