00:00
接下来我们就是推荐系统算法的一个详细介绍,那我们首先还是回忆一下推荐系统的算法,之前我们把推荐系统是怎么样分类的,怎么样给大家做了一个分类来着,大家还记得吗?推荐系统按照什么来分?我们其实当时说推荐系统的分类方式有很多种,对吧?而且很多文章和很多这个书里边,它其实都有不同的说法,所以呃,我是相当于把就看到的所有的这些资料给大家做了另外一个维度的总结,就是我们划分推荐系统其实是有不同的划分标准的,有不同的划分原则的,对吧?比方说如果我们从它这个系统是否实时这个角度来划分的话,那是不是就是实时推荐系统和离线推荐系统啊,哎,这是一个基本的划分,那另外有一大划分的方式是什么呢?就是大家会想到我推荐出来到底是。
01:00
每个人看到的都一样,还是说每个人看到的不一样呢?那这就是我们所谓的是否个性化推荐,对吧?那一部分如果看到的每个人看到的都不一样,因人而异,这就是一个个性化的推荐,我们重点当然也是介绍这一部分,那如果不太个性化的那种,大家统一看到的那种,最常见的是什么呢?就是对基于统计的推荐,就是我们去统计一下最近最热门的是什么商品呢?对吧?啊,大家都给好评的是什么商品呢?推荐出来,这就是呃,基本的一个划分,那在个性化推荐这一部分,我们又可以不同根据不同的原则去做划分。比如说我们之前讲过,就是推荐系统,我们是有基本的思想,基本的原则的,对吧?那我们推荐的根本原则是什么呢?我们是不是根据这个原则可以划分成我们可以根据基于相似度去做推荐,对不对,就是相近的就推给他,这是一个原则。还有我们是不是可以根据啊,就是自己已经知道的,已有的知识去做推荐啊,比方说我就知道,诶,我们码农的这一类人就喜欢电脑啊,这个就相当于是也可以认为是一个既定的知识,对不对,我直接就写好了,像这样的人就推荐这一类,这就是比较固定的东西,那这一部分其实就不需要机器学习太多,对吧?啊,那当然我们讲的更多的可能是另外一类,就是基于模型去推荐,就是什么呢?我们的规则可能不知道,可能是由某种规则在里边的,但是我不知道,那我从哪里去得到这个规则呢?建立一个模型,去训练这个模型。
02:41
去学习到这个规则对不对啊,这个过程就是我们基于模型去做推荐的一个过程,这是一个推荐的,算是推荐的原则吧,然后另外一大分类划分的方式是按照什么去划分,对数据源这个大家想一下啊,啊,我们当时给大家讲的后面其实重点就是按照数据源去划分的,对不对?呃,当然实际的推荐系统里边不同的分类方式其实是混在一起的,你说它是基于什么的推荐其实都有,对不对啊,那我们这里的划分主线是按照数据源去划分,比如说我们划分出来之后,我们能够拿到的数据主要有三类,对不对,因为里边我们推荐系统交互的这个实体主要就是用户和物品,那给给谁推荐,给用户推荐,推荐什么推荐物品,那他俩这是我们主要的内容,那我们当然就可以收集到用户的信息。
03:41
另外还可以收集到物品的信息,对不对,这是两大块儿,这个是相当于是实体的信息,另外除了实体之外,是不是它们之间还有关系啊,有关联,对,这个关联就是用户会有行为数据,他可以跟这个物品发生关系,他可以去点击这个物品,可以去购买这个物品,可以去呃给他做评论,对吧,给可以给他打分,所以这些行为数据对于我们而言就是另外一部分重要的啊,就是做推荐的基础的数据。
04:13
所以我们基于这种三三种不同的数据来源可以分成三类推荐,那么我们的算法也可以基于这三种来写,对吧?那么一类就是基于人口统计学学的推荐。那这一类大家想到它的数据源基础是什么呢?就是用户信息对不对啊,基于这个之后,大家会看到我们还提出一个概念叫用户画像啊,这里给大家简单提一下,然后基于物品的信息的话,我们把它叫做基于内容的推荐,呃,这里边我们又提出一个概念给大家讲,就是展开讲一讲,讲特征工程,就是怎么样去提取它的特征对不对,怎么样去处理它的特征,这个叫特征工程,然后最后就是基于行为数据了,行为数据我们专门有一个名字叫做协同过滤,对吧?这这一部分,呃,模型或者算法,我们这部分算法啊,这部分推荐的方式叫做协同过滤的推荐,好,接下来我们就还是来过一下啊,首先基于人口统计学的推荐算法,那大家回忆起来这一个这个图对不对,我们拿到的是不是应该是用户的一些基本信息啊,或者我们可以根据用户的一些呃上下文信息,呃,可以得到一些用户的标签对。
05:33
对吧,那这些标签就属于用户的特征,我们根据用户的特征是不是可以可以找到用户跟一个用户相似的用户啊,可以找到他的邻居对不对,这就相当于是找到他的邻居,然后我们可以想到,如果一个用户喜欢了物品A,那是不是跟他相似的用户也应该喜欢物品A啊,所以我们就把它推荐给这个用户,那这就是一个很简单的基于人口统计学的推荐算法,呃,这个已经讲过,我们就是回忆一下就可以啊,大家来,呃,就是看一些这个这里边的一些概念,首先就是基于人口统计学它本身。
06:16
最重要的信息其实就是用户的基本信息,那如果没有用户基本信息,我们还可以收集什么信息呢?是不是还可以收集一些?呃,就比方说像这个用户上网浏览器里边的登录时间,地域对吧,地点,还有这个,这包括这个时间段,时间长度,这些上下文信息,这是不是都可以收集起来啊,啊,这也是用户的信息,当然它可能没有一些明确的含义,那我们怎么样去处理呢?那一般就可能用一些聚类手段啊,对吧,然后去做一些数据的处理呀,提取出一些特征,给用户打上一些分类标签,那用户是不是就又有了特征了,然后又可以根据这个它的这个特征去做相似的推荐了,呃,那当然了,就是如果说我们已经找到特定标签的用户的话,我们是不是就可以根据预设的规则,或者说训练一个模型去对他做出推荐啊,比方说预设,预设的规则就是说哎,我统计出来我们这一类人标签是程序员,哎,那就给他推荐什么样的东西,对吧,电脑。
07:28
啊,鼠标键盘,呃,这个外设耳机什么的,那如果说我给一定的标签,得到得到这个标标签它是一个这个比方说购物狂,那我给他推荐的原则可能就不一样了,对吧,我可能就是捡捡贵的,或者说捡这个就是呃也有可能啊,呃就是比一个例子,所以说大家会想到这些规则是不是都是可以自己定义出来的呀,那当然了,我们也可以不去自己定义,而是用一个模型去发现这些规律对不对,我们去看看打着什么标签的人,他更喜欢去买什么样的东西,他更适合给他推荐什么样的东西,这就是可以用标签去做这这个事情,好,那接下来的给大家提出一个概念就是。
08:14
用户如果打上了这些标签的话,用户的信息就会标签化,对吧?这个过程往往有一个概念,这就叫做用户画像啊,大家可能平常经常听这个用户画像这个概念对不对?呃,就是这两年也是这个概念会比较火,那很多公司,包括大家会看到用到一些APP啊,一些网站到年终的时候,他甚至都会出一个说,诶用户画像对吧,你是一个什么什么样的人,你做过什么什么样的事儿,然后给你做一个总结,所以现在其实还是很热的一个概念,但是现在他可能会有一个问题,就是说大家可能发现真正你看到的那个用户画像。可能他画出来的东西并不是特别的准,对吧,而且就即使是他能够准确的判断出来,诶你是男是女,大家想到这个人口统计学嘛,对吧,那一个最好的一个画像,那肯定就是说能把你的基本信息都能够判断出来,给你打上标签,你是男是女啊,你是哪个年龄段啊,你的教育背景怎么样啊,你你的这个喜喜欢什么样的这个食品,喜欢什么样的商品啊,就这些东西他应该都能给你总结出来啊,但是实际当中大家可能会发现能够总结出来的东西很少,对吧?那大家其实也可以想象得到,为什么呢?其实就还是用户的信息难收集对不对?首先你不能做做这个户口调查,你去让用户填一堆东西,这个体验就太差了,你不能说像有一些冷启动的时候,上来可能最多就是选取一个感兴趣的标签,对吧,像有一些大家可能也看球,或者说你要上一些直播网站的。
09:55
啊,他可能上来之后让你选取,哎,你对篮球感兴趣还是对足球感兴趣啊,勾选一下,这种是有可能的,但是他不可能说上来之后让你填,哎姓名性别啊,年龄对吧,身份证号,这这这是不可能的,这个体验就非常差,所以说如果说收集不到那么多的用户信息的话,呃,那肯定这个效果就不好,对不对,呃,那当然就是更多,现在的做法是我们想要去收集用户的一些上下文信息,或者说还有一些做法就是收集用户的行为数据,对不对,行为数据某种意义上也可以提炼出用户的特征,打标签,所以跟这个其实是相关的,那这一部分我们只是把它放在这里,基于人口统计学,这里说这个用户画像,那现在的用户画像很多也会基于行为数据去做。
10:45
好,那么我们说一下,还是给一些这些概念说出来啊,用户画像到底是干什么呢?它其实就是说企业他会去收集消费者的社会属性啊,基本信息,对不对,然后收集一些生活习惯,消费行为,这就是行为数据了,对吧?基于这些收集到数据,他就可以去完美抽象出一个用户的一个全貌,对不对啊,就是你到底是一个什么样的人,如果这个抽象的比较好的话,他就可以把他感兴趣的那些方向,就是说你在商业当中的那些特点,那些全貌,它都可以提取出来。
11:23
那如果说有这样的一些信息的话,企业是不是就能够有足够多的信信息精准定位自己的客户群啊,然后他就可以给你做推荐,给你做营销,对不对,而而且你也可以感觉得到,就是诶诶他还真知道我想要什么样的东西啊,就如果说这些东西做得好的话,可以说这就是我们整个这个可以说是一个大数据分析的一个根基,你可以完美的抽象出一个用用户的全貌。如果做到这一点,这就是我们所说的所谓的大数据比你更懂你对不对,就是有可能到那个时候你自己都不知道,诶,我有什么样的特点,我喜欢什么样的东西,但是就是你的行为是没有办法去,没有办法去去隐藏的,对吧?没有办法去掩盖的就是通过这些大量数据收集和分析之后,他可以完美的提炼出来说诶我知道,你不要否认你就是这样的人,你就会喜欢我推推给你的东西,如果做到这一点的话,那真的是你会发现他比你自己还还了解你自己,对吧?啊,这其实就是我们大数据一个非常理想的一种应用状态,当然现在可能这一块就是应用起来,这里给大家看一个例子吧,呃,这个大家看到,这是一个喜马拉雅的那个APP,对吧?啊,这是我从我的一个朋友他的他的这个朋友圈截出来的图啊,这是他2018年年终的时候,大家看到很多这个。
12:55
APP是不是都会做一个这样的总结啊,呃,大家看喜马拉雅这样的一个音频,这样的一个网站,他是不是也会对用户去做一个画像,然后试着给用户做一些推荐啊,他是不是就基于画出来这些给用户贴上的标签,这些画像要去做推荐,那么大家可以看一下啊,他给的这个画像或或者说这些给出来的标签是什么东西呢?大家看他其实就是比方说一共听了哪些声音,多少条声音,这是不是就是一个统计数据的收集啊,然后他说诶,你关注什么啊,比方说关注亲子教育,那大家会想到这就是你听过哪些音频,那个物品它有什么标签,是不是我就给你打上一个什么标签啊,对吧,比方说关注亲子教育,然后习惯在下午收听。
13:44
那大家会想到这是不是就是收集的你的上下文信息啊,对吧,一般都是什么时候登录上来去收听收听收集到这个也可以给一个标签,但是大家会看到如果只有这些数据的话,这里边可能比较有用的是哪个呢?大家会想到是不是可能这个像这个标签,这个亲子教育可能还稍微的有用一些,对吧?那这个其实是是跟他听过的物品相关对吧?那这还是跟物品相关的,这个信息推炼出来,其实并不是用户本身的信息,或者说他行为里边提炼出来的画像,所以大家会看到他这里边看到了什么呢?呃,一八年你收听的57张专辑里边,很遗憾没有一张是喜马拉雅为你智能推荐出来的,所以啊,当然了,一方面可能因为我这个朋友他真的是非常有主见对吧,他就是兴趣比较比较杂,他就是就是经常是自己按照自己想要的东西去听的,不是看他的那个推荐的。另外一方面也可以。
14:44
按出来直接基于这些信息去推,是不是推的不太准啊,效果并不太好对不对?呃,那大家其实也就可以看到用户画像,很多企业都在说都在提这个概念,但是实际应用的话,效果那可能是不是还是得依赖你的数据到底能收集到多少对不对,然后我们的那些机器学习算法,我们的这个打标签什么的,才能够起作用,才能够就是精度能够更好啊,这是这个用户画像这一部分的这个内容,所以大家会看到,呃,本来计划给大家可能还有一天的时间,就是再去介绍一下一个简单的用户画像的项目,但是可能这个项目就会很简单,就没有太复杂的东西,因为如果我们没有足够多的数据的话,这个效果肯定也不太好,对不对,那更多的这个企业,特别是小企业,它的用户画像,他做的是什么呢?其实大家看到就是简单的一个比方说统计信息的。
15:44
收集对吧,然后有一些基本的上下文信息的收集,它最后的效果推荐可能没有太多应用,最后可能就是最后年终的时候给你能拿一个画像给你展示出来,对吧,一个一个这个年终总结可能就是这样的一个效果,或者说有时候在国内为什么这个用户画像这个提的比较多呢?大家会想到是不是很多领导会比较喜欢这个东西,因为它是不是很直观的一个东西啊对,你总结出来之后,诶直接给领导一看,能够看到一个比方说六边形,我们的用户都是什么样的用户呢?诶年龄25岁到30岁之间,对吧,然后男性居多,或者女性居多,然后他一般都是什么上班族,或者说他职业是什么样的,诶领导一看这个就非常的明确,非常的有用啊,但是就是说如果实际应用到我们的推荐系统当中,还是依赖于数据和我们的这个算法的,对吧?啊这一部分可能我们就只是提一句,大家知道这个概念就好,好接下来我们。
16:44
另外一部分内容是基于内容的推荐算法,那基于内容跟前面不一样,它的数据来源主要就是物品本身的信息,对不对?好,那么大家回忆一下哦,这就是我们之前讲的这个电影,爱情动作片对不对?呃,这样一个电影,这是它的基本的内容信息,我们拿到这样的信息之后,就可以判断哪两个物品相似对不对,那么接下来我们可以基于相似度的原则,就是用户喜欢了哪一个电影,我们就把相似的电影再推荐给他啊,这就是基于内容的一个推荐,也非常的简单,那他有什么样的特点呢?呃,大家大家注意一下,我们有时候经翅提到这个CB啊。
17:29
就是跟后面那个CF对比对不对,有时候会叫CBCB,其实就是呃,Content based,就是基于内容对不对啊,基于内容它主要根据的数据就是物品的原数据,就是它本身的那些内容信息啊,那当然大家会想到这个物品的原数据我们拿来就直接能用吗?其实往往不是直接拿来就用的,比方说像这个电影啊,它的它的原数据是不是很多很多啊,比方说这个,呃,有有这个电影片名,有有他的这个电影时间长度,有导演,有演员,然后还有内容简介,甚至有可能还有各种各样五花八门的信息,那我们其实可能有些有用,可能有些就没用,对不对,可能有些信息还得做一些处理,所以说我们得基于它基本的原数据,然后要抽取出它内在或者外在的特征值,对不对,有了特征值之后。
18:35
那一个物品它有一组特征,这是不是相当于我们的一个样本点,有了一堆X啊,有了一堆坐标对不对,这是不是就相当于一个向量了。接下来是不是就可以计算它跟别的物品的相似度啊啊,就大家就会想到,就像我们之前提到的,就可以用距离算距离了,对不对啊,那我们这里提到的相似度可能不是距离是什么呢?稍后再给大家讲,然后另外就是说我们拿到这个特征之后怎么去推呢?
19:06
这个其实想法也很简单,假如说我们能够拿到用户的个人信息的话,然后还能拿到物品的信息的话,大家会想到这是不是两边如果能够匹配上,我们直接就可以给他做推荐了,如果说得到这个特征,我们互相可以做这个相似度计算的话,那其实也就是说如果个人的特征向量。他跟这个物品的特征向量比较相似的话,他俩很接近的话,那是不是这个物品就应该这个用户很感兴趣啊,我就应该推荐给他对吧?啊,这一个简单的例子就是大家会想到像电影这个,假如说我们给用户提取出特征打上一个标签啊,他是一个文艺青年,那么另外一个有一个电影,它有一个特征叫文艺片,那么是不是我就应该把这个电影推荐给他啊,这就是一个很简单的想法,当然在这个过程当中,提取特征的过程,这个可能需要用到我们的机器学习算法,也会用到其他一些小特征工程里边的手手段,那另外就是说我们除了这种直接的匹配,是不是还可以最后训练一个模型啊,看看到底是什么样类型的用户,应该喜欢什么样的物品,对吧?这也可以训练模型,所以大家会看,这就把我们之前讲到的东西全部结合起来了,那在实际应用的当中呢,大家会看到啊,就是给物品。
20:35
提取特征打标签的这个过程,提取出来的特征就可以打标签,对吧?这个应用其实在很多网站应用的非常广,而且在像这个电影啊,图书啊,音乐啊,社交网站已经是有很成功的应用了,而且有一些公司,有些网站,它是它是怎么干的呢?他干脆就不用机器学习去提取这些物品里边的信息了,他怎么干,直接找人人工手动打标签,所以大家会想到啊,这就是所谓的人工智能,对不对,对吧,就是人工手动智能啊呃,所以大家会看到就是为为什么他会这么去做。
21:15
那其实就是因为本身可能物品的那个原数据里边能够提取出来的信息,用机器学习算法的话,提取出来信息不太,不太明确,不太好,对不对,所以他他就发发现如果这个成本能够能够去,呃把这个东西hold住的话,我直接去去请很多专业人员给他打上专业的标签,推出来效果还更好,所以很多公司其实他就干脆就直接请人去打标签了,那这种一般就叫做PGC,呃叫什么呢?叫做专家生成的内容对吧?PGC,那同样对应的另外还有一个概念叫UGC,就是用户生成的内容对不对,那对应的就不是专家打标签了,那是什么呢?那其实就是相当于是一个用户的行为数据了,就用户可以给我们的这个物品打一个标签对不对,用户可以给这个物品写一个评论,所以这些东西可以叫做UGC,有些地方把它分到行为数据一类里边。
22:15
但是它的处理方式更多的是接近于我们就是物品的内容的,大家想到是不是跟这个专家标签处理方式应该差不多啊,对吧,所以说我们可以把它归到这一类里边来讲,好,那接下来我们前面提到啊,我们是不是要算一个相似度啊。要提取出特征算哪两个物品相似对不对?相似度根据什么计算呢?之前我们讲的KNN或者k means,算它的这个相似的时候都是用的距离对不对?而且我们一般习惯的是欧式距离,我们前面已经讲到扩展距离的时候,已经是可以扩展到五花八门的距离了,对吧?曼哈顿距离或者LL1距离,L2距离,这些东西大家都可以去随意的去设定,那我们这里在这个推荐系统里边往往用到的是什么距离呢?往往用到的不是直观的这种欧式距离,而是叫做余弦相似度,大家看这个图回忆一下啊,假如说我们在这个空间里边,这是一个空间了,对吧?所以这里边的点是不是它就有三个维度,三个特征啊,XYZ,大家可以理解成三个特征,那么这里边的一个点A,一个点B,大家会想到。
23:34
它的这个特征,它们俩之间的这个,呃,就是差别可以用什么去衡量呢?一种方式是不是直接可以连一条直线,这就是距离对不对?另外一个方式对,大家看到是不是我可以看把它当成两个向量啊,然后中间是不是会有一个夹角,我用这个夹角的余弦是不是就可以衡量它,它到底相似不相似对不对,好那么大家可以看到欧式距离,当然这个大家都已经知道了,是不是它对应的这个坐标,对应的坐标差一减,然后平方和再开根号对不对,欧式距离或者好,那么然后还有一个余线相似度,相似度怎么算,大家还记得吗?
24:21
余弦相似度的计算是不是它是要用两个向量的乘积点积除以向量模长的乘积对不对啊,所以是这样的一个计算公式啊,那么上面这个点击怎么算,向量点击怎么算?哎,这是不是就是我们矩阵里边的那个计算方式对不对?一行乘一列嘛,所以是不是对应坐标乘积,然后求和啊,对应的乘起来,然后加起来就可以了,这是向量的点击,然后下面的这个模长是不是这个更简单啊,是不是就是每一个它里边那个向量,它不是有很多个维度吗?每一个维度的那个值平方和开根号,这是不是就是它的模长啊,这个大家都很熟悉,所以这个欧式距离其实其实也是一个模长,对吧?如果我们把它它俩的这个差,这个距离看成这两个向量的差的话,这是不是他俩的差向量啊,那么我们求欧式距离是不是就是这个差向量的。
25:21
磨长啊,所以这其实是一回事,所以大家回顾一下这些数学里边的定义,好,那这就是我们这个,呃,余弦相似度这样的一个用法和定义啊,那大家可以。思考一个问题,就是为什么我们不用距离而改用余弦相似度,它们的关系就是用余弦相似度有什么好,或者说为什么不再用距离去表达我们这个推荐系统里边的相似程度的这个考量。好,我们先给大家留下这个问题啊,呃,当然了,就是接下来给大家简单的说一下,基于内容,那其实它还有一个分类,就是什么呢?对于不同的物品,不同的物品内容它其实特征是不一样的,比方说对于一般的物品来做特征提取的话,一般就是打标签了,对吧?啊,这个大家都比较熟悉,可以打专家标签,人工人工智能对吧?人工去打,然后也可以用户自定义标签,这就是我们说的UGC,这其实是一个行为数据了,我们也可以认为这是一个内容数据,对不对啊,这也是物品的一个信息,另外还可以降为。
26:32
那这个是我们之后要去提到的一个啊,隐羽翼模型,或者叫隐羽翼标签提取出来,这就是一个也是物品的一个内容,大家也可以认为这是一个物品的内容,对不对,但是它是通过降维分析数据之后提取出来的隐语义的标签,那如果要不是物品是文本信息呢?是新闻呢,是文章呢?它的特征怎么提取呢?这是不是相当于就是关键词啊啊,所以这种提取方式,这相当于就属于自然语言处理了NLP里边的内容了,那它里面用到的方法就是比方说分词语义处理,情感分析,这都属于NLP里边的内容,这个可能我们不详细展开讲啊,然后另外就还可以潜在语义分析,潜在语义分析跟我们讲的这个引语义标签,语义模型其实是比较类似的,都是隐含的特征,对不对啊,所以大家可以先有这样的一个概念。
我来说两句