视频推荐ALS算法使用总结说明
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算法使用总结说明相关推荐
- 音乐智能推荐 ALS算法
音乐推荐分析 特征的产生: 能让用户产生兴趣的行为,可能包括有:试听音乐.收藏音乐.收藏专辑|歌单.搜索.关注歌手|用户.下载歌曲.分享(比较少) 权重产生: 按照用户操作成本 下载+播放 > ...
- 基于Spark ALS算法的个性化推荐
今天来使用spark中的ALS算法做一个小推荐.需要数据的话可以点击查看初识sparklyr-电影数据分析,在文末点击阅读原文即可获取. 其实在R中还有一个包可以做推荐,那就是recommenderl ...
- Youtube视频推荐算法:从10页论文到4页论文的变迁
Youtube视频推荐算法:从10页论文到4页论文的变迁 所以说豆瓣广播是个好东西,长久以来已经怠于主动关注paper的我,每次都能通过我那些专业敬业的友邻们发现有意思的文章或话题,知识因分享而伟大! ...
- ALS算法原理和在音乐推荐上的应用
ALS算法原理和在音乐推荐上的应用 ALS(Alternating least squares,交替最小二乘法)本来是一种数学上的优化方法,自从有人用它在Netflix大赛中使用于推荐系统,并获得冠军 ...
- 短视频推荐算法过程分享,论如何针对推荐算法来优化短视频内容
短视频推荐算法过程分享,论如何针对推荐算法来优化短视频内容 相信做短视频的小伙伴一定知道"短视频推荐算法",简单理解就是短视频平台都自有一套推荐机制,决定我们发布的短视频是否可以获 ...
- 基于PySpark和ALS算法实现基本的电影推荐流程
文章目录 1.PySpark简介 2.Pyspark接口用法 读取数据源 常用算子 完整的wordcount示例 3.基于PySpark和ALS的电影推荐流程 数据集背景 读取用户数据 训练模型 调用 ...
- YouTube 的视频推荐算法
转载:https://www.zhihu.com/question/20829671/answer/205421638 第一阶段,基于User-Video图游历算法,2008年[1]. 在这个阶段,Y ...
- “个性化视频推荐”算法的Storm实现方案
随着互联网的蓬勃发展,近年来利用互联网技术实现各类面向个人用户的服务系统层出不穷,其中在线视频网站系统就是其中一类典型的服务场景,利用用户在站点上实际的行为活动数据,准确地为每个用户推荐个性化.时效性 ...
- 数据结构与算法视频推荐
数据结构与算法视频推荐,小甲鱼数据结构与算法 https://www.bilibili.com/video/av2975983/index_1.html#page=1
最新文章
- php中的全局变量$_REQUEST
- vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
- webpack:多文件、多环境、跨域处理、热加载
- p字间距 html段落内文字设置字间距间隔
- 电脑技巧:如何彻底关闭电脑右下角闪烁弹窗广告?
- kafka java api 删除_使用Java API创建(create),查看(describe),列举(list),删除(delete)Kafka主题(Topic)...
- sql server browser启动不了_沐浴书香,润泽童年 | 读书月启动仪式
- 学python还是labview_Labview个人感受
- 物理光学3 电磁波的折射与反射
- 无线移动通信技术快速发展历程和趋向(转)
- 现代软件工程 课件 软件工程师能力自我评价表
- 【Java刷题】04_二叉树的左右视图
- openmp多线程简单编程
- Apache POI读合并单元格
- 小波科普文章精粹:看森林,也看树木
- Minio 分布式集群部署
- 现场 | 人工智能在金融、物流、教育、儿童领域究竟如何落地?
- SpringBoot集成jsoup多线程爬取美剧天堂全部电影资源
- 中国计算机科学家数量百人,百位科学家获“中国青年科技奖”,高校人数占比超七成...
- 项目实战 之 vue3 + vite + pinia