spark使用之ALS版本对比
hi各位大佬好,我是菜鸟小明哥,最近在搞spark的破事,别人一问只会pyspark有点low,因此有必要学习下java-spark,以ALS为例开展,毕竟也是推荐中常用的方法,这个有必要知道。
疑问:ALS似乎只能用于评分的进行矩阵分解,如果是点击(0或1)咋办,没有评分(得不到评分),能将0/1视为评分这样做么??
带着问题开始!!
For Recommendation in Deep learning QQ Group 277356808
For deep learning QQ Second Group 629530787
I'm here waiting for you
前置博文,java读取movielens数据,maven环境问题,java-spark数据预处理
spark-ALS有官方的例子,但是我这里实现不了(不能给用户推荐合适的item)下面的可以执行,但是不能打印这个变量。
Dataset<Row> userRecs = model.recommendForAllUsers(10);
经过很久的调研,目前能够实现的是ML版本得到user factor 及item factor,这个就是embedding的表征吧(后面可以验证)。MLlib有另一个版本,因为环境版本支持,很容易实现。最终保存形式如下:
import org.apache.spark.mllib.recommendation.ALS;
import org.apache.spark.mllib.recommendation.MatrixFactorizationModel;
import org.apache.spark.mllib.recommendation.Rating;
感觉无需编码就可以,前面是id,后面是double [] ,16维度。
MLlib的版本计算的很快,简直是瞬间计算完成。下面进行分割数据集(留一法),然后得到训练集和测试集,然后并用python-faiss计算出最终的效果。
如果没有下面的转换结果如下:解决方法参考博文
model.userFactors().toJavaRDD().saveAsTextFile(outDir+"/userFeatures");
//model.userFeatures().toJavaRDD().map(new FeaturesToString()).saveAsTextFile(outputDir + "/userFeatures");
【10.16】现在两种方法的结果均已存储,那么现在读取为py,方便进行后续测试指标。
ALS1数据格式如下
mac 安装faiss没有问题,但引入faiss就是出错。
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_swigfaiss'
环境设置的问题,先在终端进入py的虚拟环境,
$ source /Users/。。/PycharmProjects/pythonProject/venv/bin/activate
conda安装:conda install faiss-cpu -c
全部当成点击数据,没有按照评分进行区分正负样本,对比结果如下:指标见此博文
ALS1
[0.00073506 0.01175497 0.00660284 0.00270839 0.00184229]
ALS2
[0.00036465 0.01009934 0.00561241 0.00204855 0.00112642]两次结果相差不大
[0.00043596 0.01059603 0.00594256 0.00222487 0.00124072]
很显然ALS1效果较好。
但我感觉其中有bug,HR@50怎么可能这么低呢?这个无法和ytb做对比,因为使用ytb时只用了点击,而没有考虑其中的评分,而ALS考虑评分了。如果非要对齐,那么数据应该将大于3或者4的评分视为点击,小于此阈值的视为没有点击,然后再进行训练。不再展示,后续有机会做推荐再写。
愿我们终有重逢之时,而你还记得我们曾经讨论的话题
spark使用之ALS版本对比相关推荐
- windows 2008 server R2 按服务器角色的版本对比
按服务器角色的版本对比 关键词: = 不可用 = 部分/限制 = 完全 服务器角色 企业版 数据中心 标准版 Itanium Web Foundation HPC Active Directory证书 ...
- 《Windows 8 权威指南》——1.5 版本对比
本节书摘来自异步社区<Windows 8 权威指南>一书中的第1章,第1.5节,作者:胡耀文 , 尹成 , 李贝贝 , 卢磊 , 曹珍著,更多章节内容可以访问云栖社区"异步社区& ...
- TortoiseGit 单文件版本对比_入门试炼_09
文章目录 一.单文件版本数据模拟 二.单文件版本对比 2.1. 查询单文件提交记录 2.2. 单文件版本之间差异对比 案例场景: 依次提交5次,推送远程,同一个文件5个版本之间的相互对比 一.单文件版 ...
- Matlab各版本对比
官方文档主页 文档主页 - MathWorks 中国 各版本对比 MathWorks - Archived MathWorks Documentation - MathWorks 中国 发 ...
- EasyRecovery 15 mac中文免费密钥数据恢复 安装软件的方法教程及版本对比
为了方便果粉们的使用,EasyRecovery 15 For Mac已经率先上线,那么在使用之前需要在Mac电脑上安装,小编在此说明EasyRecovery 详细介绍安装软件的方法教程及版本对比. 准 ...
- Microsoft Windows Server 2003版本对比
Microsoft Windows Server 2003版本对比 下列基于功能划分的表格将为您详细比较Microsoft Windows Server 2003 家族各个版本的差异. 图例: = 内 ...
- Spark 3.2.0 版本新特性 push-based shuffle 论文详解(一)概要和介绍
前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 目录 Spark 3.2.0 ...
- magic版本和android版本,荣耀Magic2的6G版和8G版差什么? 荣耀Magic2版本对比
荣耀Magic2是最近非常火的一款滑盖全面屏手机,配备屏幕指纹.40W超级快充等,售价3799元起,在国产高端旗舰机中性价比也很不错.而最近有网友问到小编这样一个问题:荣耀Magic2的6G版和8G版 ...
- 新增版本管理及版本对比,接口测试结果增加误报标记,MeterSphere开源持续测试平台v1.17.0发布
2022年1月27日,MeterSphere一站式开源持续测试平台正式发布v1.17.0版本. 在这一版本中,我们新增了版本管理及版本对比相关功能(X-Pack),用户可以为功能用例.接口定义.接口自 ...
最新文章
- 计算机专业在线家教,基于SSM框架的家教平台设计与实现计算机专业.doc-原创力文档...
- Python中glob.glob的排序问题
- 世博会、新三国、新红楼
- WCF wsHttpBinding之Transport security Mode, clientCredentialType=”Basic”
- jQuery_$工具方法
- STP文件服务器,综合监控stp服务器
- “低端市场”?一线业务员这样看
- Go语言生成区间随机数
- RabbitMq链接
- 通过cmd和npm指令,快速引入element-ui组件
- 爹地,我找到了!15个极好的Linux find命令示例
- PHP如何快速读取大文件
- PHP中表单没有问题但是$_FILES为空的解决办法
- 开源中国iOS客户端学习——(七)MBProgressHUD特效
- VC++动态链接库(DLL)编程(六)――DLL***
- CI框架入门中的简单MVC例子
- 微信wxp协议 服务器设置,微信支付
- 除了Google还有什么搜索引擎?
- 第一章节:期货及衍生品概述
- 【名单回顾】2019/2020年第11届蓝桥杯大赛青少年组(北京赛区)选拔赛C++初级组一二等奖获奖名单
热门文章
- 机器学习领域权威会议与期刊整理
- 构建自己的个人信息资料库
- Python:NBA球员得分数据排行爬虫
- 如果你不想像中兴跳楼程序员那样,2018年就应该做这8件事,别再等到中年危机了
- JavaWeb企业实战项目(一):环境搭建-用户注册-邮件发送
- 垃圾分类的正确姿势?用 OpenCV 人工智能图像识别技术来进行
- 如何防止恶意攻击短信验证码接口
- 计算机中现代操作系统两个基本特征是什么,现代操作系统的两个基本特征是资源共享和...
- 基于Tensorflow 三层神经网络拟合二次函数(附代码与解析)
- 使用python和tableau对数据进行抓取及可视化