Data Science on AWS:验证与导入用户-物品交互数据的技术实践
概述
在构建推荐系统时,用户与物品的交互数据是最关键的输入之一。本文将基于Data Science on AWS项目中的实践,详细介绍如何验证和准备用户-物品交互数据,并将其导入Amazon Personalize服务。
Amazon Personalize算法简介
Amazon Personalize提供了多种推荐算法(称为recipes),每种算法针对不同的推荐场景:
- HRNN & HRNN-Metadata:基于用户历史交互行为推荐物品
- HRNN-Coldstart:为新物品(缺乏交互数据)提供推荐
- Personalized-Ranking:对一组物品按用户兴趣概率排序
- SIMS:基于物品相似性推荐相关物品
- Popularity-Count:默认回退方案,推荐最热门物品
核心数据要求
所有算法都基于三种核心属性构建:
- 用户ID:执行交互的用户标识
- 物品ID:被交互的物品标识
- 时间戳:交互发生的具体时间
可选属性包括:
- 事件类型:交互类型标签(浏览、购买、评分等)
- 事件值:与事件类型对应的数值(通常标准化到0-1范围)
数据准备实践
1. 数据集选择
我们使用Last.FM音乐平台的用户行为数据集,包含:
- 1892个用户
- 17632位艺术家(物品)
- 92834条用户-艺术家交互记录
2. 数据格式转换
原始数据存在两个关键问题需要处理:
- 时间戳格式:原始数据使用JavaScript毫秒时间戳,需转换为Unix Epoch格式
- 多余字段:原始数据包含tagID字段,需要移除
转换代码示例:
# 加载原始数据(注意分隔符为制表符)
original_data = pd.read_csv('user_taggedartists-timestamps.dat', sep='\\t')
# 转换时间戳格式
original_data.timestamp = original_data.timestamp / 1000
# 只保留必要字段
interactions_df = original_data[['userID', 'artistID', 'timestamp']]
# 重命名列以符合Personalize要求
interactions_df.rename(columns={
'userID': 'USER_ID',
'artistID': 'ITEM_ID',
'timestamp': 'TIMESTAMP'
}, inplace=True)
3. 数据验证
转换后应进行以下验证:
- 数据类型检查:
interactions_df.dtypes
# 应显示TIMESTAMP为int64类型
- 时间戳合理性验证:
sample_time = interactions_df.iloc[50]['TIMESTAMP']
print(datetime.utcfromtimestamp(sample_time).strftime('%Y-%m-%d %H:%M:%S'))
# 输出应在合理时间范围内
创建Personalize数据集
1. 初始化客户端
import boto3
personalize = boto3.client('personalize')
2. 创建数据集组
数据集组是Personalize中的最高隔离级别:
response = personalize.create_dataset_group(name="personalize-poc-lastfm")
dataset_group_arn = response['datasetGroupArn']
3. 等待数据集组激活
创建操作是异步的,需要等待状态变为ACTIVE:
while True:
status = personalize.describe_dataset_group(
datasetGroupArn=dataset_group_arn
)['datasetGroup']['status']
if status == 'ACTIVE':
break
time.sleep(10)
数据导入最佳实践
-
数据规模建议:
- 至少50个独立用户
- 至少100个独立物品
- 每个用户至少有24次交互
-
常见数据源:
- 视频点播平台
- 电子商务网站
- 社交媒体平台
-
S3存储准备:
- 创建专用存储桶
- 配置适当IAM角色
总结
本文详细介绍了在AWS上准备推荐系统数据的技术流程。关键在于理解原始数据的结构和格式要求,进行必要的数据转换和验证,最后正确配置Amazon Personalize服务。这些实践不仅适用于音乐推荐场景,也可推广到其他领域的推荐系统构建。
通过规范化的数据准备流程,可以确保推荐模型获得高质量的训练数据,从而提供更精准的个性化推荐结果。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考