00:00
我们既然已经有各种各样的推荐系统了,最后我们还要把它混合在一起,我们可能有不同的模型,不同的算法,那什么样的推荐系统才是好的推荐系统呢?这是不是就要求我们有一个评测方式了啊?那首先在提这一部分方式之前,先回顾一下什么样的推荐系统是好的推荐系统呢?是不是前面我们提到过的让三方共赢啊,那这样的三方共赢其实还只是一个概念,我们是不是应该有具体的评测指标,把它数字化、具体化好,那么我们用什么样的指标,什么样的方式呢?首先我们先介绍一下具体的推荐系统的实验方法。推荐系统如果要去做评测,要去做考察,怎么样去实验,呃,评价怎么样去实验,有这么几种方式,第一种最常见的离线实验,呃,大家可以想到离线实验是怎么去。
01:00
做呢,其实很简单,就是把我们已经能够拿到的数据作为我们的训练数据,然后对应的要生成训练数据和测试数据。然后我们要做的书事情是什么呢?是在训练数据上,我们一般把它叫做训练集,稍后这个概念会给大家再具体介绍啊,这里大家先提一句,在训练集上去把我们的模型训练出来,找到诶我们最优化的这种模型,找到最优化的方呃参数,然后是不是就可以利用这样的一个模型去做预测,得到我们的推荐结果了,然后我们再把这个测试集里边的数据带进去,让他在测试集上进行预测,进行测试,然后考察他的测试结果怎么样,这个过程这就是标准的一个离线实验的过程,那大家可以看到这个过程为什么叫离线实验呢?
02:05
就是在整个的过程当中,它都在我们已经获得到的数据上面去实现就可以了,对不对?这一部分是跟我们的业务系统,跟我们实际推荐出来的那一部分结果是不是一点关系都没有啊,只要我们拿到历史数据,拿到我们想要的这些内容,获取到数据集,我们是不是就可以做这个实验了,它完全是离线的啊,所以这一部分内容它就有好处也有坏处,大家会想到它有什么好处呢?对,首先比较方便,它是不是不需要我们单独有一个业务系统供我们做测试啊,我们直接是不是拿到数据集,我们自己跑一跑一跑就可以了,诶,所以这是最方便的一点,只要我们有这个日志采集的一套系统,把我们想要需要的,需要的这个日志数据拿到,然后我们做提取,做清洗,得到数据集。剩下的跟。
03:05
务系统完全没关系了,对吧?啊,这是非常好的一点,所以如果说它这么方便的话,跟业务系统没有关联的话,我们是不是就可以用这一套数据集非常方便快速的去测试大量的不同的算法啊,啊,我们随便改一套算法,是不是马上拿起一套数据又可以算一遍啊,然后就可以比对哪一套算法最后做出来的效果好,呃,所以在我们如果大家想要去做一个算法工程师的话,那可能大量的工作其实是在做这个的,我们改一改算法,然后就去做离线实验对吧?拿到数据集,然后就去做实验,其实就是这样的一个过程啊,那大家会想到它有没有什么问题呢?我们离线实验测出来的这套算法,它的性能好,它的指标表现出来的效果好,它就一定是好吗?啊,大家会想到它是不是也有问题啊,因为它是离线的,它跟我们的实际。
04:05
业务系统是不是还有差别啊,所以我们其实是没有办法直接获取到在业务上真正关注的那些指标的,比方说我们在这里去做测评的时候,可能只能是自己去定义一些指标,定义一些标准,那这些标准我们在实际的业务系统当中关注的是什么呢?我们关注的可能是你真正上线这套推荐系统之后,用户的点击率,点击率会提升多少,对不对,然后它的购买率、转化率会提升多少,然后对应的它的好评率能有多少,可能需要的是这些指标,这些指标我们在本身的,就是本身的这个业务数据里边,其实是比较少的,是拿不到的,对吧?啊,所以这一部分是比较欠缺的,它的真实可靠程度是不是就会打一个折扣啊?啊,所以这是离线实验的一个问题,那大家就会想到,除了离线实验还可以做什么事情呢?
05:05
啊啊,那另外的一种实验方法就是用户调查,这个就更简单了,大家会想到我们就是去找一些真实的用户,然后让他们在我们的推荐系统上做一些任务,完成一些任务,收集他的行为数据对不对,然后再让他回答一些问题,最后我们把这些东西收集起来,问卷和数据都收集起来,最后进行分析,那问卷调查这个,呃,想起来很简单,那么它有什么优点,有什么缺点的,对,优点相对应我们离线实验啊来说的话,这个它的数据是不是非常真啊,就直接拿着用户来做测试了,对不对,非常的真,而且我们通过问卷调查还可以获取到他们的主观感受,对吧,就是给你推出来这个东西到底好好用不好用啊,你感觉我们这个东西跟之前相比有什么差别啊?哎,这些都是可以直接获取到第一手资料的,这个是非趁的真实可靠,那它有什么问题呢?
06:05
他的问题其实很简单,就是既然是用户调查,那你要找到靠谱的这些用户,这是不是比较难啊,啊就像刚才有些同学说的,可能用户就会瞎填了,你如果想要找到靠谱的用户,这个需要的成本是不是比较高,而且你可能找到的用户数量可能也有限,对不对,我们作为一个测试系统,如果要完整要上线做这个测评的话,如果这个用户数量比较少,样本比较少的话,是不是它的可靠程度也会降低啊,诶所以这也是我们大家能想到的一个问题,好,那接下来还有一种实现方法,就是对应于离线实验,就是我们所谓的在线实验AB测试。什么叫AB测试呢?这这个大家听说过吗?之前没听过是吧?呃,这个测试其实应该就是在推荐系统和呃,整个这个机器学习这一块应用比较广泛的一种方式,它是一种什么方式呢?简单来说,大家可以呃回忆想象一下,大家之前经历过的AB卷考试的时候,应该都经历过AB卷对不对?AB卷什么意思?那就是其实都是要去考试,但是哎,一部分同学做A卷,一部分同学做B卷,有可能内容都完全不一样,对吧?那有可能是内容一样打乱顺序,为了防止作弊啊,那这是AB卷的一个概念,AB测试其实有点类似,什么意思呢?就是说把我们的分推荐系统分成两部分,所以它其实简单的一个想法就是根据一定的规则把用户随机分成两组,然后我们的推荐系统是。
07:56
不是也是两套啊,配合我们的一个分流系统,把用户随机分组之后,让它导流导到我们不同的推荐系统里面去,然后我们就去在线去看,诶,不同的不同组的用户是不是就应用到了不同的推荐系统算法啊,我们就去收集用户的行为数据,然后统计不同的评测指标,最后来统计考察两组推荐系统他们的优劣到底是怎么样的,这就是在线实验的一个过程啊,那这个过程大家会想到它会有什么优缺点呢?首先优点也很明显,是不是它的数据也很真实啊,而且大家会发现它其实是非常非常真实了,真实到什么情况,就跟我们实际上线是一样了,对吧?就是我们实际线的一套系统做了一个导流分流,然后分分成了两套推荐系统而已,所以大家会想到之前我们讲的这个,呃。
08:56
不同的混合方式里边有一个叫做切换混合,是不是就是类似于这种方式啊,啊,所以切换混合更多的是用在AB测试里边啊,那么在这里大家会想到AB测试有什么缺点的,它已经很好了,也是啊,大家会发现它是在线的真实数据,对吧?所有的数据都能收集到,那他有什么问题呢?他的问题其实还是在于,即使用户数据量比较大,我们想要收集他们在线收集他们的行为的话,是不是还是需要经历很长时间,然后用户才会更多的用户才会去点,才会去买东西啊,他的用户行为收集是不是还是需要一定周期的呀。
09:39
这个过程还是比较漫长的,所以大家会想到同样还是数据不可能在短时间收集到的一个过程,这还是需要长期的一个,呃,就是有一个比较长的周期才能够完成完整的一个AB测试,那么大家就会看到,其实各种这个实验方法各有优劣。那实际。
10:03
在一个项目上线,我们推荐系统,新的推荐系统要上线的过程当中,怎么样去做呢?很简单,还是综合在一起啊,大家就会发现,就只要介绍到各有优劣,各有这个特长的这种东西的时候,我们应用的时候往往是不是就要取长补短,把它们综合在一起用啊,哎,所以这个也不例外啊,实验方法怎么样去综合呢?那就是一开始是不是首先先离线实验啊啊,我们先拿到一个数据集,然后你先跑呗,我可以快速的测试大样的算法,先找出表现还不错的这些算法,对吧?我先保证你在我的这个离线数据集上,它跑出来的效果比我之前的呃,推荐算法要要好,首先离线指标要好,这是第一步,然后接下来可能去做一些基本的用户调查,那这个用户调查,可能我不是想要让他就是达到要求说,哎,就直接能看到它的点击率就。
11:03
提升啊,或者怎么样做不到,那我们的目标是什么呢?就是少少量的少范围的用户调查,只要能保证用户体验不比之前差就可以了,对吧,你不要做了一套新的推荐系统出来,推荐的效果好坏两说,结果一变化之后,用户就说,诶你这什么玩意儿啊,推出来的东西这个用户体验非常的差,我就不想用了,一看你这个东西我就不想上这个网站了,那这肯定是不行的,所以我们往往用做用户调查是做这一步,然后剩下的最重要的内容,是不是就是让他真正上线做AB测试啊,利用长期的这种考察,那大家会想到这个时候AB测试就是一套系统,就是我们原有的推荐系统,另外一套是不是就是我们现在要做测试的新的推荐系统啊,同时进行啊,进行这个推荐,同时来收集用户数据,跑一段时间之后,假如说确实他的评测指标,我们收集到的这些信息真正的优于之前。
12:03
已经上线的这套系统,那就做一个切换,把它真正的切上去对吧?那就实现我们的这个推荐系统的改改变和升级了,这就是实际项目当中整体的一个流程,一个结合,对吧?三种离线方式结合在一起的一个过程,好,那这是我们讲到的推荐系统的评测方法,那前面还讲到给大家讲到很多这个评测指标对吧?呃,我们直观讲到的一个是就是有这个,呃,说这个点击率什么的,那实际的推荐系统其实更多的评测指标给出来的是哪些呢?大家看一眼,我们这里列出了一些评测指标,这些评测指标大家其实可以想象得到啊,就是预测准确度,这个是不是很重要的一个评测指标啊,我得看你预测出来到底准不准啊,但是这个东西准不准,到底怎么样去衡量呢?啊,这又得考量。
13:03
诶有设计了对吧,稍后我们再去展开,剩下还有一些就是用户满意度,那这个怎么去去衡量呢?这没没什么好办法问问卷调查了,对吧,这就只能是问卷问卷调查了,然后还有一些指标,比方说覆盖率,覆盖率是什么意思啊,它是表示一个发掘物品长尾的能力,什么叫长尾分布呢?长尾分布就是说在我们比方说一个超市,一个电商里边,大部分的物品是不是应该是属于那种访问不太多,不太热门,然后啊就是访问量,购买量,次数不太少,不太多,次数比较少的那些物品应该是占大多数啊,如果说我们要把它的访问量、购买量这个数量跟商品本身的那个产品的类别数量画出一个图的话,大家会想到它是不是。
14:03
应该是拖着一个长长的尾巴,这样的一个函数图像啊,就是越多的含,呃,那个商品的门类种类,其实对应到的是很少的一部分的,呃,这部分的购买和浏览啊,呃,所以这个覆盖率代表的是什么呢?就是说你不要推荐出来的总是那些热门的,对不对?这个对于推荐系统而言其实不是一个好事儿,对吧?对于商家而言,这也不是一个好事儿,我其实希望的是你能够把我那些比较冷门的,比较小众的产品都给我推出来,对不对,所以这也是一个指标,就是怎么样发发掘我们那个后边那个长长的尾巴。大多数的物品其实是埋藏在那个尾巴里边的啊,这也是现在的这个一个需求,大家可能知道以前为什么不重视这些东西呢?就是因为我不需要了解那些啊,我只要有热门推荐,我把热门的那百分之七八十只要都能卖出去,我就能赚钱就完了呗,对不对?但现在不一样了的需求越来越个性化,而且对于这个商家而言,其实也是,他会发现他利润的增长点越来越体现在那些小众冷门的产品上,往往是那些真正冷门的小众的产品,你把它发掘出来,这个这个销售量增长的潜力是非常的巨大的,你如果只卖那些热门产品的话,可能你的销售量到提升到80%,那就是极致了,因为别的你商品都没有涵盖到嘛,你如果还想再把自己的业绩,再把自己的销售额进一步提升的话,那只有去发掘那个长尾啊,所以这也是一个评测指标,你能不能把那个长长尾巴。
15:43
里边的那些商品,冷门的商品也能够覆盖到,也能够有一定的几率把它推荐出来啊,当然了,这就多样性也是类似的一个概念,但是它考察的不太一样,就是它主要考察的是我每一次给你推荐出来的物品,是不是它都是它的不相似度是不是会比较高,大家有有有些时候会发现有些网站做的不好,就会出现这种情况,我我只是看了一眼,点了一次,甚至是误点了一下,然后他给我推荐出来全是这玩意儿,这个就太烦了,所以多样性也是推荐系统评测的一个重要指标。另外还有就是像惊喜度,那惊喜度这就是说不热门的一些东西啊,我自己都没有想到,我喜欢的东西,你推荐出来我真的喜欢,这是不是一个更加有意义的事情啊,这个是现在很多推荐系统经常提到的一个啊,当然另外就还有一些信任度啊,实时性,健壮性,商业目标,商业目标就就涵盖了一些点击率,转化率。
16:43
啊,这些都是可以量化的一些指标,接下来我们重点给大家想要去介绍的,其实是准确度,准确度怎么去评价呢?就是说我这个推荐出来推到底准不准,这个怎么去评价呢?呃,大家可能就会想到,就是说之后买不买对吧?对,这是这是一种类型啊,看不看对这也是一种类型啊,这这其实跟买不买其实是类似的,对吧?这都相当于是之后用户有没有对应的那个行为对不对啊,这相当于是这是一类的,那在推荐系统里面划分,划分出来是这样的两类,一类是评分预测,也就是说我们能够拿到的数据是什么呢?是用户真正之前就给物品做了一个评分,比方说电影,他之前打过一星到五星,对吧,打过一个评分,比方说那个我们的电商商品,他之前购买了之后有过一个评价,这个评分数据我们拿到,然后我们跟。
17:43
据他已经有的评分数据,去预测一个他没有买过,没有看过的产品的一个评分,如果这个评分高是不是值得推荐啊,如果评分低,是不是这就是他不喜欢的东西,所以这类问题大家会想到我们最后预测,预测出来的是不是就是一个具体的分数啊,那么这样的分数,如果说我们要去考察你预测的准不准的话,一个基本的想法是不是就是说,假如说我已经知道你之前真实的给他打了多少分?
18:18
然后我再把这个数据代入到模型里边,让你去做一个预测,看你预测出来是多少分,我去找一个他们的误差,这是不是就代表你到底预测的准不准啊,诶,这就是一个基本的想法。所以大家可以看到啊,我们这里边的一个预测评分的准确度用一个指标来衡量,什么指标呢?叫做均方跟误差,有一个名字叫rme,或者叫平均绝对误差叫Mae啊,大家看瞬间就来了一个数学公式啊,大家不要直接被吓到啊,我们看一眼它这个公式表示什么意思,大家会看到外面是一个根号,平均方根是不是它是要求求一个平均数什么的平均数呢?平方的平均数对不对,最后再开根号对吧?所以这个根号没什么特别的啊,下面大家看到是里边是除了一个TT的绝对值,那大家想到这个T是表示是不是表示它平分的个数啊对,所以这其实就是求平均值,那上边是不是就是一个平方的和啊,这西格玛是不是求和对,然后里边就是平方什么的,平方呢。
19:30
U,呃,RUUI这个U代表什么呢?U代表user,就是每一个用户,I代表什么呢?代表item,就是每一个物品,所以rir代表RA,代表一个评分,所以RI是不是就是用户U对物品I的一个评分啊?所以RUI代表它的真实评分,然后后边上面加一个小上间号,我们叫它r head这个代表它的预测评分对不对?那么它俩一减是不是就是预测的误差?
20:06
那么大家会想到每一个用户对每一个物品是不是都有可能有一个评分,所以我们是不是把每一个用户对每一个物品的评分都算一个误差平方求和,最后求一个平均数开根号,这是不是就是均方跟误差?那接下来我们再给大家介绍另外一种评测的方法,怎么样去评测呢?大家前面提到了,就是说我们往往要去看的是什么呢?就是说我把它推荐出来之后,其实是要看他到底喜不喜欢,对不对,所以这个指标怎么样去评价呢?也就是在一般的网站里边,我们做推荐,往往推荐出来是一个个性化的推荐列表,推荐出来就是一个列表,并没有具体的一个评分。而我们最后关注的是什么呢?我们最后关注的是我推荐出来的,到底是不是你喜欢的,那到底喜不喜欢,那就可以看你到底。
21:07
五点,你到底给不给好评,或者说你到底买不买,到底看不看,这就是我们的一个思路,那大家会想到在这个过程当中,这里边提了一个概念啊,就是给一个个性化的推荐列表,这种推荐叫做top n推荐,也就是说我把我认为你最喜欢,最有可能喜欢的N个。给你提取出来一个列表推给你啊,那大家就会想到这样的一个top n推荐,我怎么样去评价你推的准不准呢?啊,自然想到的就是这你推出来的到底是不是我想要的啊,所以大家看啊,这里边提出来两个两个概念叫做精确率和召回率,那精确率和召回率又是什么概念呢?给大家举个例子吧,假如一个班有男生80个人,女生20个人,一共100个,现在目标是要找出所有的女生。
22:04
所以大家会想到这个问题,是不是就有点像是说,诶喜欢的是女生,要把女生全推出来,是不是类似于这样一个推荐问题啊,所以我们现在看一看啊,假如说有一个人他挑挑了50个人,所以是不是做了一个推荐列表,是50个人的推荐列表啊,其中有20个人是女生,另外还有30个是不是就是男生啊,把男生也当成女生挑出来了,那现在大家想一想,怎么去评估他这个工作呢?哎,这里给大家提一句,这里就要定义一个T,就是定义四种这个呃,TPFNFPTN,那么这代表的是什么东西呢?这就有了一个矩阵,这个矩阵有些地方管它叫混淆矩阵啊,因为大家一看这个概念就很容易混淆,是不是?首先是TPTP代表什么?TP是true positive,意思就是正确的正类,正确检索到的正类,对于这个机器学习而言,这是一个二分类问题,对于我们的推荐系统而言,就是一个你推荐不推荐的一个问题,它相当于一个二分类,所以它是把它分成了两类,正类、负类。
23:19
那么你如果要有一个预测分类的话,是不是就有可能分队有可能分错啊,所以TP指的是什么?指的是本来是正类,然后你又把它正确分类的这个数量。用在我们的这个例子里边,是不是就是说本来你要挑女生,我挑出来把它挑出来了,而且她确实就是女生,这是不是true positive对吧?TP,所以是不是20个人啊,所以这个填在这里啊,这叫做TP,然后另外对应的就还有一个叫FP,什么叫FP呢?False positive,就是说你挑出来了,你认为是女生,但事实上你挑错了。
24:05
那我们这个例子里边是不是有30个人是男生,但是你把他当成女生挑出来了呀,所以这里是不是FP是30啊好,然后接下来还有FNFN是什么呢?也就是false negative false negative就是说错误分类的父类,父类是男生对不对,也就是说没有挑的,我们是不是认为他是男生,在这个例子里边没有挑的,里边错误分类的,也就是说我会就是把他分到男生里边,但是它实际不是男生,是女生的,我现在要要选的是这一部分,那大家想到我是不是分成男生的50个应该都是男生,是不是里边没有错分的女生啊,所以这里边是不是就是零人啊?然后最后还有一个出na negative,也就是说你没有挑出来的50个人里边到底有多少个是正确的负类,也就是是真正是男生,那是不是50个全是男生啊,所以TN是50,那么所以大家就会想到,那大家认为我们的这个预测准确率是是多少呢?
25:19
呃,大家可能就会想到看怎么算了,对吧?诶大家看一下啊,有几种不同的算法给大家一个,首先最容易想到的一个叫做准确率,什么叫准确率呢?准确率非常简单,就是正确分类的和总共,总共的去做一个比较就可以了,在这个问题里边是什么呢?是不是就是所有的处是不是代表正确分类啊,那处我们这里是不是选出50个人里边有20个是女生,这是不是就是正确分类的20个女生啊?另外是不是每选出的50个都是男生,是不是这也是正确分类的呀?所以这两个是不是都属于正确分类,所以这两个加起来20加50总数是不是一百一除是不是70%的正确分类准确率啊啊,所以大家看这是一个准确率,对于我们推荐系统而言,大家说这个准确率有用吗?可能也有用,但是。
26:19
用用处不大对不对,因为在我们推荐系统这个这种里边,我们一般关心的并不关心他那个男生对吧,你没挑出来的那部分到底有多准,我们并不关心,我们关心的其实就是女生有多准,所以大家看接下来又有一个概念叫做精确率啊,但是大家看这两个中文很接近,英文就差别比较大了啊,一个叫accuracy,一个叫precision,这两个英文不一样,大家看这个precision精确率代表什么呢?它代表的是被。找到的物品里边应该被找到的比例,这个代表什么意思呢?对应到我们这里边,其实就是说我找到了50个女生对不对,然后里边是不是有20个是女生啊,所以我是不是要看你推荐出来的人里边到底有多少个是我真正应该推荐出来的呀?哎,所以大家会想到这这个比例是不是20/50啊,诶,所以大家看这个精确率的算法,就是20除以20加30。
27:30
呃,那这个推荐出来的列表里边应该推荐出来的是不是40%啊,这个就能说明我们推荐的一个好坏了,对不对?然后接下来对应的还有一个概念叫做召回率,什么叫召回率呢?诶,我们从一个角度来看的话,你推了50个,然后里边只有20个是应该被推出来的,那看起来这个工作做的不太好,对吧,只有40%精确率,但是从另外一个角度来讲,大家会想到我这个里边是不是总共就20个女生啊,那是不是我总共值得推荐的就20个啊,我全给你推出来了,难道我的工作做的不好吗?从这个角度讲,是不是我工作做的还是不错的呀,对吧?你总共就20个值得推荐,我推50个,尽管是推了50个,但是你20个,我一个不落,都给你找出来了。
28:25
这个是不是某种意义上我工作做的很好啊,所以从这个意义上讲的话,我们是不是还应该考察。总共一共有多少应该被推荐的,然后我推出多少个来啊,所以另外一种计算的方式是总共有20个应该被推荐,然后我推荐出来20个,那是不是这个比例是100%被推出来啊,那这一个名称我们管它叫做召回率recall啊,这个概念还是比较重要啊,当然如果大家就是对这一方面比较感兴趣,还会遇到一些别的一些概念,Auc啊,或者说其他的一些这个一些评测指标,一些概念,那些评测指标,很多都是基于这几个评测指标来做的,大家感兴趣下去可以去扩展的看一看,那这这两部分精确率,召回率是需要大家掌握的一部分内容,好,所以这就是我们评测指标要做的时候,其实就按照这个来做就可以了。
我来说两句