且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

推荐系统入门之使用ALS算法实现打分预测

更新时间:2022-03-11 20:19:01

简介

场景将基于机器学习PAI平台,指导您如何使用ALS算法实现用户音乐打分预测。

背景信息

ALS算法是基于模型的推荐算法,基本思想是对稀疏矩阵进行模型分解,评估出缺失项的值,以此来得到一个基本的训练模型。然后依照此模型可以针对新的用户和物品数据进行评估。ALS是采用交替的最小二乘法来算出缺失项的,交替的最小二乘法是在最小二乘法的基础上发展而来的。

从协同过滤的分类来说,ALS算法属于User-Item CF,也叫做混合CF,它同时考虑了User和Item两个方面。

在本次用户音乐打分场景中,首先拿到的原始数据是每个听众对每首歌的评分矩阵A,这个评分可能是非常稀疏的,因为不是每个用户都听过所有的歌,也不是每个用户都会对每首歌评分。
推荐系统入门之使用ALS算法实现打分预测
ALS矩阵分解会把矩阵A分解成两个矩阵的相乘,分别是X矩阵和Y矩阵。

矩阵A=矩阵X和矩阵Y的转秩的乘积

x的列表示和Y的横表示可以称之为ALS中的因子,这个因子是有隐含定义的,这里假设有3个因子,分别是性格、教育程度、爱好。A矩阵经过ALS分解出的X、Y矩阵可以分别表示成如下所示。

X矩阵:
推荐系统入门之使用ALS算法实现打分预测
Y矩阵:

推荐系统入门之使用ALS算法实现打分预测
数据经过这样的拆解就很容易做用户对音乐的评分预测。比如有听众6,他从没听过“红豆“这首歌,但是我们可以拿到听众6在矩阵分解中X矩阵的向量M,这时候只有把向量M和”红豆“在Y矩阵中的对应向量N相乘,就能预测出听众6对于”红豆“这首歌的评分。

开通机器学习PAI服务

说明:本场景使用的机器学习PAI服务依赖于MaxCompute大数据计算服务,在运行实验时将会消耗大约2.5元的计算费用,请确保您的账户余额充足。

1.使用阿里云账号登录阿里云官网
推荐系统入门之使用ALS算法实现打分预测

  1. 在顶部的导航栏,依次将鼠标悬停到产品>人工智能处,然后单击机器学习平台PAI。

推荐系统入门之使用ALS算法实现打分预测

  1. 在机器学习PAI控制台首页,单击立即开通。

推荐系统入门之使用ALS算法实现打分预测

  1. 在服务开通页面,选择要开通的机器学习PAI服务所在的区域,例如华东2(上海),然后单击页面下方的立即购买。

推荐系统入门之使用ALS算法实现打分预测

  1. 在订单确认页面,仔细阅读《机器学习(PAI)服务协议》后,勾选我已阅读并同意,最后单击立即开通。

推荐系统入门之使用ALS算法实现打分预测

  1. 开通成功后,单击前往PAI管理控制台。

推荐系统入门之使用ALS算法实现打分预测

创建PAI Studio项目

1.在控制台左侧导航栏,单击可视化建模(Studio)。
推荐系统入门之使用ALS算法实现打分预测

  1. 在PAI Studio页面单击创建项目。

推荐系统入门之使用ALS算法实现打分预测

  1. 在右侧弹出的创建项目页面,MaxCompute选择按量付费,填入项目名称,然后单击确定。

PAI Studio底层计算依赖MaxCompute,如果您未开通过当前区域的MaxCompute,请按照页面提示去购买。

a.  单击购买。

推荐系统入门之使用ALS算法实现打分预测

b.  选择步骤一开通的机器学习PAI服务所在区域,例如华东2(上海),然后单击立即购买。

推荐系统入门之使用ALS算法实现打分预测

c.  仔细阅读《大数据计算服务MaxCompute(按量计算)服务协议》后,勾选我已阅读并同意,最后单击立即开通。

推荐系统入门之使用ALS算法实现打分预测

d.  开通成功后返回PAI Studio控制台页面,再次单击创建项目,在创建项目页面选择MaxCompute付费方式为按量付费,然后填入项目名称,最后单击确认。

推荐系统入门之使用ALS算法实现打分预测

  1. 项目创建需要1分钟左右进行初始化,等待项目操作列出现进入机器学习,表示项目创建完成。

推荐系统入门之使用ALS算法实现打分预测

创建实验

1.单击左侧导航栏的首页。
推荐系统入门之使用ALS算法实现打分预测

  1. 在模板列表找到ALS实现音乐推荐,然后单击从模板创建。

推荐系统入门之使用ALS算法实现打分预测

  1. 在弹出的新建实验框,单击确定。

推荐系统入门之使用ALS算法实现打分预测

查看实验模板

在该模板中已经默认配置了实验的数据源和ALS矩阵分解组件的参数。

1.右键单击数据源节点,然后单击查看数据。
推荐系统入门之使用ALS算法实现打分预测
显示的数据如下。
推荐系统入门之使用ALS算法实现打分预测
该数据源包含4个字段,其中:

user:用户ID。
item:音乐ID。
score:user对item的评分。

  1. 单击ALS矩阵分解-1节点,右侧显示如下,可以看到字段设置已设置为与数据源中的字段一致。

推荐系统入门之使用ALS算法实现打分预测

  1. 单击右侧的参数设置,可以看到模板中默认的算法参数。

推荐系统入门之使用ALS算法实现打分预测

运行实验

1 单击左上角运行。
推荐系统入门之使用ALS算法实现打分预测

  1. 请耐心等待3~5分钟,实验运行完成如下所示。

推荐系统入门之使用ALS算法实现打分预测

查看实验结果

本实验中会输出2张表,对应ALS算法中的X矩阵和Y矩阵。

1.实验运行完成后,右键单击画布中的ALS矩阵分解-1,在快捷菜单,选择查看数据 > 查看输出桩1,即可查看矩阵X。
推荐系统入门之使用ALS算法实现打分预测2. 右键单击画布中的ALS矩阵分解-1,在快捷菜单,选择查看数据 > 查看输出桩2,即可查看矩阵Y。
推荐系统入门之使用ALS算法实现打分预测
预测评分
例如要预测user1对音乐978130429的评分,只要将下方两个向量相乘即可。

user1:[-0.14220297,0.8327106,0.5352268,0.6336995,1.2326205,0.7112976,0.9794858,0.8489773,0.330319,0.7426911]
item978130429:[0.2431642860174179,0.6019538044929504,0.4035401940345764,0.254305899143219,0.4056856632232666,0.46871861815452576,0.3701469600200653,0.3757922947406769,0.26486095786094666,0.37488409876823425]
经计算,两个向量相乘的结果为2.7247730805432644,可以预测user1对音乐978130429的评分为2.7247730805432644。