使用 Amazon SageMaker 为新用户提供实时音乐推荐

2023-10-28 06:50

本文主要是介绍使用 Amazon SageMaker 为新用户提供实时音乐推荐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

736c0f639fcc2f5d34e523e848da83b1.gif

前言

这是一篇由来自 iHeartRadio 的 Matt Fielder 和 Jordan Rosenblum 撰写的客座博文。用他们自己的话说,“iHeartRadio 是一个流媒体音频服务,每个月的用户达数千万,每天的注册人数累计上万。”

个性化是用户体验的重要组成部分,我们希望在用户生命周期中尽早提供有用的推荐。注册后直接出现的音乐推荐让我们的用户感觉到,我们可以快速了解到他们的兴趣爱好,从而降低用户流失的可能性。但是,我们如何为收听历史记录为零的用户提供个性化内容呢?

ad105e0c0195f43ed367d238ca3c129b.png

本博文介绍了我们如何利用用户在注册时提供的信息来实时创建个性化体验。虽然新用户没有任何收听历史记录,但他们通常会在注册过程中选择一些类型偏好并填写一些特征信息。我们首先显示对这些属性的分析,这可以揭示我们用于个性化的有用模式。接下来,我们会描述一个模型,该模型使用这些数据来预测每位新用户最喜欢的音乐。最后,我们将展示如何在注册后立即使用 Amazon SageMaker https://aws.amazon.com/sagemaker/ 实时提供这些预测,并将这些预测作为推荐提供给新用户,这将显著提高 A/B 测试中的用户参与度。

新用户收听模式

在构建模型之前,我们希望确定数据中是否存在任何有趣的模式,这些模式可能会表明有些东西需要学习。

我们的第一个假设是,不同特征背景的用户往往会喜欢不同类型的音乐。例如,在其他背景信息相同的情况下,一名 50 岁的男性可能会比一名 25 岁的女性更喜欢古典摇滚。如果这个假设基本成立,那么我们可能无需等待收集用户的收听历史记录即可生成有用的推荐 – 我们仅通过用户在注册时提供的类型偏好和特征信息即可生成有用的推荐。

为了进行分析,我们特别关注了用户注册后两个月的收听行为,并将其与用户在注册时提供的信息进行了比较。这两个月的时间间隔确保我们可以重点关注那些使用我们产品的活跃用户。至此,我们应该对用户的喜好有了非常明显的了解。它还确保了初始注册和营销影响都已消退。

下图中的时间线显示了用户从注册到注册后两个月的收听行为。

f252b58ff9f94821bf7d77d6b702d8b7.png

然后,我们比较了男性新用户和女性新用户对不同类型的收听分布情况。结果证实了我们的假设,即音乐偏好中存在与特征信息相关的模式。例如,您会注意到体育以及新闻与谈话类更受男性欢迎。使用这些数据可能会改进我们的推荐,尤其是对于收听历史记录为零的用户。

下图总结了用户性别与偏好类型之间的关系。

2d74355d9664ba470758715ab2b1ce07.png

我们的第二个假设是,品味相似的用户可能会表达他们不同的类型需求。此外,与我们的用户对某一类型的理解相比,iHeartRadio 对它的定义可能略有不同。对于某些类型来说,情况似乎确实如此。例如,我们注意到,许多用户告诉我们他们喜欢 R&B 音乐,而实际上他们收听的是我们内部归类为嘻哈的音乐。这更多的是因为对类型的理解具有一定的主观色彩,不同的用户对同一类型会有不同的定义。

预测类型

现在,我们已经有了一些初步的分析证据,表明特征和类型偏好对于预测新用户行为是有用的,因此我们开始构建和测试一个模型。我们希望模型能够系统地学习特征背景和类型偏好与收听行为之间的关系。如果成功,当新用户加入我们的平台时,我们就可以使用该模型向其显示基于正确类型的内容。

与分析阶段一样,我们将“成功的预测”定义为能够呈现用户在注册后两个月会自然收听的内容。最终,进入我们模型训练数据的用户都是活跃的听众,他们有时间探索我们应用程序中的产品。因此,目标变量是用户在注册后两个月最常收听的类型,而特征是用户的特征属性和注册期间选择的类型组合。

与大多数建模练习一样,我们从最基本的建模技术入手,在本使用案例中是指多标签逻辑回归。在下面的热图中,我们抽样分析了训练模型中的特征系数及其与后续收听行为的关系。非特征模型的特征是用户在注册时所选类型的多热编码。正方形越亮(即权重越大),模型特征与用户在注册后的第二个月内收听的类型的关系越紧密。

9ee596fd435c3843d012e9c81ef74b07.png

当然,我们能够识别出一些初始模式。首先,我们发现,总的来说,如果用户只选择 1 种类型时,他们最终会收听这种类型。但是,选择某些特定类型(如“儿童与家庭”、“混合与综合”或 R&B)的用户的收听趋势则不太明确。其次,有意思的是,从年龄来看,我们的模型发现年轻用户更喜欢“另类 40 大金曲与流行音乐”,而年长用户则更喜欢“国际”、“爵士乐”、“新闻与谈话”、“老歌精选”和“公共广播”。第三,让我们特别感兴趣的是,我们的模型可以了解到选择古典音乐的用户也倾向于收听“世界”、“公共广播”和“国际”类型。

逻辑回归虽然有助于探索我们的特征与收听行为的关系,但也存在几个缺点。可能最重要的是,它不能合理地处理用户选择多种类型的情况,因为线性模型中的交互是隐式相加。换句话说,它无法适当地权衡多种类型选择中的交互。对我们来说,这是一个主要问题,因为那些愿意透露类型偏好的用户通常会选择多种类型,平均会选择四种类型。

我们探索了一些更先进的技术,例如基于树的模型和前馈神经网络,这些技术可以弥补逻辑回归的缺点。我们发现,与我们构建的神经网络相比,基于树的方法可以呈现最佳结果,而且复杂性不高。与逻辑回归相比,它们还为我们提供了有意义的提升,并且不太容易发生过拟合训练集的情况。最后,鉴于 LightGBM 的速度、防止过拟合的能力以及卓越的性能,我们决定使用它。

我们很高兴看到,我们模型的离线指标明显优于简单基线。针对用户的基线推荐是他们选择的最热门的类型(无论他们的成员构成如何),这就是我们的实时内容轮播过去在应用程序中的工作方式。我们发现,根据历史离线数据,向新用户发送三种基于类型的模型建议,在 77% 的情况下都捕获到了他们实际偏好的类型。与基线相比,这相当于得到了 15% 的提升。

实时显示预测

现在我们有了一个看起来可行的模型,我们该如何实时显示这些预测呢?过去,在 iHeartRadio,我们的大多数模型都使用 Airflow https://airflow.apache.org/ 进行批量(例如每天或每周)训练和评分,并通过 Amazon DynamoDB https://aws.amazon.com/dynamodb/ 等键值数据库来提供服务。但是,在这种情况下,新用户推荐仅在我们实时评分和提供服务时才具有价值。用户注册后,我们必须立即准备根据注册信息向用户提供基于类型的相应预测。当然,我们无法预知用户的注册信息。如果我们等到第二天再提供这些推荐,那将为时已晚。这就是我们使用 Amazon SageMaker 的原因。

Amazon SageMaker 允许我们托管实时模型终端节点,这些终端节点可以在注册后立即向用户显示预测。它还提供了便捷的模型训练功能。可以使用多个选项来部署模型,包括使用现有的内置算法容器(例如随机森林或 XGBoost)、使用预构建的容器镜像、扩展预构建的容器镜像或构建自定义容器镜像。我们决定选择最后一种,将我们自己的算法打包到自定义镜像中。这为我们提供了最大的灵活性,因为截至撰写本文时,LightGBM 的内置算法容器尚不存在。因此,我们打包了自己的自定义评分代码,并构建了一个 Docker 镜像,将该镜像推送到 Amazon Elastic Container Registry (Amazon ECR) https://aws.amazon.com/ecr/ 用于模型评分。

我们屏蔽了 Amazon API Gateway https://aws.amazon.com/api-gateway/ 后面的 Amazon SageMaker 终端节点,以便外部客户端可以 Ping 它来获取推荐,同时确保 Amazon SageMaker 后端在私有网络中的安全。API Gateway 将参数值传递给 Amazon Lambda https://aws.amazon.com/lambda/ 函数,该函数依次分析这些值并将其发送到 Amazon SageMaker 终端节点,获取模型响应。Amazon SageMaker 还允许根据流量自动扩展模型评分实例。我们只需要定义每个实例每秒所需的请求数以及要扩展到的最大实例数。这让我们能够轻松地将终端节点的使用范围扩展到 iHeartRadio 的各种使用案例中。在我们运行测试的 10 天内,我们的终端节点未发生任何调用错误,平均模型延迟约为 5 毫秒。

有关 Amazon SageMaker 的更多信息,请参阅将自带算法或模型与 Amazon SageMaker 结合使用 https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html 、Amazon SageMaker 自带算法示例 https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb 和 Call an Amazon SageMaker model endpoint using Amazon API Gateway and Amazon Lambda https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/ 。

在线结果

我们在上面证明了我们的模型在离线测试中表现良好,但我们也必须在生产应用中进行测试。我们使用 Amazon SageMaker 上托管的模型对其进行了测试,在注册后直接以应用内消息的形式向新用户推荐相关的广播电台。我们将这种模型与商业规则进行了比较,后者只会简单推荐归类为用户选择类型之一的热门广播电台。我们运行了 10 天 A/B 测试,对每组进行平均分配。点击了我们模型预测的用户群体对广播电台的点击率提高了 8.7%!而在点击的用户中,广播收听时间也很长。

下图显示,实时预测使得点击率比基线提高 8.7%,并举例说明 A/B 测试组的情况。

b10c9b995ab2646498f2470a7900ed78.png

后续步骤和未来工作

事实已经表明,新用户会对 Amazon SageMaker 终端节点上托管的类型预测模型提供的相关内容做出响应。在我们的最初概念验证中,我们仅向部分新注册用户推出了这一方法。接下来需要将此测试扩展到更大的用户群,并在我们的内容轮播中为几乎没有收听历史记录的新用户默认显示这些推荐。我们还希望将这些类型的模型和实时预测的应用范围扩展到其他个性化使用案例中,例如在我们的应用程序中对各种内容轮播和磁贴进行排序。最后,我们将继续探索能够实时流畅提供模型预测的技术,包括本博文中提到的 Amazon SageMaker 以及 FastAPI https://fastapi.tiangolo.com/ 等其他技术。

感谢数据科学团队和数据工程团队在测试 Amazon SageMaker 概念验证的整个过程中提供的支持以及对该博文的有用反馈,特别是 Brett Vintch 和 Ravi Theja Mudunuru。也可以通过 iHeartMedia,在 Medium https://tech.iheart.com/real-time-music-recommendations-for-new-users-with-amazon-sagemaker-364b346d07db 上获取本博文。

本篇作者

Matt Fielder 

iHeartRadio 的工程部执行副总裁

Jordan Rosenblum

iHeartRadio Digital 的高级数据科学家

7f19b1e5eedb3bdb599f9901989d9791.png

f303b08f7a57c6887f0f5148abe47075.gif

5d4bfed69e152bbc4123c90343b26099.gif

听说,点完下面4个按钮

就不会碰到bug了!

ad62788b67863a86c4141f56da4c9f7e.gif

这篇关于使用 Amazon SageMaker 为新用户提供实时音乐推荐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/291466

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]