关于推荐系统中协同过滤模型的思考

2020-04-20 15:41:47 浏览数 (1)

摘要

来聊聊推荐中的协同过滤思想。

正文

推荐系统,主要研究的是两类对象:用户(user)和物品(item),即给对的用户推荐对的物品。既然对象有两个,那么他们之间的关系通过排列组合就知道是3种,即user-user,item-item和user-item。如果大家对推荐系统不是很了解,可以移步拙作推荐系统从入门到接着入门。

协同过滤,想必大家都听说过吧,这是推荐系统中最为经典的模型之一。她是利用集体智慧的思想来完成个性化的推荐任务。其实,协同过滤就是研究这两个对象(user和item)以及这三种相似性(user-user、item-item和user-item)的算法。

协同过滤可进一步的分为基于近邻的模型和隐因子模型。

① 其中基于近邻的模型主要采用KNN的思想来找完成推荐。她又进一步分为了User based CF和Item based CF。

  • UserCF主要考量的是user-user之间的相似性,首先根据用户对物品的历史行为来找到相似的用户,然后通过跟他相似的用户的偏好来建模目标用户的偏好。
  • ItemCF主要考虑的是item-item之间的相似性,跟User based CF类似,只不过她是根据用户对物品的历史行为来找到相似的物品,然后通过用户所喜欢的物品来推荐相似的物品。

② 其中隐因子模型主要是将用户-物品矩阵编码到同一隐变量空间,其中当属矩阵分解(Matrix Factorization)模型了。

  • MF主要建模的是user-item之间的相似性,即通过将用户-物品矩阵降维到同一低维子空间(即用户和物品处于同一纬度),然后利用内积来衡量用户和物品的相似性,内积越大,表明两者更有可能产出关系。

由此可见,协同过滤主要衡量的是两个对象之间的相似性。这样的思想也符合现实意义:我们在买东西的时候大多数时候都会参考朋友的建议(UserCF);或者看看某个物品跟我们之前喜欢的物品是不是具有某些相同的特质(ItemCF);或者衡量一下这个物品和我们本身的标签是否匹配,比如我们喜欢摇滚类型的音乐,当然摇滚类型的音乐和我们比较搭了(MF)。

事实上,大部分的机器学习算法也都是在探讨相似性的问题。

对于分类任务来说,举个KNN的例子。我们对于一个未标记样本进行分类,首先基于特征来找到跟他相似性较高的样本,然后看看他们大部分属于哪个类我们就把她标记为哪一类。

对于聚类任务来说,比如KMeans算法,她也是基于相似性来形成簇。距离近的样本很容易形成一个阵营,距离远的样本分属不同的阵营。中国有句古话叫物以类聚,人以群分说的也是这个道理。

0 人点赞