物理学背景下的推荐与协同过滤的理解

物理学背景的推荐算法与协同过滤

随着个性化推荐技术的发展,各种各样的推荐算法也竞相参与到这片新兴应用领域中进行开荒,一时间百花齐放,其中就有一些基于物理学背景的算法参与其中,本文阐述的是这篇文章在推荐算法上的主要内容,及其与传统的协同过滤算法在形式上的对比。

文章原名为《Solving the apparent diversity-accuracy dilemma of recommender
systems》,要解决的正是当下推荐系统领域炙手可热的问题:怎样平衡推荐的精确度与多样性。作者的专业背景是物理学,曾经做过复杂系统、复杂网络方面的研究,近年来在推荐领域发表过好几篇文章,这一篇发表在著名杂志PNAS上,可以说是对之前工作的一个大汇总。

该文章大致的思路就是把推荐系统中用户与待推荐对象的关系类比为二分图,借用原来研究复杂网络动力系统的一些概念与方法来研究推荐领域中的问题。关于这样的解决思路,我一年多前曾经就作者的另一篇文章作过一些阐述,欲了解细节的可以先看看,看完对主要思想能有比较清晰的理解,本文将侧重于数学方面的推导与比较,不再就细节上过多阐述。

下图是我在稿纸上的推导过程,后面我结合着每一步的推导过程进行说明,每一步以标号标示。

0、这里总括一下最终的推荐方式,等式右边的f是一个用户的收藏向量,取值为0-1,W是一个转移矩阵,等式左边为最终获得的推荐向量,刨除用户已经收藏的对象,其余的按值排序取出前L个,即可视为对该用户的推荐。所以,现在的问题就是,怎么得到W这个矩阵。

1、这里定义用户收藏矩阵为A,维度为u*o,行表示用户,列表示对象,依据文中的说法,这里只考虑取值为0-1的情况,取值为1则表示对应位置的用户收藏了相应的对象,0则不然。

2、这里定义了用户与对象的“度”向量,即对A矩阵的行与列求和。

3、对收藏矩阵作行归一化,在本文,矩阵除以向量的统一意义为该矩阵每一列与该向量对位相除。

4、文章中提出了两种算法,ProbS与HeatS,ProbS比较好理解,算法的详细解释见我之前的文章,这里仅列出其迭代公式。拉丁字母的下标用以表示对象,英文字母的下标用以表示用户。这个迭代式的涵义是两对象之间的影响,或者说是贡献度。

5、经过一番变换之后,可以得到ProbS算法的转移矩阵,这个正是我们在0步里提到的要寻找的转移矩阵。

6、HeatS算法的迭代式与ProbS的类似,只是最后要除的分母不同,从转移矩阵来看,则仅仅只是转置关系。

7、从第0步的对每个用户的推荐过程,我们可以得到对所有用户的推荐公式,其中W可为第5或第6步算出来的转移矩阵。

8、再回顾一下我们熟悉item-based协同过滤(CF)的推荐过程,从矩阵的角度来描述,就是如8式所示,其中mod(A)表示A矩阵各列的模所组成的向量。形式与上面的算法类似,但相乘的顺序不一样,而且这里的W表示的是对象相似度矩阵。

9、这一番变换可以生成跟CF类似的推荐形式,WH就可以看作是CF中的相似度矩阵了(但计算方法不一样)。殊途同归,两种算法就统一到一种形式上去了。但不要试图用数学的方式来解释这个式子,我尝试过,无论如何解释不通,只能从物理的角度来进行描述。原文章中对此没有作数学分析,只是从实验角度来论证算法的有效性。

10、第10步是该文的最终算法,即混合之前的两种算法,得到一个并不太会增加计算消耗的混合推荐算法。跟上面两种算法的介绍类似,我在把迭代式列出来后,又把它转换成矢量运算的形式,即最终结果是两个矩阵的点乘。

除了上述我介绍的算法外,该文还有一部分重要的内容是定义两个精确度指标、两个多样性指标,并在三个数据集上对几种推荐算法的效果进行了对比,结论是:ProbS算法在精确度上表现更好,HeatS算法在多样性上表现更好,而混合式的算法能得到精确度与多样性两全其美的效果,有兴趣的读者可以读读原文。

对于这篇文章,我存留有几点疑问:

1、初始资源(即用户收藏矩阵A)除了0-1,是否可以是别的值,这样rating数据集也可以引入进来?

2、W矩阵为什么不可以多步迭代生成?原文中用资源分配来描述W矩阵的转移作用,从动力学的角度来说,这样的迭代分配可以无限进行下去直到达到一个稳态,但为什么只迭代一次就用作推荐计算的转换矩阵(即对用户收藏矩阵的加权变换),这是何道理?

3、数学上的不可解释性。正如第9步所得到的结果,该算法与CF有异曲同工之处,但CF算法可以从余弦距离的角度加以解释,而你无法从推荐表达式上解释为什么ProbS算法在精确度上表现更好,而HeatS在多样上表现更好。

对以上前两点文中没有作过多的解释,而从第三点来说由于整个推荐算法的有效性并不能从数学上得到解释,而只是通过实验对比结果进行说明,所以对于这两点疑虑,我也只能从实验结果上进行猜测:即以上两步的尝试会导致实验结果变坏。

更新:我实现了两个算法,并做了实验,从简单的观测结果来看,两种算法的TopK推荐结果都差不多,accuracy还可以,diversity没有体现出来。可以到此为止了。

时间: 2024-08-06 12:03:33

物理学背景下的推荐与协同过滤的理解的相关文章

电影推荐之协同过滤

1.基于内容的推荐 对于基于内容的推荐不多赘述,只说下基本的概念,根据用户已经评分且喜欢(评分高)的电影,为用户推荐和他过去喜欢的电影相似的电影,这里的相似就要依据电影的"内容"来计算了,例如电影的类型等等. 利用到评分预测上,就是对于目标用户A和电影M,从A已经评价过的电影中找到与M相似的电影,利用这些电影的评分来预测用户A对M的评分. 2.协同过滤 协同过滤算法主要分为基于用户的协同过滤算法和基于项目的协同过滤算法. 基于用户的协同过滤通俗的来说呢,就是对于待预测的目标用户A及电影

推荐算法-协同过滤推荐算法

layout: post title: "推荐算法-协同过滤推荐算法" date: 2020-4-13 9:00:00 categories: [Algorithm] excerpt: "协同过滤推荐算法简介,参考https://zhuanlan.zhihu.com/p/40463528" 协同过滤推荐算法步骤 1.收集用户偏好 推测用户的喜好就要收集用户的信息,用户收藏的类别,评论,下载,转发这些信息可以数字化,作为用户信息二维矩阵的变量. 2.用户数据的减噪和归

推荐系统介绍:(协同过滤)—Intro to Recommender Systems: Collaborative Filtering

本文试验前期准备: MovieLens  ml-100k数据集 Jupyter notebook themoviedb.org API key     添加python引用 import numpy as np import pandas as pd 进入MovieLens  ml-100k数据存放目录 cd F:\Master\MachineLearning\kNN\ml-100k 读取数据:u.data每行数据分为userid,itemid,rating,时间戳四部分 names = ['u

【Spark机器学习速成宝典】推荐引擎——协同过滤

目录 推荐模型的分类 条目2 条目3 条目4 条目5 条目6 条目7 条目8 条目9 推荐模型的分类 最为流行的两种方法是基于内容的过滤.协同过滤. 基于内容的过滤: 比如用户A买了商品A,商品B与商品A相似(这个相似是基于商品内部的属性,比如"非常好的协同过滤入门文章"和"推荐系统:协同过滤collaborative filtering"比较相似),那么就能将商品B推荐给用户. 协同过滤: 利用的是训练数据是大量用户对商品的评分,即(userID,productI

基于协同过滤的个性化Web推荐

         下面这是论文笔记,其实主要是摘抄,这片博士论文很有逻辑性,层层深入,所以笔者保留的比较多.          看到第二章,我发现其实这片文章对我来说更多是科普,科普吧-- 一.论文来源 Personalized Web Recommendation via Collaborative Filtering(很奇怪via为什么小写,先记住吧) (Candidate)博士研究生:孙慧峰 (Advisor)导师:陈俊亮(院士) (Academic Degree Applied for)

协同过滤推荐算法总结

推荐算法具有非常多的应用场景和商业价值,因此对推荐算法值得好好研究.推荐算法种类很多,但是目前应用最广泛的应该是协同过滤类别的推荐算法,本文就对协同过滤类别的推荐算法做一个概括总结,后续也会对一些典型的协同过滤推荐算法做原理总结. 一.推荐算法概述 推荐算法是非常古老的,在机器学习还没有兴起的时候就有需求和应用了.概括来说,可以分为以下5种: 1)基于内容的推荐:这一类一般依赖于自然语言处理NLP的一些知识,通过挖掘文本的TF-IDF特征向量,来得到用户的偏好,进而做推荐.这类推荐算法可以找到用

协同过滤浅谈

我们来谈谈最经典的推荐算法协同过滤吧,下面是思维导图拙作一副 协同过滤常常被用于分辨某位特定顾客可能感兴趣的东西,这些结论来自于对其他相似顾客对哪些产品感兴趣的分析.协同过滤以其出色的速度和健壮性,在全球互联网领域炙手可热. 与传统文本过滤相比,协同过滤有下列优点: (1)能够过滤难以进行机器自动基于内容分析的信息.如艺术品.音乐; (2)能够基于一些复杂的,难以表达的概念(信息质量.品位)进行过滤; (3)推荐的新颖性. 正因为如此,协同过滤在商业应用上也取得了不错的成绩.Amazon,CDN

探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤(转)

第 2 部分: 深入推荐引擎相关算法 - 协同过滤 本系列的第一篇为读者概要介绍了推荐引擎,下面几篇文章将深入介绍推荐引擎的相关算法,并帮助读者高效的实现这些算法. 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.它以其方法模型简单,数据依赖性低,数据方便采集 , 推荐效果较优等多个优点成为大众眼里的推荐算法“No.1”.本文将带你深入了解协同过滤的秘密,并给出基于 Apache Mahout 的协同过滤算法的高效实现.Apache Mahout 是 ASF 的一个

《推荐系统》--协同过滤推荐

<Recommender System An Introduction>,第二章,协同过滤推荐. 定义 协同过滤推荐方法的主要思想是,利用已有用户群过去的行为或意见预测当前用户最可能喜欢哪些东西或对哪些东西感兴趣.此类型的推荐系统当前在业界广泛使用. 纯粹的协同方法的输入数据只有给定的用户-物品评分矩阵,输出数据一般有以下几种类型: (1)表示当前用户对物品喜欢或不喜欢程度的预测数值: (2)n项推荐物品的列表. 基于用户的最近邻推荐 主要思想 这是一种早期方法,user-based near