Data Science on AWS:验证与导入用户-物品交互数据的技术实践

Data Science on AWS:验证与导入用户-物品交互数据的技术实践

data-science-on-aws AI and Machine Learning with Kubeflow, Amazon EKS, and SageMaker data-science-on-aws 项目地址: https://gitcode.com/gh_mirrors/da/data-science-on-aws

概述

在构建推荐系统时,用户与物品的交互数据是最关键的输入之一。本文将基于Data Science on AWS项目中的实践,详细介绍如何验证和准备用户-物品交互数据,并将其导入Amazon Personalize服务。

Amazon Personalize算法简介

Amazon Personalize提供了多种推荐算法(称为recipes),每种算法针对不同的推荐场景:

  1. HRNN & HRNN-Metadata:基于用户历史交互行为推荐物品
  2. HRNN-Coldstart:为新物品(缺乏交互数据)提供推荐
  3. Personalized-Ranking:对一组物品按用户兴趣概率排序
  4. SIMS:基于物品相似性推荐相关物品
  5. Popularity-Count:默认回退方案,推荐最热门物品

核心数据要求

所有算法都基于三种核心属性构建:

  1. 用户ID:执行交互的用户标识
  2. 物品ID:被交互的物品标识
  3. 时间戳:交互发生的具体时间

可选属性包括:

  • 事件类型:交互类型标签(浏览、购买、评分等)
  • 事件值:与事件类型对应的数值(通常标准化到0-1范围)

数据准备实践

1. 数据集选择

我们使用Last.FM音乐平台的用户行为数据集,包含:

  • 1892个用户
  • 17632位艺术家(物品)
  • 92834条用户-艺术家交互记录

2. 数据格式转换

原始数据存在两个关键问题需要处理:

  1. 时间戳格式:原始数据使用JavaScript毫秒时间戳,需转换为Unix Epoch格式
  2. 多余字段:原始数据包含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. 数据验证

转换后应进行以下验证:

  1. 数据类型检查
interactions_df.dtypes
# 应显示TIMESTAMP为int64类型
  1. 时间戳合理性验证
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)

数据导入最佳实践

  1. 数据规模建议

    • 至少50个独立用户
    • 至少100个独立物品
    • 每个用户至少有24次交互
  2. 常见数据源

    • 视频点播平台
    • 电子商务网站
    • 社交媒体平台
  3. S3存储准备

    • 创建专用存储桶
    • 配置适当IAM角色

总结

本文详细介绍了在AWS上准备推荐系统数据的技术流程。关键在于理解原始数据的结构和格式要求,进行必要的数据转换和验证,最后正确配置Amazon Personalize服务。这些实践不仅适用于音乐推荐场景,也可推广到其他领域的推荐系统构建。

通过规范化的数据准备流程,可以确保推荐模型获得高质量的训练数据,从而提供更精准的个性化推荐结果。

data-science-on-aws AI and Machine Learning with Kubeflow, Amazon EKS, and SageMaker data-science-on-aws 项目地址: https://gitcode.com/gh_mirrors/da/data-science-on-aws

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸竹任

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值