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版本对比相关推荐

  1. windows 2008 server R2 按服务器角色的版本对比

    按服务器角色的版本对比 关键词: = 不可用 = 部分/限制 = 完全 服务器角色 企业版 数据中心 标准版 Itanium Web Foundation HPC Active Directory证书 ...

  2. 《Windows 8 权威指南》——1.5 版本对比

    本节书摘来自异步社区<Windows 8 权威指南>一书中的第1章,第1.5节,作者:胡耀文 , 尹成 , 李贝贝 , 卢磊 , 曹珍著,更多章节内容可以访问云栖社区"异步社区& ...

  3. TortoiseGit 单文件版本对比_入门试炼_09

    文章目录 一.单文件版本数据模拟 二.单文件版本对比 2.1. 查询单文件提交记录 2.2. 单文件版本之间差异对比 案例场景: 依次提交5次,推送远程,同一个文件5个版本之间的相互对比 一.单文件版 ...

  4. Matlab各版本对比

    官方文档主页 文档主页 - MathWorks 中国 各版本对比 MathWorks - Archived MathWorks Documentation - MathWorks 中国 ​​​​​​发 ...

  5. EasyRecovery 15 mac中文免费密钥数据恢复 安装软件的方法教程及版本对比

    为了方便果粉们的使用,EasyRecovery 15 For Mac已经率先上线,那么在使用之前需要在Mac电脑上安装,小编在此说明EasyRecovery 详细介绍安装软件的方法教程及版本对比. 准 ...

  6. Microsoft Windows Server 2003版本对比

    Microsoft Windows Server 2003版本对比 下列基于功能划分的表格将为您详细比较Microsoft Windows Server 2003 家族各个版本的差异. 图例: = 内 ...

  7. Spark 3.2.0 版本新特性 push-based shuffle 论文详解(一)概要和介绍

    前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 目录 Spark 3.2.0 ...

  8. magic版本和android版本,荣耀Magic2的6G版和8G版差什么? 荣耀Magic2版本对比

    荣耀Magic2是最近非常火的一款滑盖全面屏手机,配备屏幕指纹.40W超级快充等,售价3799元起,在国产高端旗舰机中性价比也很不错.而最近有网友问到小编这样一个问题:荣耀Magic2的6G版和8G版 ...

  9. 新增版本管理及版本对比,接口测试结果增加误报标记,MeterSphere开源持续测试平台v1.17.0发布

    2022年1月27日,MeterSphere一站式开源持续测试平台正式发布v1.17.0版本. 在这一版本中,我们新增了版本管理及版本对比相关功能(X-Pack),用户可以为功能用例.接口定义.接口自 ...

最新文章

  1. 计算机专业在线家教,基于SSM框架的家教平台设计与实现计算机专业.doc-原创力文档...
  2. Python中glob.glob的排序问题
  3. 世博会、新三国、新红楼
  4. WCF wsHttpBinding之Transport security Mode, clientCredentialType=”Basic”
  5. jQuery_$工具方法
  6. STP文件服务器,综合监控stp服务器
  7. “低端市场”?一线业务员这样看
  8. Go语言生成区间随机数
  9. RabbitMq链接
  10. 通过cmd和npm指令,快速引入element-ui组件
  11. 爹地,我找到了!15个极好的Linux find命令示例
  12. PHP如何快速读取大文件
  13. PHP中表单没有问题但是$_FILES为空的解决办法
  14. 开源中国iOS客户端学习——(七)MBProgressHUD特效
  15. VC++动态链接库(DLL)编程(六)――DLL***
  16. CI框架入门中的简单MVC例子
  17. 微信wxp协议 服务器设置,微信支付
  18. 除了Google还有什么搜索引擎?
  19. 第一章节:期货及衍生品概述
  20. 【名单回顾】2019/2020年第11届蓝桥杯大赛青少年组(北京赛区)选拔赛C++初级组一二等奖获奖名单

热门文章

  1. 机器学习领域权威会议与期刊整理
  2. 构建自己的个人信息资料库
  3. Python:NBA球员得分数据排行爬虫
  4. 如果你不想像中兴跳楼程序员那样,2018年就应该做这8件事,别再等到中年危机了
  5. JavaWeb企业实战项目(一):环境搭建-用户注册-邮件发送
  6. 垃圾分类的正确姿势?用 OpenCV 人工智能图像识别技术来进行
  7. 如何防止恶意攻击短信验证码接口
  8. 计算机中现代操作系统两个基本特征是什么,现代操作系统的两个基本特征是资源共享和...
  9. 基于Tensorflow 三层神经网络拟合二次函数(附代码与解析)
  10. 使用python和tableau对数据进行抓取及可视化