当前课程知识点:高级大数据系统 >  Machine Learning System >  Case Study: Recommendation >  Video

返回《高级大数据系统》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《高级大数据系统》慕课在线视频列表

Video课程教案、知识点、字幕

下面我们会通过这个

一个具体的推荐的例子

来告诉大家

怎么样用mahout的

这种分布式的这种机器学习系统

来实现一个具体的

这种机器学习的一个任务

那么为了帮助

这个系统课上的同学

了解一下推荐

我们准备了一个简单例子

让大家体会一下

在这种有数据的这样一个情况下

到底是怎么样去做推荐的

那么推荐实际上

是一个非常典型的应用

那么从这种互联网诞生到现在

实际上有大量的这个研究都去

集中在怎么样提供好的

这种服务质量的推荐任务上

那么推荐它本质上

有些什么样的考虑

实际上我们就是想要挖掘出用户

对于某一些他之前没有看过读过

或者听过的这些书电影或者音乐

他的兴趣会有多强

本质上

我们是要把这个东西挖掘出来

那么这个发展

实际上经历了一系列的探索

从最开始

我们要去了解这个内容本身

比如说我们发现一个用户

他喜欢听古典音乐

我们就会去把其他的古典音乐

推荐给用户

然后从这条脉络

发展出了一系列的这个研究工作

那么到另外一种研究方向

就是说

我可以不知道这个用户是谁

我也不知道这个内容到底是什么

但是我知道用户和用户之间的

这样一个关联

利用这样的关联

我也能做到推荐

那么这是推荐系统

从内容到这种关联

它经历了一系列发展

那么从算法上

它也从原始的这种内容的相似度

发展到之后的协同过滤

挖掘用户对相同内容评判的

这种相似度

那么以及到后面的

这种矩阵的分解

那么在工业界也得到了

这种广泛的应用

那么这堂课

我们会用一个比较简单的

基于这种用户相似度

对内容相似度的

这种评分的这样一个机制

来做推荐的这样一个例子

帮助大家理解

如果我们要做并行的话

我们大概会有什么样的挑战

那么在这个里面

它的一个总的一个方法叫做

这个协同过滤collaborative filtering

那么协同过滤

有很多种这种实现方式

它核心的思想是要发现用户

或者内容之间的相似度

发现的过程中

我们不需要去了解用户的特征

和内容的特征

我们只需要去了解其他用户

或者其他的内容

在这上面的一个相似的一个投影

协同过滤

今天在大量的系统中

被得到了广泛的使用

它大概可以分成三类

基于用户的

通过用户对内容的评分

或者是点击的记录

我们去发现用户和用户的相似度

比如两个用户

他们同时看过三部电影

那么我们就说

这两用户在电影的口味上

可能具有一定的相似度

它本质上是这样一个原理

通过这种相似度

如果其中一个用户

看过一个新电影

而另外一个用户没有看过

我们可能就会把这个新电影

推荐给另外一个用户

那么item base实际上

它是把用户反过来

我们想通过用户的点击情况

发现内容的相似度

我们不需要去看内容本身

我们不管它是一个古典

或者是一个现代的音乐

我们只需要去看它的用户

比如两个内容a和b

他们同时被三个人看过

那么这三个人我们分别是一二三

这时候

如果这个内容a又被第4个用户

用户4看过

我们可能有理由相信

这个第4个用户

可能也会喜欢另外一个内容b

第三种简单的方法就是slope-one

就是我们在参考的时候

仅仅是去参考用户对不同内容的

打分的差值

所谓的slope

这是协同过滤的

一个比较简单的方法

这也是我们今天想通过这个例子

来给大家普及一下

推荐基本的这样一个思路

我们来看slope-one

在这个例子当中

实际上我们有这样的一个表格

这个表格是一系列的顾客

他们对不同的这个商品

给了一个评分

比如这个用户对item A

有一个5分

有一个三分

然后这个用户有这样的一些评分

那么在这个表格当中

存在着一些表象

比如说这里是他并没有去标的

那么在实际的情况中

这种没有标的内容

可能要远远的多于已经标的内容

那么整个矩阵会呈现出

标过的打过分这个内容的

这种稀疏性

这个矩阵是个非常稀疏的

一个矩阵

那我们的例子

仅仅有这两个地方没有标出来

那我们就想通过已经打分的内容

把没有打分的内容给猜出来

如果我们能猜出这个

我们就可以根据打分的高或者低

来对用户进行推荐

我们来看通过这个slope-one

我们是怎么样来做到这一点的

我们在slope-one里面

有一个假设就是用户的评分

他们会有一致性的偏好

那我们利用这种一致性的偏好

来计算出没有打分的位置

应该估计会是多少分

我们来看这个过程

它是怎么样进行的

我们在做slope-one的时候

每一次我们仅对这个

不同的item之间进行参考

在我们这个例子里面

当我们必经参考来

对a的这个没有打分的位置

进行猜测的时候

我们会把另外一个item

给隐藏掉

或者另外多个item

给隐藏掉

那我们仔细观察这两列

它具有什么样的特性呢

就是John对a的打分是5

对b的打分是3

然后Mark对a的打分是3

对b的打分是4

那我们就会发现这样的差值

也许能够用来帮助我们

预测出新的位置来

那具体是怎么预测的呢

我们来这样看

这边有两个内容

我们把它叠加起来之后是8

这边有两个内容叠加起来是7

那么8比7大了1

而这个1是由两个人贡献出来的

我们把它除以二等于0.5

也就是a这个item

会比b这个item

在已经有的这个参考的数据点上

平均高0.5

那么我们就有理由去猜测

lucy打的时候

可能也会和其他用户打出来的

这个差值一致

也就是说

他打的分可能会是2加上0.5

这样一个值

那么会和其他的是匹配上的

那这就是我们整个计算的过程

我们首先看出这个其他用户

打分的用户

在这个item上

打分的这样一个差值

因为每次我们只参与一个

这个新的item

它的这样一个评估

那我们得到这个差值

再把这个差值用到

给定要猜测的这个用户

和item上

那么我们得到一个

新的这样一个更新

在我们具体的例子里面

就是将这个差值的平均值

加到这个已打分的项目上

来猜测出未打分的这样一个项目

那么相同的办法

我们也可以把它运用到另外一列

或者说另外的其他列上

我们这边只有三列

那我们把这个数据

运用到这一列的时候

计算方法是一致的

我们发现已经打分的只有一列

那这一列的差值是三

所以我们就有理由

把没有打分的这一列

把它加上一个

加上一个差值三

得到没有打分的一个猜测

也就是说

通过item c

进行猜测的时候

我们会给他一个八这样一个分值

那在下面我们已经可以看得到

这个过程会这个不断的进行

把所有的这个列拿出来做参考

看看它最后会打多少分

那么这个过程进行之后呢

我们会需要对所有的结果

进行一个整合

整合的办法

在slope-one里面也很简单

我们只需要用参考过的这个

item的数量

进行一个加权就可以了

那么在我们这里面

这个加权的办法是这样的

我们刚刚说通过

item b这一列

进行参考的时候

需要给它2.5分

那我们参考的时候

用了两个用户的数据

所以我们给它的权重是2

那么通过item 3

对A进行评估的时候

我们用了只有一个有效数据

所以我们乘的这个权重是一

那么最后

对它进行加权平均

得到值是4.3

也就说我们猜出了

lucy对于item a

打的这个分

可能是这个4.3分

有了这个之后

实际上我们就可以迭代的进行

我们可以进一步算出其他的用户

会打什么样的分

当然这个过程

也依然是会有一些技巧的

比如说我们对这个矩阵

填充到什么样的程度

我们才能够进行这样的操作

比如说这个矩阵异常稀疏的话

可能我们这样的方法

得到的结果就是一个

不太可信的一个结果

因为我们可能参考了

用户非常随机打出来的

这样一个分值

同时大家也可以去考虑这种方法

它的其他的局限性

比如说这种打出来的这个值

可能并不具有什么代表性

因为我们猜测出来的分值

它基于的假设是用户会有

一致性的这种偏好

那这种偏好

在你的应用中到底存不存在

这大家去想的

当然slope-one是

推荐最初级的一个办法

是帮助我们去理解这个过程

可以并行的这样一个方法

那它在实际系统中可能并不会

真实的去用到

但大家需要注意的是

slope-one

大家可以想象

其实它具有很好的这样一个

并行性 对吧

每一列我们可以单独的去算

比如说我们可以把Map出去

我们可以让每个Map

去度固定的一些列

然后把这些列读出来之后

我们可以去做一个加和

做一个平均

就可以得到当前这个列

对于未知列它的一个猜测

然后我们在做

reduce的时候

可以把这些列的值做一个叠加

如果我们做猜测的过程的数据

会非常大

然后计算的过程如果不是用

简单的加法

而是用一些比较复杂的

操作的时候

那么Map reduce

就可以简单的

把这个任务给并行化

提高这个在并行环境底下

它的这样一个运算的一个速度

我们通过slope-one向大家介绍

很多的这种推荐算法

实际上是可以并行的

那么并行了之后

我们就可以利用到

分布式文件系统

可以利用到hdoop

它的一些并行的特性

可以来达到一个比较好的

计算速度

那么实际上这个思路

可以推广到其它的算法

那么我们在这里面略去了

一些复杂算法的并行的一个过程

大家可以去练习

如果当大家用到mahout或者

其他系统里面的一些算法的时候

可以去练习一下

怎么样用spark

怎么样用mapreduce

来做这样一个任务

当大家知道这个原理之后

大家在做系统真正优化的时候

可能会有更多的体验

那么我们后面会来真实的

给大家看

从代码层面我们怎么样去

用mahout

来实现一个推荐的系统

高级大数据系统课程列表:

Introduction to Big Data Systems

-What is big data and what is big data system?

--Video

-Problems in big data systems?

--Video

-Overview of the course

--Video

-Principles of big data system design

--Video

Basics of Linux Data Processing

-Manipulating Data on Linux

--Video

--Video

--Video

-Basics of Linux Data Processing--Manipulating Data

-Running Commands on a Single Machine

--Video

-Running Commands on a Single Machine--作业

-Using a Linux Cluster

--Video

-Using a Linux Cluster--作业

Distributed File System

-Storage for Big Data Computing: Distributed file system

--Video

-Storage for Big Data Computing: Distributed file system--作业

-File system and GFS

--Video

-File system and GFS--作业

-Understanding HDFS using Legos

--Video

-Understanding HDFS using Legos--作业

-File System Implementation and DFS

--Video

--Video

-File System Implementation and DFS--作业

MapReduce

-What is MapReduce and why

--Video

-What is MapReduce and why

-Learn MapReduce by playing with cards

--Video

-Processing pattern

--Video

-Processing pattern--作业

-Hadoop

--Video

-Hadoop--作业

-Algorithms in MapReduce

--Video

-Algorithms in MapReduce--作业

-Tutorial

--Video

In-memory Processing

-Background

--Video

-Background--作业

-Spark

--Video

-Spark--作业

-Use Spark for data mining

--Video

-Use Spark for data mining--作业

-Spark data processing

--Video

-Spark data processing--作业

-Experiment in Spark

--Video

-Experiment in Spark--作业

Streaming Data Processing

-Introduction to streaming data processing

--Video

-Introduction to streaming data processing--作业

-Storm

--Video

--Video

--Video

-Storm--作业

-Spark streaming

--Video

--Video

-Spark streaming--作业

NoSQL

-NoSQL introduction

--Video

-NoSQL introduction--作业

-Common Advantages

--Video

-Common Advantages--作业

-Bigtable

--Video

-Bigtable--作业

-Master Startup

--Video

-Master Startup--作业

-HBase

--Video

-HBase--作业

Graph Processing

-What is GraphDB and Graph data processing

--Video

-What is GraphDB and Graph data processing--作业

-Graph systems

--Video

-Graph systems

-Example of a GraphDB

--Video

-Example of a GraphDB--作业

Machine Learning System

-Mahout

--Video

-Mahout--作业

-Case Study: Recommendation

--Video

-Case Study: Recommendatio作业

-Recommendation in Mahout

--Video

-Recommendation in Mahout--作业

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。