spark做视频推荐

原创 2016年08月28日 15:06:23

推荐系统最常用的是协同过滤算法,下面我们来分析下同过滤算法

协同过滤算法可分为:

1.基于用户的(UserCF)

2.基于商品的(itemCF)

3.基于模型的(ModelCF)

按照模型可以分为

1.最近邻模型:基于距离的协同过滤

2Latent Factor Model(SVD):基于矩阵分解

3Graph:图模型


1.基于用户的协同过滤-基于用户相似性

通过不同用户对物品的评分来预测用户之间的相识度,基于用户之间的相似度做出推荐,就是给用户推荐和他兴趣相似的其他用户喜欢的物品

物品/用户    物品A     物品B      物品C                 物品D

用户A           1                         1                      推荐

用户B                         1 

用户C            1                        1                        1 


我们要给A推荐物品,因为用户A和C买的东西非常相似,用户C买了物品D,所有我们可以給用户A推荐物品D


基于UserCF的思想就是:基于用户对物品的偏好的相似性(通过用户对物品的评分,用户查看物品记录,用户对物品评论),找到相邻用户,将相邻用户喜欢的我推荐给当前用户。


基于商品(itemCF)-基于商品相似性

基于用户的协同过滤,通过用户对不同我的评分来预测物品之间的相似度,基于物品之间的相似度做出推荐。就是,给用户推荐和他之前喜欢的物品的相似的物品

用户/物品    物品A   物品B    物品C

用户A           1                      1

用户B           1          1          1

用户C           1                     推荐


因为用户A和用户C都买了物品A和物品C,说明物品A和物品C非常相似,用户C买了物品A,所以推荐用户C买物品C







推荐系统中迭代最小二乘算法的实现

实现代码:

inport org.apache.spark.ml.evaluation.RegressionEvaluator

import org.apache.spark.ml.recommendation.ALS


case class Rating(userId:Int,movieId:Int,rating:Float,timestamp:Long)

def parseRating(str:string):Rating={

val fields=str.split("::")

assert(fields.size==4)

Rating(fields(0).toInt,field(1).toInt,fields(2).tiFloat,fields(3).toLong)

}

//加载数据

val ratings=spark.read.textFile("data/mllib/als/sample_movielens_ratings.txt").map(parseRating).toDF

//分成训练集和测试集

val Array(training,test)=ratings.randomSplite(Array(0.8,0.2))

//在训练集上使用迭代最小二乘建立推荐模型

val als=new ALS().setMaxIter(5).setRegParam(0.01).setImlicitPrefs(true).setUserCol("userId").setItemCol("movieId").setRatingCol("rating")

val model=als.fit(training)

//在测试集上计算均方误差评估模型

val predictions=model.transform(test)


val evaluator=new RegressionEvalutor().setMetricName("rmse").setLabelCol("rating").setPredictionCol("prediction")


val rmse=evaluator.evaluate(predictions)

println(s"Root-mean-square error=$rmse")


topKRecs=model.recommendProducts(userId,K)

movieForUser=ratings.groupBy(user).mapValue(list).lookup(userId)

print moviesForUser





spark的使用矩阵因子来来做相关推荐

A*B的矩阵M=A*L矩阵N*L*B矩阵H

该模型称为潜在特征模型,旨在寻找那些潜在的特征,间接表示用户物品评分矩阵


隐式矩阵因子

前面我们在讨论显式的一些偏好信息,如rating,但在大部分应用中,拿不到这类信息,我们更多收集到的是隐式反馈信息,这类反馈信息没有明确地告诉某个用户对某个物品的偏好信息,但是可以从用户对某个物品的交互信息中建模出来,例如:一些二元特征,包括是否浏览过,是非购买过产品,以及多少次看过某部电影。


M矩阵是用户对物品的评分矩阵,N矩阵是是影片是否被某用户看过,用户看某部电影次数。



从数据中提取特征

数值特征:这些特征通常是实数或整数,比如年龄,

类别特征:它们的取值可能是状态集合中的某一种,例如用户性别,职业或电影类别,婚姻状况

文本特征:它们派生子数据中的文本内容,比如电影名,描述或是评论。

其它特征:大部分其他特征都最终表示为数值,比如图像,视频和音频被表示为数值数据的几何,地理位置则可由经纬或地理散列表示。






基于spark-streaming实时推荐系统(三)

当博主在写 基于spark-streaming实时推荐系统(一), 基于spark-streaming实时推荐系统( 二)时,心里还曾暗自窃喜:“五年多推荐系统设计研发工作,再搭一套推荐系统还不是轻...
  • pztyz314151
  • pztyz314151
  • 2016年12月17日 15:30
  • 2342

LDA新闻推荐

 针对新闻的个性化推荐,一般情况下不做item-based,这种计算的计算的复杂度太高,资讯的产生以及用户的点击,属于高频度发生的,涉及的推荐数据集合,都是新产生的,item-based的难度有...
  • a936676463
  • a936676463
  • 2015年12月14日 17:30
  • 1359

spark学习7-mllib als推荐引擎学习

继续上一篇学习spark 本次将介绍下如何利用mllib进行商品或者用户的推荐,具体用到的算法是ALS(交替二乘法) 推荐算法介绍 推荐算法可以分为:UserCF(基于用户的协同过滤)、ItemCF(...
  • JThink_
  • JThink_
  • 2015年10月15日 16:26
  • 8457

基于Spark构建推荐引擎

基于Spark构建推荐引擎之一:基于物品的协同过滤推荐http://blog.csdn.net/sunbow0/article/details/42737541Spark构建推荐引擎之二:基于Spar...
  • yizheyouye
  • yizheyouye
  • 2015年07月23日 10:23
  • 1112

【总结】搜狐基于Spark的新闻和广告推荐

原文:http://www.csdn.net/article/1970-01-01/2825353 摘要:对一个媒体网站来讲,一个比较重要的任务就是获取用户对于不同类型文章的兴趣分布。用户的兴趣分布会...
  • dengxing1234
  • dengxing1234
  • 2017年03月10日 17:19
  • 23095

SparkML之推荐算法(一)ALS

ALS(alternating least squares ):交替最小二乘法 ------------------------------------------------------------...
  • legotime
  • legotime
  • 2016年07月06日 07:45
  • 8783

Spark实现之 好友推荐

网上好多好推荐之类的博客都是基于二度好友的推荐,下面介绍基于邻接表的好友推荐的spark实现。 输入: 1 2,3,4,5,6,7,8 2 1,3,4,5,7 3 ...
  • xuedingkai
  • xuedingkai
  • 2018年01月07日 23:12
  • 70

Spark构建推荐引擎之二:基于Spark Streaming 实时推荐计算

1、Spark构建推荐引擎之二:基于Spark Streaming 实时推荐计算 1.1 数据输入模型 1)用户数据输入数据格式: 用户ID,物品ID,点击次数。 2)相似矩阵输入数据格式: 物品ID...
  • sunbow0
  • sunbow0
  • 2015年02月03日 20:44
  • 3254

哪里有好的Python视频教程推荐

它的动态类型有助于代码简化和组合,是许多平台的解释性语言,成为众多程序员编程首选的便携式选项。也许,某天它也会成为你的首选。千锋小编今天把Python教程百度云盘分享给你。...
  • lingtuochuo5048
  • lingtuochuo5048
  • 2017年08月10日 15:14
  • 475

基于spark的精准推荐系统

架构图:
  • tianjun2012
  • tianjun2012
  • 2017年02月16日 16:29
  • 1855
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spark做视频推荐
举报原因:
原因补充:

(最多只允许输入30个字)