使用Swing算法实现商品推荐

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 使用Swing算法实现商品推荐

教程简介

在本教程中,您将学习如何使用PAI提供的Swing组件构建工作流,并使用Flink资源运行工作流进行模型训练和预测,来实现相似商品的推荐。

通常购买、点击或浏览过同一个商品的用户,可能有相似的购买喜好,基于这一点,Swing算法根据用户的相似性来计算商品相似性并进行商品召回。

我能学到什么

  • 如何开通阿里云实时计算Flink版服务。
  • 如何构建实现相似商品推荐的工作流。
  • 如何使用Flink资源运行工作流。
操作难度


所需时间 50分钟

使用的阿里云产品

所需费用

  • 实时计算Flink版提供3个月5000CUH的免费试用资源。您需要领取实时计算Flink版、负载均衡SLB、对象存储OSS资源抵扣包(领取方法已在教程下一步中给出)。如果未领取或者因为不满足领取条件,将会产生额外费用。

  • 试用资源满足任何一个条件(超过5000CUH或超过3个月)后,涉及到的阿里云产品将正常计费,计费详情请参见Flink按量付费SLB按量付费OSS按量付费


准备环境和资源

耗时:20分钟

开始教程前,请按以下步骤准备环境和资源:

  1. 访问阿里云免费试用。单击页面右上方的登录/注册按钮,并根据页面提示完成账号登录(已有阿里云账号)、账号注册(尚无阿里云账号)或实名认证(根据试用产品要求完成个人实名认证或企业实名认证)。
  2. 申请免费试用OSS,并创建Bucket。
  1. 领取对象存储OSS资源抵扣包。
    进入OSS免费资源包申请页面,单击立即试用,在确认并了解相关信息后,根据页面提示申请试用。
    【注意】:如果您的对象存储OSS资源抵扣包已使用完毕或无领取资格,开通Flink试用后,将正常收取费用,计费详情请参见OSS按量付费
  2. 创建OSS Bucket。登录OSS控制台,在Bucket列表页面单击创建Bucket开始创建Bucket。本教程的核心配置参数如下,其他参数可保持默认值,详细创建步骤请参见创建有地域属性Bucket
  • 地域:选择有地域属性华南1(深圳)地域。
  • 其他参数:保持默认值即可。
  1. 申请免费试用SLB:领取传统型负载均衡CLB资源抵扣包。进入SLB免费资源包申请页面,单击立即试用,配置开通参数,根据页面提示申请试用。本教程的核心配置参数如下,其他参数可保持默认值。
  • 地域和可用区:选择华南1(深圳)地域,可用区可按需配置。
  • 其他参数:保持默认值即可。
  1. 开通VPC,并创建虚拟交换机。
  1. 登录VPC控制台,在顶部选择地域为华南1(深圳),单击创建专有网络开始创建VPC。操作详情请参见创建专有网络和交换机
  2. 登录VPC控制台,在交换机页面的顶部选择地域为华南1(深圳),单击创建交换机开始创建交换机,操作详情请参见创建交换机
  1. 申请免费试用Flink。进入Flink免费资源包申请页面,单击立即试用,配置开通参数,根据页面提示申请试用。
  1. 如果您第一次访问该服务,可能需要进行角色授权。请在弹出的授权请求页面,单击前往RAM进行授权后,单击同意授权,完成自动化角色授权。授权成功后,需返回立即试用页面。
  2. 在Flink开通页面,单击上方提示框中的领取免费的资源抵扣包,领取Flink资源抵扣包。

  3. 在Flink资源抵扣包页面,确认相关信息后,单击确认订单,根据页面提示完成领取。

  4. 领取完毕后,在Flink开通页面,刷新此页面后完成参数配置。

参数

说明

教程配置

付费模式

阿里云实时计算Flink版免费试用仅支持按量付费。

按量付费

地域

本教程不涉及上下游存储,所以可不与上下游存储保持一致。

华南1(深圳)

可用区

本教程不涉及上下游存储,所以可不与上下游存储保持一致。

可用区E

资源抵扣包

可用于抵扣中国内地公有云地域(目前仅支持上海,杭州,北京,深圳,张家口区域)按量付费模式用量,自购买资源包日起有效期三个月。领取资源包后,单击刷新按钮,即可更新此参数。

其中,本教程示例不适用于张家口地域。

5000CUH

您需要领取负载均衡SLB对象存储OSS资源抵扣包进行抵扣(即点击所给链接,单击对应产品卡片上的立即试用,在确认并了解相关信息后,根据页面提示申请试用),否则将会产生额外费用。

如果您的对象存储OSS或SLB资源抵扣包已使用完毕或无领取资格,开通Flink试用后,将正常收取费用,计费详情请参见SLB按量付费OSS按量付费

确认领取后,选中

SLB服务

SLB是通过浏览器访问Flink产品控制台的必要网络连接组件。在您开通阿里云实时计算Flink版服务后,会自动开通SLB服务,该SLB专用于阿里云实时计算Flink版服务。

选中

专有网络

选择您已创建的专有网络。如果您没有创建,请参见创建和管理专有网络进行创建。

选中您需要使用的VPC名称。

虚拟交换机

每个Flink作业的Task Manager和Job Manager实例都会占用一个IP,您需要至少选择1个虚拟交换机。

如果当前无可用虚拟交换机,请在当前地域当前可用区下进行创建,详情请参见创建和管理专有网络

选中您需要使用的交换机名称。

工作空间名称

每个工作空间的计算资源隔离,开发控制台相互独立。

创建成功后不可修改。

flink-test

OSS存储

OSS用于存储作业系统检查点、作业快照、日志和JAR包等信息。新建OSS存储的具体操作,请参见开通OSS服务

不推荐对选择的Bucket开启非默认策略,例如多版本、合规保留等,可能会导致Flink作业异常。

选中您需要使用的OSS Bucket名称。

监控服务

如果您选中了监控服务(为您提供商业版Prometheus监控能力),则会正常进行收费,计费详情请参见ARMS按量计费

不选中

  1. 开通机器学习平台PAI并创建默认工作空间。
    登录PAI控制台,在顶部选择地域为华南1(深圳),单击开通PAI并创建默认工作空间,开始开通操作,详情请参见开通PAI并创建默认工作空间


下载数据集并上传至OSS

耗时:5分钟

  1. 单击Magazine_Subscriptions.csv下载CSV类型的数据集文件到本地目录,该数据集包括89689条亚马逊用户的杂志类商品购买记录。如图所示,从左至右各列的含义依次为:用户ID、商品ID、用户对商品的打分评价、时间戳。

  2. 登录OSS控制台,进入创建的Bucket空间中,单击上传文件,在弹出的页面中单击扫描文件,选择下载到本地的数据集文件,单击上传文件
  3. 当界面显示上传成功时,表明本教程需使用的示例数据已成功上传至OSS。


配置PAI工作空间

耗时:5分钟

  1. 登录PAI控制台,在左侧导航栏单击工作空间列表,进入工作空间列表页面后,单击自动创建的默认工作空间名称,进入工作空间详情页。
  2. 关联Flink为PAI工作空间的计算资源。
    在工作空间详情页的右侧单击资源管理,在弹出的页面中选择Flink全托管资源页签,页面下方为您展示上述步骤中创建的Flink资源,您需要勾选对应的Flink资源,然后单击确认关联

    完成关联后,后续您即可以在PAI-Designer中使用Flink资源运行任务。
  3. 关联OSS为PAI空间默认存储。
    在工作空间详情页的右侧的存储设置后单击设置,在弹出的页面中配置上述步骤中创建的OSS Bucket为默认PAI工作空间默认存储路径。
    完成配置后,后续您在PAI-Designer即可将数据存储于对应的OSS Bucket中。


创建PAI-Designer工作流并建模

耗时:10分钟

  1. 进入PAI-Designer页面。
  1. 登录PAI控制台,在左侧导航栏单击可视化建模(Designer),在页面中单击进入Designer
  2. 单击新建工作流>新建,在弹窗中配置工作流名称,完成后单击确定,新建一个Designer工作流。
  3. 单击进入工作流,进入Designer页面。
  1. 构建工作流。
  1. 在左侧组件列表的搜索框中,搜索并拖入读CSV文件swing训练swing推荐组件至右侧画布中。
  2. 连接组件节点间的输出桩与输入桩,将组件连接成如下的流程。

  3. 分别单击读CSV文件-1swing训练-1swing推荐-1组件节点,在右侧的参数配置中配置以下核心参数。

组件名

组件配置

读CSV文件-1

  • 字段设置
    • 文件路径:选择上传至OSS中的Magazine_Subscriptions.csv文件。
    • Schemauserid string, itemid string, score double, ts long
  • 其他参数:保持默认。

swing训练-1

  • 字段设置
    • Item列列名:配置为itemid
    • User列列名:配置为userid
  • 其他参数:保持默认。

swing推荐-1

  • 字段设置Item列列名配置为itemid
  • 参数设置推荐结果列名配置为自定义的结果列名,本教程配置为recommend。
  • 其他参数:保持默认。
  1. 单击右侧空白画布,在工作流属性页签配置参数:
  • Alink算法默认执行资源类型:选择为Flink
  • 工作流数据存储:本教程在上述步骤中已配置了工作空间默认存储路径,该参数可以不用配置,工作流数据将存储到工作空间默认存储路径。您也可以将该参数配置为上述步骤中创建的OSS Bucket,如果您同时配置了工作空间默认存储工作流数据存储两个参数,以工作流数据存储配置的路径为准。
  1. 单击画布上方的运行按钮,运行所有工作流节点。等待大约10分钟,工作流执行成功。


完成

耗时:5分钟

工作流运行成功后,您已完成了模型训练和预测操作。您可以前往PAI默认工作空间配置的OSS Bucket存储路径中查看训练和预测结果。

  1. 获取工作流ID和组件节点ID。
  1. 在Designer工作流画布上方,单击全部任务查看
  2. 历史任务对话框,根据任务预览列查找运行的工作流,单击工作流对应的Run Name,进入任务详情页面。
  3. 任务详情页面右侧基本信息区域,获取工作流ID
  4. 分别单击左侧画布中的swing训练-1swing推荐-1组件节点,在右侧运行信息页签获取节点ID
  1. 登录OSS控制台,进入PAI默认工作空间配置的OSS Bucket存储空间,根据工作流ID和节点ID分别查看swing训练和swing推荐组件的运行结果。
  • 查看swing训练组件的训练结果,该结果为.csv类型的文件,您可以将结果文件下载到本地。

    训练结果文件内容如下(只展示部分结果)。其中:object字段为推荐商品ID列表;score字段为相似度得分列表。
B000063XJL  {"object":["B00005N7TL","B00006GXD4","B00007BK3L","B00005NIPP","B00005N7SA","B00005NIOH","B00005NIOC"],"score":[6.289271327744577,2.936680548575717,1.8077389255788388,1.544851853590021,1.544851853590021,1.544851853590021,1.544851853590021],"itemCol":"itemid"}
B000IMVNQU  {"object":["B00005N7TL","B00006KT0K","B00008DP07","B00006KULE","B00005N7T5","B00007BK3L","B00077B7M6","B00005NIPP","B00005NIOH","B00005R8BL","B00005N7QI"],"score":[6.486329976413662,3.1868885871186476,3.1868885871186476,2.703490743782537,2.31253267520656,2.31253267520656,1.9617600399918982,1.8210791926392271,1.8210791926392271,1.8210791926392271,1.8210791926392271],"itemCol":"itemid"}
B000INCK4I  {"object":["B00005N7PN","B001LF4EVO","B00005N7QN","B000BW56WO","B0001MS2D4"],"score":[23.714099425086584,2.465383582188798,1.9149558065892445,1.6849363590348918,1.6849363590348918],"itemCol":"itemid"}
B00I8P3HR2  {"object":["B00005N7QA","B00005NIOH","B00007BK3L"],"score":[1.765552692141871,1.765552692141871,1.765552692141871],"itemCol":"itemid"}
  • 查看swing推荐组件的预测结果,您可以将结果文件下载到本地。

    预测结果文件内容如下(只展示部分结果)。其中:itemid字段为相似商品ID列表;score字段为相似度得分列表,降序排列,分数越高表明商品越相似。
AH2IFH762VY5U,B00005N7P0,5.0,1005177600,"{""data"":{""itemid"":[""B00005NIPP"",""B00005NIOP""],""score"":[2.703490734100342,2.703490734100342]},""schema"":""itemid STRING,score DOUBLE""}"
AOSFI0JEYU4XM,B00005N7P0,5.0,1004486400,"{""data"":{""itemid"":[""B00005NIPP"",""B00005NIOP""],""score"":[2.703490734100342,2.703490734100342]},""schema"":""itemid STRING,score DOUBLE""}"
A3JPFWKS83R49V,B00005N7OJ,3.0,1174694400,
A19FKU6JZQ2ECJ,B00005N7OJ,5.0,1163116800,
A25MDGOMZ2GALN,B00005N7P0,5.0,1405296000,"{""data"":{""itemid"":[""B00005NIPP"",""B00005NIOP""],""score"":[2.703490734100342,2.703490734100342]},""schema"":""itemid STRING,score DOUBLE""}"
A3XT9XXWXFMJ1,B00005N7P0,3.0,1403568000,"{""data"":{""itemid"":[""B00005NIPP"",""B00005NIOP""],""score"":[2.703490734100342,2.703490734100342]},""schema"":""itemid STRING,score DOUBLE""}"
A3ERU005ES1IHT,B00005N7P0,5.0,1401580800,"{""data"":{""itemid"":[""B00005NIPP"",""B00005NIOP""],""score"":[2.703490734100342,2.703490734100342]},""schema"":""itemid STRING,score DOUBLE""}"


清理及后续

耗时:5分钟

清理

实时计算Flink版提供的按量付费(3个月5000CUH计算资源)试用,具有时长和容量限制,使用完请及时清理相关资源。如果未及时清理资源,相关Flink工作空间将按照按量付费模式正常进行计费,涉及的其他产品服务也会正常收取费用。完成教程后,您可以按照如下场景进行处理:

  • 如果您需要继续使用,此时5000CUH资源已使用完或者已经超过3个月,请随时查看欠费金额,并在规定时间内充值结清欠费账单,否则无法继续正常使用工作空间。计费详情请参见按量付费欠费说明
  • 如果您不需要继续使用,请及时清理测试数据和试用资源:
  • 实时计算Flink版资源清理
    登录实时计算控制台单击目标工作空间操作列下的更多>释放资源,单击确定。应用实时监控服务ARMS(如果您开通时选中)和负载均衡SLB会随实时计算Flink版一起被释放。
  • 对象存储OSS资源清理
    删除对象存储空间,详情请参见删除存储空间
  • 专有网络VPC资源清理
    删除专有网络,详情请参见删除专有网络

后续

您还可以参考以上操作步骤,使用Flink计算资源构建新的Designer工作流进行模型训练和预测。


总结

常用知识点

问题1:在工作流属性页签,设置Alink算法默认执行资源类型为Flink后,是否还需要单独为每个组件节点设置运行时使用的计算资源?(单选题)

  • 正确答案是否,因为设置工作流属性后,即为每个组件节点设置了使用的计算资源,不需要再单独设置。

延伸阅读

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
3月前
|
SQL 算法 Serverless
B端算法实践问题之使用concat_id算子获取用户最近点击的50个商品ID如何解决
B端算法实践问题之使用concat_id算子获取用户最近点击的50个商品ID如何解决
28 1
|
4月前
|
数据采集 机器学习/深度学习 算法
Python基于Apriori关联规则算法实现商品零售购物篮分析
Python基于Apriori关联规则算法实现商品零售购物篮分析
290 0
|
6月前
|
算法
【优选算法】——Leetcode——LCR 179. 查找总价格为目标值的两个商品
【优选算法】——Leetcode——LCR 179. 查找总价格为目标值的两个商品
|
5月前
|
搜索推荐 算法 前端开发
计算机Java项目|基于协同过滤算法的体育商品推荐系统
计算机Java项目|基于协同过滤算法的体育商品推荐系统
|
11月前
|
搜索推荐 算法 前端开发
商品购物管理与推荐系统Python+Django网页界面+协同过滤推荐算法
商品购物管理与推荐系统Python+Django网页界面+协同过滤推荐算法
128 0
|
6月前
|
移动开发 算法 数据可视化
数据分享|Spss Modeler关联规则Apriori模型、Carma算法分析超市顾客购买商品数据挖掘实例
数据分享|Spss Modeler关联规则Apriori模型、Carma算法分析超市顾客购买商品数据挖掘实例
|
6月前
|
搜索推荐 算法
基于用户的协同过滤算法实现商品推荐
基于用户的协同过滤算法实现商品推荐
84 2
|
6月前
|
JavaScript 算法 前端开发
JS懒加载 -- 适用于商城主页商品懒加载、图片懒加载,算法简单、易于理解、萌新福音
JS懒加载 -- 适用于商城主页商品懒加载、图片懒加载,算法简单、易于理解、萌新福音
56 0
|
11月前
|
存储 安全 Java
S-FTPClient(Swing,Java,Socket,FTP,加密算法)
S-FTPClient(Swing,Java,Socket,FTP,加密算法)
65 0
|
算法 搜索推荐
最优商品topk排名算法
最优商品topk排名算法
77 0