ALS算法使用总结说明

一、算法流程

最近终于把ALS算法上线了,前前后后整了一个半月,现在把这个经历记录下。我的目的是利用ALS算法做视频推荐,当然这只是作为其中一个算法。为了达到这个目的,我经过分析之后,使用下面的流程。

1、接收视频的请求

2、获取用户的历史记录(包括用户观看历史、点赞的视频、分享的视频、评论的视频)

3、根据历史记录中的视频获取相似视频

4、权重排序

5、返回结果

(推荐架构参见)

其中ALS算法的作用就是在第三步,我们利用ALS算法计算出所有视频的相似视频供推荐使用。

为了用ALS算法计算相似视频,我参考资料后,使用下面的流程。

1、获取所有用户每天的视频历史记录(包括用户观看、点赞、分享、评论的日志)

2、整理日志,规范化如下形式(用户id,视频id,动作,时长,动作发生时的时间戳)

3、形成用户对视频的打分表,不同的行为分配不同的权重。

4、调用spark的ML库中ALS函数进行训练,调试参数。

5、获取每个视频的特征向量。

6、根据视频的特征向量计算视频两两间的相似性。

都说整理数据是脏活累活,此言非虚啊。上面的第1、2、3步花费了我一个月的空闲时间(当然其中有间歇),有几次因为太麻烦都想放弃了。所幸最终搞定,经验就是

1、我们要确定我们需要的历史日志,如今在哪里(公司的是存放在hdfs或者hive表中)。

2、我们要写SQL把它提取出来。提取的时候不要贪心,求大求全,需要什么数据就写什么样的SQL。目前不需要的数据先放一放。(放一放,一般都凉凉了)。

(ALS算法原理参见)

二、ALS算法调试参数过程

1、参数说明

我使用spark自带的隐性行为als算法函数,里面涉及三个重要的参数,分别是

rank:代表视频的特征向量的维度,默认值10

iterations: 代表训练的轮次,默认值5

lambda:代表正则化系数,默认值0.01

其中rank的值越大,代表视频被描述的越详细,计算出来的视频相似列表两两之间的差异也越大。我刚开始把rank的值设置的很小(默认值10),结果计算出的相似视频列表中,两个视频之间区分不开,差值在0.00001这个级别,使用时效果较差。

iterations的值越大,我们训练的次数就越多,训练就越耗时。

lambad是为了降低过拟合现象而设置的,当你运行算法时发现在训练集上准确率很高,在测试集上准确率较低的话,有可能发生了过拟合。需要把这个值设置大一点。

MSE:目标函数,这是预测值和实际值的平方差的和的均值。

2、调试过程

我的方法比较简单粗暴,首先确定三个参数的范围,然后再微调。

Rank 可选值[10,30,50,80,100]

iterations 可选值[10,20,30,50]

lambda 可选值[0.001,0.01,0.1,1,10]

我将这些可选值进行组合,可以得到100个(rank, iterations, lambda)的组合。然后将程序运行100次,分别得到MSE,观察规律。结果如下

(从左到右分别是,rank,lambda,iterations,MSE)

我的实验次数很少,但是也发现一些现象

1、以rank=50为分界点,rank越大,需要设置lambda的值越大,才能保持MSE不增加。

2、iteration对结果的影响不是很大,可能是我的数据集的关系,我得到的iterations优值是在[20,30]这个范围内。

在调试参数的时候,也遇到一些问题。

1、程序运行的时候日志显示和集群联系中断的情况发生。这是由于训练时间过长,spark的rdd断片了。Google后,使用检查点机制得以解决。

2、每次运行都需要耗费很多时间,迫使我精简程序。把评分数据存储在hdfs上,这样不用每次重新计算评分矩阵,节省了一些时间。

视频推荐ALS算法使用总结说明相关推荐

  1. 音乐智能推荐 ALS算法

    音乐推荐分析 特征的产生: ​ 能让用户产生兴趣的行为,可能包括有:试听音乐.收藏音乐.收藏专辑|歌单.搜索.关注歌手|用户.下载歌曲.分享(比较少) 权重产生: 按照用户操作成本 下载+播放 > ...

  2. 基于Spark ALS算法的个性化推荐

    今天来使用spark中的ALS算法做一个小推荐.需要数据的话可以点击查看初识sparklyr-电影数据分析,在文末点击阅读原文即可获取. 其实在R中还有一个包可以做推荐,那就是recommenderl ...

  3. Youtube视频推荐算法:从10页论文到4页论文的变迁

    Youtube视频推荐算法:从10页论文到4页论文的变迁 所以说豆瓣广播是个好东西,长久以来已经怠于主动关注paper的我,每次都能通过我那些专业敬业的友邻们发现有意思的文章或话题,知识因分享而伟大! ...

  4. ALS算法原理和在音乐推荐上的应用

    ALS算法原理和在音乐推荐上的应用 ALS(Alternating least squares,交替最小二乘法)本来是一种数学上的优化方法,自从有人用它在Netflix大赛中使用于推荐系统,并获得冠军 ...

  5. 短视频推荐算法过程分享,论如何针对推荐算法来优化短视频内容

    短视频推荐算法过程分享,论如何针对推荐算法来优化短视频内容 相信做短视频的小伙伴一定知道"短视频推荐算法",简单理解就是短视频平台都自有一套推荐机制,决定我们发布的短视频是否可以获 ...

  6. 基于PySpark和ALS算法实现基本的电影推荐流程

    文章目录 1.PySpark简介 2.Pyspark接口用法 读取数据源 常用算子 完整的wordcount示例 3.基于PySpark和ALS的电影推荐流程 数据集背景 读取用户数据 训练模型 调用 ...

  7. YouTube 的视频推荐算法

    转载:https://www.zhihu.com/question/20829671/answer/205421638 第一阶段,基于User-Video图游历算法,2008年[1]. 在这个阶段,Y ...

  8. “个性化视频推荐”算法的Storm实现方案

    随着互联网的蓬勃发展,近年来利用互联网技术实现各类面向个人用户的服务系统层出不穷,其中在线视频网站系统就是其中一类典型的服务场景,利用用户在站点上实际的行为活动数据,准确地为每个用户推荐个性化.时效性 ...

  9. 数据结构与算法视频推荐

    数据结构与算法视频推荐,小甲鱼数据结构与算法 https://www.bilibili.com/video/av2975983/index_1.html#page=1

最新文章

  1. php中的全局变量$_REQUEST
  2. vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
  3. webpack:多文件、多环境、跨域处理、热加载
  4. p字间距 html段落内文字设置字间距间隔
  5. 电脑技巧:如何彻底关闭电脑右下角闪烁弹窗广告?
  6. kafka java api 删除_使用Java API创建(create),查看(describe),列举(list),删除(delete)Kafka主题(Topic)...
  7. sql server browser启动不了_沐浴书香,润泽童年 | 读书月启动仪式
  8. 学python还是labview_Labview个人感受
  9. 物理光学3 电磁波的折射与反射
  10. 无线移动通信技术快速发展历程和趋向(转)
  11. 现代软件工程 课件 软件工程师能力自我评价表
  12. 【Java刷题】04_二叉树的左右视图
  13. openmp多线程简单编程
  14. Apache POI读合并单元格
  15. 小波科普文章精粹:看森林,也看树木
  16. Minio 分布式集群部署
  17. 现场 | 人工智能在金融、物流、教育、儿童领域究竟如何落地?
  18. SpringBoot集成jsoup多线程爬取美剧天堂全部电影资源
  19. 中国计算机科学家数量百人,百位科学家获“中国青年科技奖”,高校人数占比超七成...
  20. 项目实战 之 vue3 + vite + pinia

热门文章

  1. matlab特殊符号代替,matlab中特殊符号
  2. 关于计算机的读书报告摘要,计算机学科概论读书报告样稿.docx
  3. 设计模式的思考(四)
  4. jqgrid列和表头不对齐的问题
  5. 第四十五篇 信号上升时间的理解
  6. 数据结构——课堂笔记【上课重点知识截图】
  7. python中的多态是什么_Python中的多态
  8. Java多态 和 Python多态
  9. 使命召唤ol显示服务器连接超时,使命召唤online无法连接大厅服务怎么办 无法连接大厅解决方法...
  10. 千锋逆战1903班Days11上课代码以及笔记