两种基本的推荐系统框架的比较
User-Based和Item-Based是推荐系统中最基础的两种框架,今天和Claud讨论时,稍微整理了一下二者的关系。目前人们过多强调二者的区别,而忽视原理上的一致,细节无论怎样变化,共同的根源意味着两种框架共同的极限,这是这篇小文的初衷。
Part A. User-Based方法
假设已经知道了用户和条目之间的关系,即如下用户-条目矩阵:
1. 计算用户之间的相似性,可以用下图表达:
如果把用户-条目矩阵记为D,上图可以用一个很简单的公式来表达:
2. 对于特定用户,给他推荐和他相似的用户看过的条目:
上图对应的公式如下:
Part B. Item-Based方法
1. 计算条目之间的相似性,可以用下图表达:
上图对应的公式如下:
2. 对于特定用户,给他推荐和他已经看过的条目相似的条目:
上图对应的公式如下:
结论:
1. 在原理上,User-Based和Item-Based没有任何区别,均对应如下公式:
2. 抑制的噪音不同,在User-Based中,只取最相似的k个用户,并且对用用户看过的条目数进行惩罚(例如:cos相似性),抑制的是用户中的噪音;同理,Item-Based中,抑制的是条目中的噪音。
3. 可以采用不同的存储方式和数据结构,这点地球人都知道,我就不学舌了。
Part A. User-Based方法
假设已经知道了用户和条目之间的关系,即如下用户-条目矩阵:
![]() |
1. 计算用户之间的相似性,可以用下图表达:
![]() |
如果把用户-条目矩阵记为D,上图可以用一个很简单的公式来表达:
![]() |
2. 对于特定用户,给他推荐和他相似的用户看过的条目:
![]() |
上图对应的公式如下:
![]() |
Part B. Item-Based方法
1. 计算条目之间的相似性,可以用下图表达:
![]() |
上图对应的公式如下:
![]() |
2. 对于特定用户,给他推荐和他已经看过的条目相似的条目:
![]() |
上图对应的公式如下:
![]() |
结论:
1. 在原理上,User-Based和Item-Based没有任何区别,均对应如下公式:
![]() |
2. 抑制的噪音不同,在User-Based中,只取最相似的k个用户,并且对用用户看过的条目数进行惩罚(例如:cos相似性),抑制的是用户中的噪音;同理,Item-Based中,抑制的是条目中的噪音。
3. 可以采用不同的存储方式和数据结构,这点地球人都知道,我就不学舌了。