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矩阵是是影片是否被某用户看过,用户看某部电影次数。



从数据中提取特征

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

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

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

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






Hadoop、Spark开发入门视频书籍推荐

本人大数据学习菜鸟一枚,从零开始学习大数据,这里分享我的学习过程。自学是一个考验毅力的过程,当然对自身也是一个锻炼提高的过程,但是有时候,从零开始学习,举步维艰,个人深有体会。离开学生时代的填鸭式教学...

Spark视频教程全集

  • 2016年05月19日 17:39
  • 308B
  • 下载

3000门徒内部训练绝密视频(泄密版)第2课:Scala面向对象彻底精通及Spark源码阅读

Scala面向对象彻底精通及Spark源码阅读不用写public class中的publicclass Person { private var myName = "flink" ...

Sorenson Spark视频编解码器

简介   Sorenson Spark是Flash MX内置的运动视频编解码器,它让我们能够在Flash MX中添加视频内容。Spark是一个高质量的视频编码/解码器,它可以在提高视频质量的同时...
  • xuxinyl
  • xuxinyl
  • 2012年04月09日 18:38
  • 1121

Spark大数据视频教程全

  • 2016年08月20日 07:10
  • 38KB
  • 下载

2017年最新高清Spark深入剖析源码解析与性能优化视频教程

目录 Spark深入剖析By中华石衫 第1章 Spark核心编程 1.1、Spark基本工作原理与RDD-1.mp4 1.2、Spark基本工作原理与RDD-2.mp4 1.3、使用Java...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spark做视频推荐
举报原因:
原因补充:

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