首页 > 其他分享 >使用 Docker 的个性化排名 API

使用 Docker 的个性化排名 API

时间:2022-09-23 13:56:24浏览次数:83  
标签:Metarank API 喜欢 Docker 流派 id 个性化 metarank

使用 Docker 的个性化排名 API

在这篇文章中,我们将探讨如何设置和使用 Metarank 的个性化排名 API Redis 持久化 码头工人撰写 .

数据准备

Metarank 是一个 开源 个性化排名服务,您可以快速设置并通过个性化增强您的用户体验。从社交网络到送货服务和约会应用程序,个性化可以通过在发送新电子邮件时提供联系建议来提高您的用户转化率、参与度或使您的用户生活更简单。

在创建一个可以为任何类型的排名执行个性化的系统时,大多数时候最大的问题是数据管理。 Metarank 解决了其模型训练的数据存储和管理问题,但是您仍然需要为初始模型训练提供历史数据。

Metarank 预计历史数据将 格式为 JSON 并保存到 JSON 文件中。这是一个示例 项目元数据 描述需要个性化的项目属性的事件:

您至少需要提供 物品 , 排行 相互作用 Metarank 的元数据事件,用于为您的用例创建个性化模型。

当 Metarank 逐行读取数据时,历史数据应按时间戳升序排列。如果您的数据未排序,您可以使用[ 种类](https://docs.metarank.ai/reference/cli#historical-data-sorting) 模式 Metarank 的 CLI 在提供数据进行训练之前对数据进行排序。

我们将使用我们的 Ranklens 数据集 这为我们的 演示 它提供了这 3 种类型的事件,并且已经按时间戳排序。您可以使用以下命令下载完整的事件文件:

 curl -o events.jsonl.gz[ https://media.githubusercontent.com/media/metarank/metarank/master/src/test/resources/ranklens/events/events.jsonl.gz](https://media.githubusercontent.com/media/metarank/metarank/master/src/test/resources/ranklens/events/events.jsonl.gz)

元排名配置文件

Metarank的 YAML 配置 提供了一种简单的方法来配置如何个性化您的数据。个性化排名基于 特征 由机器学习模型使用。您可以查看我们之前的博客文章 使用 Metarank 进行特征工程 ,对于这篇文章,我们将只使用一组最少的功能: 类型 , 喜欢的流派 喜欢的演员 .您可以使用不同的功能来查看结果将如何变化。或者,您可以使用[ 自动特征](https://docs.metarank.ai/reference/cli#auto-feature-generation) 模式 Metarank 根据您的数据自动生成特征。

我们还将使用 Redis 持久化模式 在配置中,使启动 Metarank 后发生的训练数据和交互在重启过程中不会丢失。我们建议仅将 In-Memory 模式用于本地开发和测试。

具有以上 3 个特性和 Redis 的配置文件如下:

请注意,我们明确设置 _api_ 可以从 docker 环境中访问 Metarank 的配置属性。

码头工人撰写

Metarank 提供了一个 Docker 镜像 ,因此您可以创建一个 docker compose 文件来轻松地将 Metarank 与 Redis 结合起来:

为了运行 Metarank,我们使用它的[ 独立的](https://docs.metarank.ai/reference/cli#running-modes) 结合读取数据、训练模型和启动 API 的模式。

玩个性化排名

现在我们已经准备就绪,让我们开始个性化排名 API 并开始使用它吧!

这是包含 docker compose 文件、配置和事件文件的项目结构

现在让我们用一个简单的 docker compose 命令启动 API:

 码头工人组成

处理完所有数据后,Metarank 将输出一个漂亮的日志,表明它已准备好开始接收数据:

 metarank_standalone | 11:42:11.883 INFO ai.metarank.main.command.Train$ - like_genre: weight=334.0 zero=66785 nz=143767 dist=[0.00,0.00,0.02,0.10,0.16,0.21,0.27,0.33,0.45]  
 metarank_standalone | 11:42:11.883 INFO a.metarank.main.command.Standalone$ - 模型训练完成  
 metarank_standalone | 11:42:12.742 信息 ai.metarank.main.command.Serve$ - 启动 API ...  
 metarank_standalone | 11:42:12.934 信息 ohblaze.server.BlazeServerBuilder -  
 metarank_standalone | _ _ _ _ _  
 metarank_standalone | | |_| |_| |_ _ __| | | ___  
 metarank_standalone | | '\_| _| '_ \_ _(_-  
 metarank_standalone | |_||_\__|\__| .__/ |_|/__/  
 metarank_standalone | |_|  
 metarank_standalone | 11:42:12.959 信息 ohblaze.server.BlazeServerBuilder - blaze v1.0.0-M36 上的 http4s v1.0.0-M36 开始于[ http://127.0.0.1:8080/](http://127.0.0.1:8080/)

默认情况下,Metarank 在端口上启动 8080 ,所以我们可以发送一些 curl 请求来获得个性化的响应。

  1. 让我们使用以下请求来获取一组项目的初始排名

    卷曲 http://0.0.0.0:8080/rank/xgboost?explain=true -d'{
    “事件”:“排名”,
    “id”:“id1”,
    “项目”: [
    {"id":"72998"}, {"id":"67197"}, {"id":"77561"},
    {"id":"68358"}, {"id":"79132"}, {"id":"103228"}
    ],
    “用户”:“test1”,
    “会话”:“测试1”,
    “时间戳”:1663164199915
    }'

我们正在使用 _解释=真_ 参数来显示我们的请求后计算的特征是如何变化的。

这是 Metarank 的回应:

 {  
 “项目”: [  
 {  
 “特征”: {  
 “类型”:“冒险@5”,  
 “喜欢的演员”:0,  
 “喜欢的流派”:0  
 },  
 “项目”:“77561”,  
 “分数”:0.059091829552052236  
 },  
 {  
 “特征”: {  
 “流派”:“动作@4”,  
 “喜欢的演员”:0,  
 “喜欢的流派”:0  
 },  
 “项目”:“72998”,  
 “分数”:0.03967099890674036  
 },  
 {  
 “特征”: {  
 “流派”:“动作@4”,  
 “喜欢的演员”:0,  
 “喜欢的流派”:0  
 },  
 “项目”:“67197”,  
 “分数”:0.03967099890674036  
 },  
 {  
 “特征”: {  
 “流派”:“动作@4”,  
 “喜欢的演员”:0,  
 “喜欢的流派”:0  
 },  
 “项目”:“79132”,  
 “分数”:0.03967099890674036  
 },  
 {  
 “特征”: {  
 “流派”:“动作@4”,  
 “喜欢的演员”:0,  
 “喜欢的流派”:0  
 },  
 “项目”:“103228”,  
 “分数”:0.03967099890674036  
 },  
 {  
 “特征”: {  
 "genre": "科幻@8",  
 “喜欢的演员”:0,  
 “喜欢的流派”:0  
 },  
 “项目”:“68358”,  
 “分数”:-0.034844059827564444  
 }  
 ],  
 “状态”: {  
 ...  
 }  
 }

2. 我们需要指示 Metarank 向用户显示的项目的顺序。这是通过 反馈 API调用 排名事件有效负载

 卷曲[ http://localhost:8080/反馈](http://localhost:8080/feedback) -d'{  
 “事件”:“排名”,  
 “id”:“id1”,  
 “项目”: [  
 {"id":"72998"}, {"id":"67197"}, {"id":"77561"},  
 {"id":"68358"}, {"id":"79132"}, {"id":"103228"}  
 ],  
 “用户”:“test1”,  
 “会话”:“测试1”,  
 “时间戳”:1663164200915  
 }'

3. 执行一个 点击 对带有 id 的电影的动作 103228 .请注意,我们正在使用 id1 在里面 排行 指示交互发生在哪个排名的调用参数:

 卷曲[ http://localhost:8080/反馈](http://localhost:8080/feedback) -d'{  
 “事件”:“交互”,  
 “类型”:“点击”,  
 “id”:“id2”,  
 “排名”:“id1”,  
 “项目”:“103228”,  
 “用户”:“test1”,  
 “会话”:“测试1”,  
 “时间戳”:1663164202915  
 }'

4. 现在让我们让 Metarank 在我们的交互发生后个性化同一组项目:

 {  
 “项目”: [  
 {  
 “特征”: {  
 “流派”:“动作@4”,  
 “喜欢的演员”:1,  
 “喜欢的流派”:1  
 },  
 “项目”:“103228”,  
 “分数”:3.4156795975319816  
 },  
 {  
 “特征”: {  
 “类型”:“冒险@5”,  
 “喜欢的演员”:0,  
 “喜欢的流派”:1  
 },  
 “项目”:“77561”,  
 “分数”:0.559094548886528  
 },  
 {  
 “特征”: {  
 “流派”:“动作@4”,  
 “喜欢的演员”:0,  
 “喜欢的流派”:1  
 },  
 “项目”:“72998”,  
 “分数”:0.4854114126690249  
 },  
 {  
 “特征”: {  
 “流派”:“动作@4”,  
 “喜欢的演员”:0,  
 “喜欢的流派”:1  
 },  
 “项目”:“79132”,  
 “分数”:0.4854114126690249  
 },  
 {  
 “特征”: {  
 "genre": "科幻@8",  
 “喜欢的演员”:0,  
 “喜欢的流派”:1  
 },  
 “项目”:“68358”,  
 “分数”:0.33323295913272516  
 },  
 {  
 “特征”: {  
 “流派”:“动作@4”,  
 “喜欢的演员”:0,  
 “喜欢的流派”:0.6666666666666666  
 },  
 “项目”:“67197”,  
 “分数”:0.08805971814908203  
 }  
 ],  
 “状态”: {...}  
 }

您可以看到项目的顺序发生了变化,特征也发生了变化 喜欢的流派 喜欢的演员 根据我们的互动改变了他们的价值观。

您进行的交互越多,个性化排名 API 为您的用户生成的预测就越好。

下一步是什么?

您可以在此博客文章中找到所有示例 存储库 .尝试从我们的演示配置中启用不同的功能,并将 Metarank 应用于您的数据!

如果您对我们的网站有任何疑问或问题,请告诉我们 松弛通道 .

Metarank Labs Company 为 Metarank 安装提供全面的入职和持续支持, 联系我们 获取更多信息。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38892/45232313

标签:Metarank,API,喜欢,Docker,流派,id,个性化,metarank
From: https://www.cnblogs.com/amboke/p/16722457.html

相关文章

  • 接口文档编写规范(前后端分离项目接口api)
    接口文档编写规范API规范api主要包括四部分:uri、请求方式、请求参数、返回参数,一般就是对这四部分做统一规范接口url:是否是rest风格的,统一标识,比如登录的url:/login......
  • 分享一个便于使用且轻量级的webapi调试工具,Postman的chrome浏览器插件“Tabbed Postma
    分享一个便于使用且轻量级的webapi调试工具,Postman的chrome浏览器插件“TabbedPostman-RESTClient”https://chrome.google.com/webstore/detail/tabbed-postman-rest......
  • .NET6 下的 WebApi版本控制
    1.创建普通WebApi项目删除自带的Controller控制器2.引入Api版本控制的服务3.在Controller文件夹下建立两个子文件V1和V2并分别建立两个Controller控制器如图所......
  • .NET Core Web APi类库如何内嵌运行?
    话题我们知道在.NETFramework中可以嵌入运行WebAPi,那么在.NETCore(.NET6+称之为.NET)中如何内嵌运行WebApi呢,在实际项目中这种场景非常常见,那么我们本节以.NET6.0作为......
  • Docker内JVM参数的简单学习
    Docker内JVM参数的简单学习背景公司内部有K8S的项目.基于K8S内容器的JVM参数的设置与标准虚拟机运行不太一样.产品内部的启动脚本有一个设置,在内存大于16G的情况下......
  • 爬虫api的学习
    刚刚写作业的时候发现有许多的api我确实不咋会用所以我在这里统计一下,防止下次忘记  get的意思是在表达式里面找到需要的元素如  但是题目很明显不是这样的,答案......
  • docker的基本命令
    1.dockerps可以查看所有正在运行中的容器列表2.dockerps-a可以查看所有容器列表3.dockerinspectc+'容器id' 查看更详细的关于某一个容器4.dockerimages查看镜像5......
  • centos docker 在线安装
    系统版本:CentOSLinuxrelease8.5.2111查看系统版本命令:cat/etc/redhat-release安装docker:yuminstall-ydocker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm启动:systemc......
  • ubuntu 完全干净的卸载docker
    1. 删除某软件,及其安装时自动安装的所有包sudoapt-getautoremovedockerdocker-cedocker-enginedocker.iocontainerdrunc2.删除docker其他没有没有卸载d......
  • HTTP API 自动化测试从手工到平台的演变
    https://www.infoq.cn/news/http-api-automated-test-from-manual-to-platform?utm_source=related_read_bottom&utm_medium=article不管是Web系统,还是移动APP,前后端逻......