很多人在决定是否看一部电影之前都会去豆瓣看下评分作为参考,看完电影也会给一个自己的分数。每个人对每个商品或者电影或是音乐都有一个心理的分数,这个分数标明用户是否对这个内容满意。作为内容的提供方,如果可以预测出每个用户对于内容的心理分数,就能更好的理解用户,并给用户提供好的内容推荐。今天就介绍下如何通过ALS矩阵分解算法实现用户对于音乐或者电影的评分预测。

ALS算法介绍

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

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

我们通过音乐打分这个案例介绍下交替最小二乘法的原理,首先拿到的原始数据是每个听众对每首歌的评分矩阵A,这个评分可能是非常稀疏的,因为不是每个用户都听过所有的歌,也不是每个用户都会对每首歌评分。

ALS矩阵分解会把矩阵A分解成两个矩阵的相乘,分别是X矩阵和Y矩阵,

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

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

(上图为x矩阵)

(上图为Y矩阵)

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

ALS在PAI实验

现在在PAI上面对ALS算法案例进行实验。整体流程只需要包含输入数据源和ALS矩阵分解组件即可。本案例已经集成于PAI-STUDIO首页模板:

创建后如图:

1.数据源

输入数据源包含4个字段

User:用户ID

Item:音乐ID

score:user对item的评分

2.ALS矩阵分解

需要设置3个对应字段,

参数名称参数描述取值范围是否必选,默认值

userColName

user列名

列的类型必须是bigint,可以不连续编号

必选

itemColName

item列名

列的类型必须是bigint,可以不连续编号

必选

rateColName

打分列名

列的类型必须是数值类型

必选

numFactors

因子数

正整数

可选,默认值100

numIter

迭代数

正整数

可选,默认值10

lambda

正则化系数

浮点数

可选,默认值0.1

implicitPref

是否采用隐式偏好模型

布尔型

可选,默认值false

alpha

隐式偏好系数

浮点数,大于0

可选,默认值40

3.结果分析

本案例中会输出2张表,对应ALS算法介绍中说的X矩阵和Y矩阵。

X矩阵表如图:

Y矩阵表如图:

比如要预测user1对音乐item994556636的评分,只要将下方两个向量相乘即可

User1:[-0.14220297,0.8327106,0.5352268,0.6336995,1.2326205,0.7112976,0.9794858,0.8489773,0.330319,0.7426911]

item994556636:[0.71699333,0.5847747,0.96564907,0.36637592,0.77271074,0.52454436,0.69028413,0.2341857,0.73444265,0.8352135]

本文作者:傲海

本文为云栖社区原创内容,未经允许不得转载。

als算法参数_ALS算法实现用户音乐打分预测相关推荐

  1. java als算法实现_ALS算法实现用户音乐打分预测

    很多人在决定是否看一部电影之前都会去豆瓣看下评分作为参考,看完电影也会给一个自己的分数.每个人对每个商品或者电影或是音乐都有一个心理的分数,这个分数标明用户是否对这个内容满意.作为内容的提供方,如果可 ...

  2. 矩阵乘法 算法训练 试题_ALS算法实现用户对音乐评分的预测

    很多人在觉得是否看一部电影之前都会去豆瓣看下评分,作为参考,看完电影也会给一个自己的分数.每个人对每个商品或者电影或是音乐都有一个心理的分数,这个分数标明用户是否对这个内容满意.作为内容的提供方,如果 ...

  3. 网易云 6 亿用户音乐推荐算法

    网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验. 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落 ...

  4. 基于音乐/电影/图书的协同过滤推荐算法代码实现(基于用户推荐、基于项目推荐、基于SlopeOne算法推荐、基于SVD算法推荐、混合加权推荐)

    基于音乐/电影/图书的协同过滤推荐算法代码实现(基于用户推荐.基于项目推荐.基于SlopeOne算法推荐.基于SVD算法推荐.加权混合推荐) 一.开发工具及使用技术 MyEclipse10.jdk1. ...

  5. 网易云6亿用户音乐推荐算法

    网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验. 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落 ...

  6. Random Forest算法参数解释及调优

    文章介绍了如何对随机森林模型进行参数调优 原文来自:http://www.analyticsvidhya.com/blog/2015/06/tuning-random-forest-model/ 为什 ...

  7. 文章召回-基于ALS的协同过滤算法实践及评估

    文章召回-基于ALS的协同过滤算法 本项目完整源码地址:https://github.com/angeliababy/ALS_col 项目博客地址: https://blog.csdn.net/qq_ ...

  8. R语言使用caret包构建遗传算法树模型(Tree Models from Genetic Algorithms )构建回归模型、通过method参数指定算法名称

    R语言使用caret包构建遗传算法树模型(Tree Models from Genetic Algorithms  )构建回归模型.通过method参数指定算法名称.通过trainControl函数控 ...

  9. R语言使用caret包构建岭回归模型(Ridge Regression )构建回归模型、通过method参数指定算法名称、通过trainControl函数控制训练过程

    R语言使用caret包构建岭回归模型(Ridge Regression )构建回归模型.通过method参数指定算法名称.通过trainControl函数控制训练过程 目录

  10. R语言使用caret包构建随机森林模型(random forest)构建回归模型、通过method参数指定算法名称、通过ntree参数指定随机森林中树的个数

    R语言使用caret包构建随机森林模型(random forest)构建回归模型.通过method参数指定算法名称.通过ntree参数指定随机森林中树的个数 目录

最新文章

  1. mac pycharm打不开解决方法
  2. poj 3580 splay
  3. 计算机基础知识考点题,2015年计算机二级公共基础知识考点测试题(1)
  4. android通过webservice验证用户 .
  5. python判断某年是否为闰年的程序_Python 学习--从0到1(4. 题3)
  6. LeetCode(1137)——第 N 个泰波那契数(JavaScript)
  7. 添加spark.yarn.jars 解决 WARN yarn.Client: Neither spark.yarn.jars nor spark.yarn.archive is set,
  8. day69-oracle 22-DBCA
  9. Java他们其中一个IO(一)
  10. Kafka配置5--Windows下配置Kafka的集群+SASL+SSL
  11. EF Commander v19.08破解版
  12. dnf助手服务器内部出错,地下城与勇士TGP的DNF助手异常解决办法 TGP-DNF助手补丁不适配怎么办...
  13. android截屏加水印,Android截图以及加水印Demo
  14. php混淆解密,php混淆加密解密实战
  15. html 复选框事件,HTML复选框选中与未选中触发事件的方法
  16. c++小游戏大全(不定时更新)
  17. 解决SQL Server日志空间满的方法
  18. H5实现3D圣诞树效果
  19. MySQL的定时任务详解
  20. 键盘按键ctrl与大小写切换键caps lock位置互换

热门文章

  1. 1KB文件夹快捷方式病毒清除方案
  2. jQuery到Vue的迁移之路
  3. kali下如何生成密码字典(在线)
  4. gtx1050ti最稳定的驱动_GTX1050ti显卡驱动
  5. Flann特征点匹配简述(Lowe's algorithm)
  6. Unity3D 快捷键技巧
  7. 【C语言自学】第三章流程控制
  8. 最简单的人脸识别系统搭建
  9. 免sdk实现微信/支付宝转账打赏功能
  10. mysql前台工具下载_phpmyadmin工具下载