AI内参_65_062_基于隐变量的模型之二基于回归的矩阵分解
你好,我是洪亮杰。
今天我和你分享的主题是基于隐变量的模型之二,基于回归的矩阵分解。
本周我们主要来分享矩阵分解的点点滴滴,这是过去十年里推荐系统中最流行的一类模型。
周一我们讨论了这类方法中最基础的基于隐变量的矩阵模型。
这类模型的优势是显示的对用户和物品信息中的隐含结构进行建模,从而能够挖掘更加深层次的用户和物品关系。
矩阵分解的流行起源于十年前的net felix大赛。
当时各类矩阵分解模型都在实际数据中起到了很好的效果。
今天我们要分享的模型叫做基于回归的隐变量模型,这是在基本矩阵分解的基础上衍生出来的一类模型。
首们先来看看基本矩阵分解模型的潜在问题。
首先我们来回顾一下矩阵分解的基本模型。
假设我们在对用户和物品的评分进行建模,对于每一个用户用一个向量来表达其对于所有可能物品的评分,把所有用户的向量堆积起来就可以得到一个矩阵。
这个矩阵的每一行代表一个用户,每一列代表一个物品,每一个交叉的元素代表某一个用户。
对于某一个商品的评分,对于每一个用户和物品的隐向量都要少于原有的物品数目。
因此,我们也说,矩阵分解的模型实现了降维的目的。
虽然矩阵分解的模型对于挖掘用户和物品的内在联系有比较强的作用,但是这类模型的劣势也十分明显,但一矩阵分解的模阵仅仅是对用户和物品的喜好进行了编码。
我们之前在解释基于内容的推荐系统时说过,对于一个复杂的工业级推荐系统来说,有很多灵感或者直觉都很难仅仅依赖用户和物品的喜好来捕捉到,有大量的信号,无法很好的被融合到这个矩阵分解的模式里。
因此,矩阵分解虽然是不错的独立模型,但在融合多种不同的推荐元素方面表现却很一般。
对于矩阵分解的核心是学习用户的影像量和物品的影像量。
原则上这两类影像量的学习仅能通过训练过程获得什么意思呢?就是说如果在训练集合中有一百个用户两百个物品,那么通过训练我们可以学习到这一百个用户和两百个物品对应的影像量用于以后的预测或者排序。
但我们无法获得新来用户或者新来物品的影像量了。
因为这些用户和物品并不在训练机里,在推荐系统中,这种情况就叫做不能处理冷启动的问题,也就是不能处理冷用户和冷物品。
这个特点是好是坏,取决于具体的应用。
但是在有些应用的场景下,只是灾难性的一种特性。
比如新闻网站推荐文章,一般来说,新闻文章滚动的都很快。
每个随地都可能有新文章涌入,每过几天,整个网站的文章就可能被换掉。
在这样的场景下,直接使用矩阵分解就会有问题。
矩阵分解的基本模型存在这两个问题。
那有没有什么办法可以扩展矩阵分解的形式改善在这两种情况下的处理呢?我们从基于回归的矩阵分解中,就可以找到办法。
基于回归的矩阵分解,其核心思路其实非常简单。
直观矩阵分解不过是定义了一种从用户隐变量和物品隐变量到可以观测到的评分。
这一显变量的产生过程,如果我们掌握了这么一个思路,那么基于回归的矩阵分解就很容易理解了。
首先有一组用户特性和物品特性来表述每一个用户和物品。
这些特性不是隐变量,是显示表达的特性。
用户特性,比如用户的年龄、性别经常出现的特区,已经表达了喜好的类别等物品特性,比如物品的种类描述等等。
这两组显示的特性就是为了解决我们刚才说的第一个问题,矩阵分解无法抓住更多的信号。
而在这里我们明确定义这两组信号,一组来自于用户一组来自的物品,希望能够通过这些信号抓住更多有价值的信息。
解决了这一步后,现在我们有两个独立的看上去不相关的部分,一个是基于矩阵分解的部分。
这一部分是分解一个已知的评分模阵,从而学习到用户和物品的影像量。
另外一个部分就是用户特性和物品特性,暂时还不知道如何与矩阵分解关联的。
基于回归的矩阵分解,假定用户的影像量其实是从用户的显示特性变换而来的。
同理,物品的影像量其实是从物品的显示特性变换而来的。
而这两种变换本质上就是两个回归模型。
就是说我们建立一个从显示特性到影像量的回归模型,使得影像量受到两方面的制约。
从评分矩阵的分解得来的信息和从显示特性回归得来的信息。
这样我们就把这两部分的信息嫁接到了一起,把这两部分信息嫁接到一起的好处就是我们不再怕冷启动了,或者说在有一部分冷启动的情况下,这样的模型可以处理的更好。
原因就是我们使用了显示特性来回归影像量。
对于新用户和新物品而言,我们虽然没有直接得到他们的影像量,但是有这些用户或者物品的显示特性,而这些显示特性可以帮助我们估计到新用户和新物品的影向量。
即使我们并没有他们的交互信息,这就是基于回归的矩阵分解的强大之处。
我们还可以从贝叶斯的角度来理解,基于回归的矩阵分解,把用户的影像量和物品的影像量看作是两个随机变量。
我们可以认为这些随机变量加上了先验概率分布,只不过这个先验概率分布的均值不是我们经常使用的零,而是一个已回归函数的结果为均值的高斯分布。
这个回归函数就是我们有显示特性得到的。
本质上我们认为显示特性的某种变换成为了影像量的先验信息。
本质上我们用户回归的矩阵分解呢,基于回归的矩阵分解,其实就是相当于我们定义了层次的贝叶斯模型,模型的求解就变得更加复杂。
有一种学习这个模型的简单思路。
第一,针对已知的用户和物品,先通过简单的矩阵分解学习到用户和物品的隐变量。
在这个部分里,用户的显示信息并不参与学习。
第二,学习好了,这部分变量以后再来学习。
从显示信息到隐变量的回归部分,这部分基本上可以当做线性回归。
当然,用这种两个阶段的学习流程,并不能保证学习到参数是最优的这仅仅是一种简化的学习部分。
如果走比较正统的学习过程,这样的模型需要采用期望最大化的流程。
也就是说,我们先用一组随机的参数来决定回归的部分学习到最佳的隐向量,然后再根据隐向量更新,回归部分的参数,隐篇幅的原因我们就不展开细节了。
不过即便如此,我们也仅仅能够学习到一个局部解。
今天我为你讲了隐变量模型中基于回归的矩阵分解,一起来回顾一下要点。
第一,我们简要介绍了矩阵分解的一些问题。
第二,我们详细介绍了基于回归的矩阵分解的基本思路,以及这样的模型,如何解决了传统矩阵分解关于冷启动的难题。
第三,我们简要的讲解了如何求解基于回归的矩阵分解里的参数,最后给你留一个思考题,基于回归的矩阵分解的短板是什么?欢迎你给我留言,和我一起讨论。