AI内参_62_059_简单推荐模型之二基于相似信息的推荐模型
你好,我是洪亮杰。
今天我和你分享的主题是简单推荐模型之二,基于相似信息的推荐模型。
这周我们开始讲推荐系统。
周一的文章中,我们聊了一个最基本的推荐模型,基于流行度的推荐模型,这是一种非常简单但有实用的推荐系统的搭建方式,那就是需要我们对每一个物品的流行度有一个估计。
今天我们来看另外一种简单但还有效果的推荐模型,基于相似信息的推荐模型,什么是相似信息的推荐模型呢?相似信息的推荐模型又叫临近模型。
顾名思义,就是我们希望利用临近或者相似的数据点来为用户推荐基近模型的内在假设,是推荐系统中著名的协同过滤。
什么意思呢?就是说我们认为相似的用户可能会有相似的喜好,相似的物品可能会被相似的人所偏好。
于是如果我们能够定义怎么寻找相似的用户或者相似的物品,那么我们就可以利用这些类别的人群云或者物品来对用户进行推荐。
例如,对于一个电影推荐的场景来说,有一个用户a观看了电影战狼二,我们希望根据这个信息来为用户进行推荐。
很显然,如果我们仅仅知道用户a观看过战狼二,这个信息是非常有限的。
但是假设有一个用户b也观看过战狼二,并且最近还观看过红海行动。
那么我们可以根据b的信息来对a进行推荐。
也就是说我们认为用户a也有可能喜欢红海行动。
这里面我们其实经历了这么两个步骤,第一联系用户a和用户b的是他们都看过战狼二。
这就帮助我们定义了a和b是相似用户。
第二我们的假定是相似的用户有相似的观影编好。
于是我们就直接把b的另外一个观看过的电影红海行动拿来推荐给了a这两个步骤其实就很好的解释了。
协同过滤中协同的概念,意思就是相似的用户互海行动,互相帮助过滤。
信息协同过滤。
从统计模型的意义上来讲,其实就是借用数据在数据稀缺的情况下帮助建模掌握这个思路是非常重要的建模手段。
在用户a数据不足的情况下,我们挖掘到可以借鉴用户b的数据。
因此,我们其实是把用户a和用户b聚类到了一起,认为他们代表了一个类型的用户。
当我们把对单个用户的建模抽象上升到某一个类型的用户的时候,这就把更多的数据放到了一起。
刚才我们简单聊了聊什么是基于相似信息的推荐系统。
相信到现在你已经有了一个最基本的认识。
那么我们如何才能够比较系统的定义这样的流程呢?首先问题被抽象为,我们需要估计用户i针对一个没有触碰过的物品j的偏好。
那么接下来只点击购买或者评分等行为。
第一步,我们需要构建一个用户集合,这个用户集合得满足两个标准。
第一,这些用户需要已经触碰过物品j这是与用户i的一大区别。
第二,这些用户在其他行为方面需要与用户i类似。
我们稍后以简要说一下呃,如何构建这个集合。
现在呢我们假设这个集合已经构建好了。
那么接下来的一个步骤就是根据这个相似的用户集,我们可以对物品j进行一个打分。
这个打分的逻辑是这样的。
首先我们已经得到了所有和i相似的用户对j的打分。
那么一种办法就是直接用这些打分的平均值来预估j的评分。
也就是说,如果我们认为这个相似集合都是和用户i相似的用户,那么他们对j的偏好我们就认为是i的偏好。
显此,这是一个很粗糙的做法。
我们可以针对这个直接平均的做法进行两个改动。
第一,采用加权平均的做法。
也就是说和用户i越相似的做户,我们就越倚重这些人对j的偏好。
因此,我们也需要对整个评分进行一个修正。
虽然这个相似集合的人都对j进行过触碰,但是每个人的喜好毕竟还是不一样的。
比如,有的用户可能就习惯性的对很多物品有很强的偏好,因此仅仅是借鉴每个人的偏好,而忽略了这些用户的偏差,这显然是不够的。
所以我们需要对这些评分做这样的修正,就是减去这些相似用户对所有东西的平均打分。
也就是说,我们需要把这些用户本人的偏差给去除掉。
综合刚才说的这两个因素可以得到一个更加合适的打分算法,那就是用户i对物品j的打分来自两个部分,一部分是i的平均打分。
另外一部分是i对于j的一个在平均打分之上的补充打分。
这个补充打分来自于刚才我们建立的相似用户级,是这个相似用户集里。
每个用户对于j的补充打分的一个加权平均权重,依赖于这个用户和i的相似度。
每个用户对于j的补充打分是他们对于j的直接打分减去他们自己的平充打分。
我们刚才讲了一下相似用户协同过滤的一个基本思路。
那么这里面有几个要素需要确定。
第一,我们怎么来定义两个用户是相似的,一种是最简单的方法,就是计算两个用户对于他们都偏好物品的p尔森相关度,这里当然可以换做是其他的相关信息的计算。
具体来说,p尔森相关度是针对每一个两个用户都同时偏好过的物品,看他们的偏好是否相似。
这里的相似是用乘积的形式出现的当两个偏好的值都比较大的时候,乘积也就比较大。
而只有其中一个比较大的时候,乘积就会比较小。
然后p尔森相关度对所有的乘积结果进行加和并且归一化。
第二,当有了用户之间的相关度信息后,我们可以设定一些阈值来筛选。
刚才所说的相关用户集合,另外一种构建整个集合的方法,就是对于每个目标用户,我们绝对可以最多达到前k个相似用户,比如k等于一百或者二百,这也是有效构造相似集合的方法。
最后我们来谈一下刚才所说的加权平均里面的权重问题。
一种权重就是直接使用两个用户的相似度,也就是我们刚计算的皮尔森相关度。
当然这里有一个问题,如果直接使用,我们可能会过分相信有一些相关度高,但自身数据也不多的用户,什么意思呢?比如有一个用户,m可能和目标用户i很相似,但是m自己可能也就偏好过一两件物品。
因此我们可能还需要对相关度进行一个重新加权的过程。
具体来说,我们可以把皮尔森相关度乘以一个系数,这个系数是根据自身的偏好数量来定的。
在协同过滤的历史上,人们很快意识到了,在进行构建推荐的过程中,用户和物品的对称性什么意思呢?也就是说,我们刚才对于用户的讨论,其实完全可以变换到物品中。
具体说来,那就是我们不去构造和用户i相似的用户,而是去构造所有和物品j相似的偏品。
这些相似物品集合必须要满足两点,第一和j相似。
第二,已经和用户i触碰了这里的一个基本的假设。
类似于虽然我不知道用户i对于红海行动的偏好,但我可以去看一看用户对过去看到的电影有哪些。
和红海行动是类似的,我们就可以从那些类似的电影中进行加权平均,取得对红海行动的预测。
今天我为你讲了推荐系统的另外一个基本的形式,基于相似度的协同过滤推荐系统的原理,我们一起来回顾一下要点。
第一,我们简要介绍了整个基于相似度协同过滤的内涵,以及我们这么做的基本假设。
第二,我们详细介绍了如何构造一个基于用户相似度的协同过渡系统。
第二,我们简要的提及了如何构造物品相似的协同过滤系统。
最后给你留一个思考题,协同过滤的一个致命问题是什么?欢迎你给我留言,和我一起讨论。