协同过滤与推荐
 
协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术。
 
协同过滤引入的地方就在于它只需要输入一系列用户/产品的交互记录;
 
无论是显式的交互(例如在购物网站上进行评分)还是隐式的(例如用户访问了一个
产品的页面但是没有对产品评分)交互皆可。仅仅根据这些交互,协同过滤算法就能
够知道哪些产品之间比较相似(因为相同的用户与它们发生了交互)以及哪些用户之间
比较相似,然后就可以做出新的推荐。
 
交替最小二乘法
MLlib中包含交替最小二乘法(ALS)的一个实现,这是一个协同过滤的常用算法,可以很好的
扩展到集群上。它位于mllib.recommendation.ALS类中。
 
ALS会为每个用户和产品都设一个特征向量,这样用户向量与产品向量的点积就接近于它们的得分。
它接收下面所列几个参数:
  rank
        使用的特征向量的大小,更大的特征向量会产生更好的模型,但是也需要话费更大的计算代价,默认10
  iterations
        要执行的迭代次数,默认10
   lamda
        正则化参数,默认0.01
   alpha
        用来在ALS中计算置信度的常量,默认1.0
   numUserBlocks,  numProductBlocks
        切分用户和产品数据的块的数目,用来控制并行度,可以选择传递-1来上MLlib自动决定.
 
要使用ALS算法,需要有一个由mllib.recommendation.Rating对象组成的RDD,
其中每个包含一个用户id,一个产品id和一个评分。
 
实现过程中的一个挑战是每个id都需要是一个32位的整数值。
如果id是字符串或者更大的数字,那么可以直接在ALS中使用id的哈希值,
即使有两个用户或者产品映射到同一个Id上,总体结果依然会不错。
还有一种办法是broadcast()一张从产品id到正兴致的表,来付给每个产品独特的id。
 
ALS返回一个MatrixFactorizationModel对象来表示结果,
可以调用predict()来对一个由(UserId,productId)对组成的RDD进行预测评分。
也可以对使用model.recommendProducts(userId,numProducts)来为一个给定用户找到最值得推荐的前numProduct个产品。
注意,和MLlib中的其他模型不同,MatrixFactorizationModel对象很大,为每个用户和产品都存储了一个向量。
这样我们就不能把它存储到磁盘上,然后在另一个程序中读取回来。
不过,可以把模型中生成的特征向量RDD,也就是model.userFeatures和model.productFeatures保存到分布式文件系统上。
 
最后,ALS有两个变种:显示评分(默认情况)和隐式反馈(通过调用ALS.trainImplicit()而非ALS.train()来打开)。
用于显式评分时,每个用户对于一个产品的评分需要是一个得分(例如1到5星),而预测出来的评分也是得分。
而用于隐式反馈时,每个评分代表的是用户会和给定产品发送交互的置信度(比如随着用户访问一个网页次数
的增加,评分也会提高),预测出来的也是置信度。

spark-MLlib之协同过滤ALS的更多相关文章

  1. Spark MLlib之协同过滤

    原文:http://blog.selfup.cn/1001.html 什么是协同过滤 协同过滤(Collaborative Filtering, 简称CF),wiki上的定义是:简单来说是利用某兴趣相 ...

  2. Spark机器学习之协同过滤算法

    Spark机器学习之协同过滤算法 一).协同过滤 1.1 概念 协同过滤是一种借助"集体计算"的途径.它利用大量已有的用户偏好来估计用户对其未接触过的物品的喜好程度.其内在思想是相 ...

  3. 基于mllib的协同过滤实战(电影推荐)

    //加载需要的包 import org.apache.spark.rdd._ import org.apache.spark.mllib.recommendation.{ALS, Rating, Ma ...

  4. spark MLlib 概念 6:ALS(Alternating Least Squares) or (ALS-WR)

    Large-scale Parallel Collaborative Filtering for the Netflix Prize http://www.hpl.hp.com/personal/Ro ...

  5. Spark 基于物品的协同过滤算法实现

    J由于 Spark MLlib 中协同过滤算法只提供了基于模型的协同过滤算法,在网上也没有找到有很好的实现,所以尝试自己实现基于物品的协同过滤算法(使用余弦相似度距离) 算法介绍 基于物品的协同过滤算 ...

  6. 协同过滤 CF & ALS 及在Spark上的实现

    使用Spark进行ALS编程的例子可以看:http://www.cnblogs.com/charlesblc/p/6165201.html ALS:alternating least squares ...

  7. 【机器学习笔记一】协同过滤算法 - ALS

    参考资料 [1]<Spark MLlib 机器学习实践> [2]http://blog.csdn.net/u011239443/article/details/51752904 [3]线性 ...

  8. 基于Spark Mllib,SparkSQL的电影推荐系统

    本文测试的Spark版本是1.3.1 本文将在Spark集群上搭建一个简单的小型的电影推荐系统,以为之后的完整项目做铺垫和知识积累 整个系统的工作流程描述如下: 1.某电影网站拥有可观的电影资源和用户 ...

  9. SparkMLlib—协同过滤推荐算法,电影推荐系统,物品喜好推荐

    SparkMLlib-协同过滤推荐算法,电影推荐系统,物品喜好推荐 一.协同过滤 1.1 显示vs隐式反馈 1.2 实例介绍 1.2.1 数据说明 评分数据说明(ratings.data) 用户信息( ...

随机推荐

  1. html的标签分类————可以上传的数据篇

    html的标签可以分为: 块级标签:div(白板),H系列(加大加粗,H1—H7,字体一般逐渐变小,一般用作标题),p标签(段落之间有间距) 行内标签:span(白板) 此外,标签之间是可以嵌套的.为 ...

  2. Echarts地图使用经验-地图变形和添加数据

    关于echart2,echart3地图的使用一点人生经验: 1.echart3,echart2加载地图变形修复. 最近在使用echart2使用过程中,发现加载海南地图会产生变形.如下图,海南地图产生了 ...

  3. Java实践:一个简易的http server和client的java源码学习和总结。

    一.基本思路: 1.服务器端通过socket(), 监听在TCP 8080端口,等待客户端来连接. 2.服务器端解析客户端的HTTP请求中的URI值,把本地的目录下指定文件通过java的读取文件的方式 ...

  4. linux下编译opencv

    1.安装cmake:sudo apt-get install cmake 2.下载opencv-2.4.10.zip,解压 3.编译opencv cd /home/opencv-2.4.10 mkdi ...

  5. Actor模型浅析 一致性和隔离性

    一.Actor模型介绍 在单核 CPU 发展已经达到一个瓶颈的今天,要增加硬件的速度更多的是增加 CPU 核的数目.而针对这种情况,要使我们的程序运行效率提高,那么也应该从并发方面入手.传统的多线程方 ...

  6. 通过apt-get安装JDK8

    安装python-software-properties $sudo apt-get install python-software-properties $sudo apt-get install ...

  7. Python Learning: 01

    After a short period of  new year days, I found life a little boring. So just do something funny--Py ...

  8. Python Docker 查看私有仓库镜像【转】

    文章来源:python Docker 查看私有仓库镜像 pip 安装: # 首先安装epel扩展源: yum -y install epel-release # 更新完成之后,就可安装pip: yum ...

  9. hello随笔

    初次来到博客园,都试一下 我明白了,随笔就是博客咯.日记自对自己可见.再试试分类吧

  10. 阿里Canal安装和代码示例

    Canal的简单使用 canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据,用于实际工作中,比较实用,特此记录一下 Canal简介 canal是应阿里巴巴存在杭州和美国的双机房部署 ...