00:00
我们前面讲到推荐系统根据数据源可以分成三类,之前我们已经讲了,诶基于用户数据的话,那我们做出来的是一个基于人口统计学的推荐,还有用户画像什么的,对吧?如果基于内容去做推荐的,基于这个物品信息的话,我们做的是一个基于内容的推荐,那这个里边我们又讲到了特征工程啊,怎么样提取它的特征啊,啊,最后还讲到了t fidf,对不对,然后接下来我们的第三大类是不是就是。基于。用户的行为数据啊,基于用户和物品的关联,所以这一部分我们把它叫做基于协同过滤的推荐算法啊,之前也已经跟大家讲过,协同过滤简写叫CF,对不对啊,它的含义就代表是说我们大家要联合起来协同作战,然后呢,诶用它的这个特征,用户的特征和物品特征要去匹配起来做过滤,做筛选,对不对,做一个推推荐,所以这就是协同过滤的意思啊,当然我们之前已经给大家讲到了,是不是可以再根据这个推荐的原则做划分,可以分成基于净灵的协同过滤,那它是不是就是我们说的还是。
01:15
物以类聚,人以群分对不对?那这个具体划分的话就可以,你如果是基于用户之间的相似度的话,这个叫user CF,那基于物品就叫item CF对不对?另外还有一类是基于模型的协同过滤啊,这一部分我们到后面会给大家重点讲解,那首先我们先来看一下。协同过滤跟这个前面讲到的基于内容有什么相同或者不同?那大家会想到协同过滤,它主要应用的是不是用户的行为数据啊,所以行为数据里边,首先我们跟这个CB如果要去比对的话,如果我们的物品信息,物品的一些内容直接没有办法拿到的话,那是不是基于内容就没法推了,但是用户的行为数据是不是只要我们的系统上线,网站在正常的运行,运行一段时间之后总是可以获取到的,所以CF这个协同过滤的推荐它是总可以。
02:18
基于一些行为去给其他的用户做出推荐的啊,这是他的一个比较好的一点,另外就是他在做推荐的时候,是不是不仅仅考量了。物品本身的关联啊,因为它基于的是用户的行为数据,比方说我们是不是可以基于用户对物品的评分,那么物品用户对物品的评分,评分的高低,它是不是不仅仅表示用户对物品的兴趣,还能够表达出物品本身的质量啊,这一部分物品本身的质量可能就是在这个基于内容里边没有办法表现出来的,对不对啊,我们根据他这个一个物品,比方说电影,我们根据他的导演,根据他的这个标题,根据他拍摄时间,他的这个类别,根本看不出这是一个好片还是差片,对吧?那只有说看了用户评价之后才能判定,所以这一点上CF要比CB要更好一点,那大家注意,那CF是不是就没有问题呢?
03:23
CF,之前我们提到它的问题在于是不是没有办法解决冷启动问题啊,如果一开始你上来之后没有历史数据,没有行为数据,那你怎么推呢?哎,这个时候是不是就只有基于,哎,可能我们一开始收集一些用户信息,给一些兴趣标签对不对,然后收集一些物品信息,这样才能够去做我们的冷启动啊,所以大家看到真实的项目,真实的应用当中,一定是把它们结合起来用的,各有利弊。好,那接下来它分为两类,基于近灵和基于模型,我们首先看一下这个基于近灵啊,还是给大家看一个例子吧,大家看一眼,这是一个电影的评分矩阵,有四个用户给五个电影,分别大家看到有些是空着的,空着是不是代表他没看过啊?
04:12
没评分,这是真实的状态对不对?那已经有的这里边的数据大家来分析一下,大家觉得应该给carry这个人C这个人abcd啊,C这个用户推荐泰坦尼克号吗?哎,为什么推荐啊?哦,大家可能是看到有些同学一眼敏锐的发现了他们之间的关联,对不对?这个C是不是跟A比较接近啊,因为我们看到爱丽丝这个人,他是不是对黑客帝国和虎胆龙威评价都比较低,他可能对这种动作片不太感兴趣,那同样凯瑞是不是评分也都不太高啊,一个二,一个S3稍微高一点,也都不太高,对吧?那爱丽丝喜欢的是阿甘正传和机器人总动员,那这里边的C是不是也喜欢这两个啊?那Alice丝很喜欢泰坦尼克号,给了五分,那大家就会想到,是不是我们预测凯瑞应该也对他有一个高分评价?
05:12
那是不是应该给他推荐,哎,所以这里就是大家想到的,我们这里直觉上其实就应用了一个。基于什么的推荐呢?对,基于镜灵的推荐,那我们的镜灵是基于用户还是基于电影的,我们是基于用户,他们之间的关联对不对?而且我们用到的数据没有用到用户自身的兴趣,呃,数据用到的都是他已经有的行为数据,评分数据对不对?根据这个直接就能看出它们俩相似相似,然后就可以给他推荐了,那从另外一个角度看,我可不可以?找相似的电影呢?我们刚才找的是相似的用户对吧?相似的电影可以找吗?泰坦尼克号这是一个电影,那大家看所有用户给他的评分是不是相当于他的一组特征啊,那这组特征跟谁相近?诶,大家会看到他应该跟阿甘正传比较接近对不对?阿甘正传这个爱丽丝给他评分都是五,Bob给他评分一个一,一个二都很低对不对?这个D这个用户评分都是三啊,不好不坏对吧?C这个用户是不是比较喜欢阿甘正传啊。
06:29
那是不是他也很有可能喜欢泰坦尼克号诶,所以大家会看到,从另外一个维度我们看列的话,这也是基于精灵的推荐,这是不是就是基于物品相似物品的一个推荐啊。啊,刚才我们这两种分析其实就已经说出来了,基于用户的精灵推荐,那这个就叫做user CF对不对?然后基于物品的就是item CF,好,那接下来大家再把这个图回忆一下啊,就是我们只有行为数据对不对,根据这个判断谁跟谁相近,呃,那这个基于用户的协同过滤user CF它有什么特点呢?那首先大家会想到它其实在计算的时候选取的类似于KNN对不对,是不是也要选取最相近的K个精灵,然后去分析,呃,他们到底给哪个这评价比较高,然后我把它推荐给这个当前的用户对不对?啊,所以这也是类似于KN的一个想法。
07:29
另外大家会想到他是不是跟之前讲过的基于人口统计学的推荐有点类似啊?都是找用户之间的相似度,对吧,那它的区别在哪里呢?是不是就是基于的数据不一样。基于人口统计学,我们做用户画像的时候,收集的是用户本身的信息,对吧?然后这里user CF用的是他的行为数据,对不对啊,已有的评分数据,当然了,在做用户画像的时候,有时候其实会把他俩就合在一起了,既用本身的信息,也用行为数据抽出来,是不是都可以提取出标签,提取出标标签都可以认为这就是用户的一个画像,对吧?啊,所以这其实大家前后尽管是把它分开讲,大家可以再把它串联起来,那接下来我们要讲的是这个item CF,基于物品item CF,那这个图大家再回忆一下对不对,也没有物品信息,直接根据他们互相之间的行为数据,这些关联的数据来把它相似度找出来做推荐,那item CF。
08:35
它跟之前我们讲的基于内容的推荐有什么区别呢?啊,它对它们是不是都是找它们的相似点,是都是找这个物品的相相关程度对不对,但是他们是不是也是基于的数据不一样,我们基于内容的推荐,基于的主要就是物品的基本信息,对吧?那这里边我们基于的是不是。
09:00
行为数据,关联数据啊啊,所以我们这里边举的例子都是评分数据,所以item CF和基于内容它们的区分主要就在这里,那然后这里给大家提一个问题,同样是基于近邻的协同过滤,那user CF和item CF怎么选择呢?大家前面直观的这个呃想法,直观的这个反应,第一眼看出来的是这个user CF对不对?那大家想item CF有用没用,其实也有用对不对?那他们俩到底用在什么样的场合,或者说到底哪个好哪个坏呢?这个时候就要区分不同的应用场合了,比如说在电商,电影、音乐这些网站里边,大家会想到。啊物品,当然电商里面物品也很多,但大家想象想想一下,是物品多还是用户更多呢?其实还是用户更多,对不对,而且物品相对来讲是比较固定的,对不对啊,上架的这些商品是比相对比较固定的,那对于另外一些网站,新闻网站。
10:11
文章,它里面全是新闻,全是文,文章对不对,它而且它的更新换代非常的快,对吧,更新的速度非常的快,那在这种情况下,反过来物品的数量是不是反而有可能比用户还要多啊,哎,所以大家看这两类问题是不是完全不一样。有关联,但是其实是不同的。那我们想象一下,在什么情况下应该倾向于用user CF,什么情况下用item CF呢?用户多哦,大家想到用户如果多的时候,诶,是不是物品应该比较固定,比较稳定啊,那用item CF是不是相对会比较稳定一些,效果可能会好一些,对不对啊,如果说反过来物品多的时候,那是不是用user CF有可能会更好啊,确实是这样的,那我们这里做一个比较啊,首先我们可以说一下这个user CF user user CF是一个其实是最古老的推荐算法,因为我们直直观的这个第一眼看上去是不是想到的第一个也是UUCF啊,它应该是在就是90年代的时候,最早应该是九二年的时候啊,就已经提出了,最早是用在邮件过滤系统里面做邮件过滤的user CF,呃,然后后边就用到了新闻过滤里边,所以它更多的应用场景其实是在新闻推荐系统,然后这个新闻个数可能比用户大。
11:45
的时候,更新速度比较快的时候,这个时候user CF是不是就会更稳定更好一点啊,诶,所以这是user CF的一个应用场景,那item CF呢,其实是后来在呃,就是在这个user CF的应用过程当中,亚马逊最先提出来的,它其实在基于user CF的基础上做的一个改良,因为他会发现在大部分的这个网站里边,是不是物品个数小于用户个数啊,而且物品的数量,它的这个相似度相对是比较稳定的,上架之后产品它的内容就是这些相对比较稳定,所以我基于他去做推荐的话,它的实时性是不是就会更好啊啊,所以现在来讲的话,Item CF其实是推荐策略的一个主流啊,当然就是说基于行为数据的推荐很多都用这个item CF对吧?啊,包括现在这个,呃,亚马逊、Netflix YouTube。他们岂不。
12:45
其实基于这个节能过滤的推荐,很大一部分都是这个item CF。好,这是这一部分内容,所以大家会看到推荐策略的选择其实是和具体应用场景有关联的,对吧,而且有很大的关系。好,那接下来我们来说一下这个协同过滤的优缺优缺点啊,它其实比较简单,前面其实我们也已经提到了,它的好处在哪里呢?一方面他是不是可以借鉴其他人的经验啊。
13:16
就不要求我们一定要得到这个用户的信息,或者说物品的信息,对不对,然后他可以直接去借用别人的经经验,别人喜欢的东西,我就可以给现在的人啊,就是另外的用户去做推荐啊,他就是不是很容易推出来,看起来好像没什么关联,但是还有可能你有可能喜欢的东西,所以它的新颖度是非常好的。另外还有一个就是说他这个推荐的过程当中,不需要严格的建模,甚至不需要你对它的这个特征描述,可以理解,比方说前面我们做这个user CF的时候,我们认为这个泰坦尼克号跟阿甘正传很接近,有有道理吗?或许有一些深层次的道理,对不对?
14:05
但事实上我们直接就看它的评分相近,我们就认为它接近了,这是不是可以,就我们不需要能表达出来,能描述出来它到底是什么道理,对不对,只要它好用,只要它接近就可以了,哎,这就是这个,呃,协同过滤它的一个特点,那么。当然了,协同过滤也有缺点,它不可避免的最大的一个缺点就是它是不是基于历史数据啊,所以上来之后有冷启动的问题,另外还有就是说历史数据如果少的话,是不是推荐就会不准啊,这也是CF的一个很大的问题。另外还有就是说,呃,历史的用户的历史偏好,大家会想到评分矩阵,比方说你不可能看过所有的电影,对不对,往往得到的就是一个稀疏矩阵,那稀疏矩阵在做这个计算的时候,你去比对他们的这个相似程度,是不是就会有很大的问题啊?呃,这个也是一个很大的问题。
15:03
好,那接下来我们就给大家介绍另外一部分基于模型的协同过滤,前面我们讲的是基于竞邻的,对吧?基于模型,顾名思义大家就会想到我是不是要抽象出一个模型,创建一个模型啊,然后用一些机器学习算法去把这个模型训练出来,最后得到,诶,我到底哎,应该给什么样的人推荐什么样的物品,对吧?那他基于的既然是基于模型的协同过滤,那他基于的数据是不是还是行为数据啊,所以我们的目标是要在行为数据里边找出他们之间的关联,找出他们之间的特征,好,那么他的思想是什么呢?啊,这个基于模型的思想其实跟我们之前的这个想法也是一样的,是什么呢?就是用户有一些特征决定他的偏好,物品也有一些特征决定,诶有些用户被会不会选择它,对不对,呃,这就是我们说的用户,他可能是一个可能是一个文。
16:03
一青年,那物品可能它是一个文艺片对不对,如果这两个特征相匹配,是不是他们之间就应该去做推荐啊,啊就应该有这样的一个关系,所以这个其实跟我们之前讲的用户画像,我们的特征提取,特征工程是不是都是一回事啊,大家可以想到,其实本质都是一回事儿,所以在很多有一些公司里边啊,他对这个推荐系统的一个想法就是什么呢?就是一切接标签,换句话说就是不管你用什么方法,基于经营也好,基于模型也好,你是基于这个,你是用户画像也好,还是这个,呃,基于内容的特征提取也好,对吧,或者是你基于这个协同过滤也好,最后拿出来的就全都是标签,用户有用户的标签,物品有物品的标签,最后就是匹配,对吧,啊,有些他最后就是把所有的东西全揉在一起,最后就是全当成标签来做了啊,当然这也是一种想法,但是大家需要知道背后还有各种各样的这种。
17:03
分类对不对?好,那接下来大家会想到基于这种思想的话,我们的数据是行为数据,那是不是相当于我们建立模型,就是要从行为数据里边提取特征,打上标签啊,哎,如果说之前我们用户画像是只给用户打标签,然后基于内容的那个特征提取是只给物品打标签的话,大家想这里是行为数据,它是不是物品跟用户有关联啊,所以我们的目标是直接提取出来之后,对用户和物品同时打上标签。大家就会想到这样打上标签之后,哎,对应的是不是就可以去匹配了,或者说根据它的这个特征提取出来是不是就可以去算相似度了,对吧?啊,对应的这个特征就可以算相似度了,所以大家会看到这和前面我们讲的这个人口统计学用户标签,还有这个基于内容的物品标签本质一样,都是特征的提取和匹配,那如果说有显性特征的时候,像前面我们提取出来这些标签,对吧?我们是不是直接可以匹配啊,制定一定的规则对吧?如果没有的时候,我们基于这个行为数据发掘出来的往往是隐藏的特征,对吧?
18:22
那么这里就用到了隐语翼模型,就是我们接下来要给大家讲的这一部分内容,好,那么呃,大家会想到就是这里再给大家把把基于模型和基于近邻做一个相关的这个对比啊,大家会看到基于模型的协同过滤最最常见的一种方式是什么呢?那就是我们先拿到用户所有的评分数据,比方说以评分为例,对吧?拿到所有的评分数据,大家会想到里边是不是一个稀疏矩阵啊。有一些是不是空着的啊,那大家就会想到我训练一个模型,是不是就可以预测出来用户到底有什么特征,物品有什么特征,然后对应的去做一个匹配,是不是就可以预测这个用户会对物品有一个什么样的评分啊,评分高的提出来是不是就是应该给他做推荐的内容啊?诶这其实就是我们基本的一个想法,那基于近灵和基于模型有什么区别呢?大家会看到他们用到的,首先我们这里都是协同过滤嘛,它用到的是不是都是行为数据啊,那基于净灵是怎么用呢?
19:31
他是不是拿着那个行为数据直接就找他的净名了,然后去预测你对他喜欢不喜欢对不对,这是不是一个类似于分类的一个过程啊,对吧,根据近灵直接找他的这个分类标签,而这个模型的话,大家会想到不是直接用行为数据对吧,而是基于行为数据要去做一个模型,训练一个模型,然后找到它的内在规律,找到用户和物品的特征,最后是不是再来做预测啊,那这个就有点类似于回归了,对吧?啊,这只是类似啊,不是严格意义上的一样,好,那么啊,这就是我们提取。
20:12
说到的啊,就是我们让模型如果去发掘物品的和用户的潜在特征的话,这种模型就叫做盈语翼模型l FM latent factor model啊,直接翻译其实应该叫潜在因子模型,对不对啊,往往把它叫做引语E模型,好,那么这里边引语音模型,大家会想到这引语音模型到底是个什么东西呢?它的目标是要揭揭示隐藏的特征,然后这些特征就能够解释你为什么,哎,预测它给一个高分对不对?哎,那大家会想到这些特征是不是很可能就没有办法直接描述啊,我可能根本不知道这到底是什么玩意儿,但它就是我,我分析完了之后,它可能有这些特征,所以这个有时候就类似于玄学了,对吧?我也不知道为什么,但它就是好使啊,我也不知道这个这个方法到底它它是什么原因,但是它结果就是有效啊,所以这个东西还是比较神秘的一个东西啊。
21:12
呃,那大家可能听说过有一个例子啊,不知道大家听说过没有,机器学习里边有名的一个例子叫啤酒与尿布,大家听说过吗?对这个啊,当然后来有人说这个可能是一个杜撰出来的一个故事啊,不管怎么样吧,但是我们觉得他还是挺典型的,对吧?他说的是什么呢?有同学可能没听说过啊,对对,他说的是超市里边,超市里边这个超市经理,他分析这个超市里边数据的时候,看数据的时候,突然发现一个比较特别的情况,什么呢?就是往往一单购物里边啤酒跟尿布会同时出现,诶他就觉得很奇怪,这个东西就就就很很奇葩对不对,这两个好像看起来,难道说喝啤酒喝多了会尿裤子吗?这个这完全没道理啊对吧?那那那你说这个他原因是什么呢?啊,他他就没管这个东西到底是怎么回事,他就把啤酒跟尿布这两个售价放在一起。
22:09
哎,然后之后发现这个效果果然很好,两个销量都双双上升了,那大家看到这个过程当中,其实他就不知道这个关联是什么,对不对,但是我只知道它好像有关联,那我就把它放在一起,这个效果就好使,当然了这个背后可能是有一些隐藏规律的,对不对?呃,大家可能也知道为什么他会,呃,就是会同时出现在一个购物车里边呢,哦,对,因为对什么人会去买尿布呢?往往是家里边刚好有一个小孩子对吧?有一个小婴儿的这个家庭会去买尿布,那一般是谁去买尿布呢?啊,因为孩子比较小的时候,是不是妈妈得带孩子啊,所以往往去买尿布的是爸爸对吧?派一个活儿去,就去给娃儿买些尿布去,那这个年轻的爸爸去了之后,一般大家年轻的男性一般都不怎么逛超市,对不对?好不容易去一趟超市,还不买点自己想要的东西哎,所以年轻的男性往往都。
23:10
比较喜欢喝啤酒,那他顺便就买点啤酒给自己买点东西,那所以这是他深入分析的话,发现他其实还是有关联的,但如果我们没有找到的话,是不是这个这这些关联,这些特征就类似于一个玄学啊,但我不知道为什么它就是好用,所以这里的盈语义模型其实跟这个也类似,我们可能找到的这些隐藏特征,可能我们不知道它为什么,不知道它到底是什么什么样的状况,但是它就是好用,这就够了,对吧。可能它本身本质里边还是有深层次的规律的,那至于它到底是什么规律,大家如果较真的话可以去研究,但这个其实对于我们这个推荐系统而言,效果上而言啊,并不重要,对吧,我直接它这个好好使就可以了,所以我们就当成玄学去去就用它就可以好,那么这里边大家注意啊,那我们怎么样处理这个盈语义模型的英音模型,怎么样去揭示这样隐藏的特征呢?我们其实是要对本身的这个,比方说评分矩阵,原始的这个数据要做一个降为分析的。
24:19
为什么呢?做降维分析之后,分解之后呢,我们是把一个大的矩阵要分解成两个矩阵相乘,分解之后的矩阵就可以代表用户和物品的隐藏特征,这是一个意义,另外一个意义,大家会想到我们平常这个CF算法协同过滤是不是非常依赖历史数据啊?而我们原始的历史数据里边往往都是稀疏矩阵,对不对,为了解决这个稀疏的问题,是不是还应该把这个原始数据做一个降维处理啊,所以大家看到这里边这个降维分析,降维处理它既是手段又是目的,它它首先是处理这个稀疏矩阵的一个手段,另外它是不是本身我们就是要通过降维找到它的这个隐藏特征啊。
25:06
好,那接下来呃,另外我们说一下它的一些具体实例啊,就是前面已经提到的,比方说lap p sa DA,还有SVD,基于奇异值分解这样的一个SVD,这其实就是后面我们讲到的这个矩阵分解的一个基本的,呃,就是思想或者说算法的原型啊,大家可能知道之前给大家提过,就是我们这里讲的这个ars,它基于基于的这个英语音模型的分解,有些书上会把它叫做SVD加加啊,所以这里给大家稍微提一句啊。
我来说两句