AI大模型学习
AI博客
原创AI博客
大模型技术博客
AI大模型排行榜
业界大模型评测基准
全球大模型最新评测基准结果
大模型综合能力排行榜
大模型编程能力排行榜
LMSys ChatBot Arena排行榜
Berkeley大模型工具使用能力排行榜
OpenLLMLeaderboard中国站
全球大模型最新评测结果
AI大模型大全
大模型部署教程
2023年度AI产品总结
AI资源仓库
AI领域与任务
AI研究机构
AI数据集
AI开源工具
数据推荐
AI大模型
国产AI大模型生态全览
AI模型概览图
AI模型月报
AI基础大模型
AI大模型工具导航
AI大模型工具导航网站
在线聊天大模型列表
Author Topic Model-Based Collaborative Filtering for Personalized POI Recommendations
Vanessa He
IEEE Transactions on Multimedia
2015-09
1882
2017/04/15 18:28:52
国内外很多旅游类网站都会提供一些旅游地点的攻略、用户上传的照片等。然而从大量原材料中获得有用的信息是十分耗时的,这便导致了个性化的旅行推荐问题收到了越来越多的关注。现有的推荐方法中,协同过滤(Collaborative filtering,CF)虽然很有效,却没法解决数据稀疏性问题和冷启动问题,主题模型(topic model method,TM)对预先定好的种类信息要求较高,所以也不能直接利用。为了解决这些问题,于是本文提出了一种基于作者主题模型的协同过滤方法(an author topic model-based collaborative filtering method,ATCF),以此实现个性化的POI推荐。与现有的基于CF或TM的POIs推荐方法相比,本文提出的ATCF方法通过作者主题模型从文本描述中学习用户偏好,这些文本含有被标注了地理信息的图片,另外,用户相似性是通过学习作者主题模型得到的,而非利用地点共现,这样也解决了冷启动问题。 本文研究贡献: 1、提出ATCF方法,因为标签比GPS轨迹包含了更多关于用户偏好的信息,而方便易得; 2、ATCF方法集中解决传统基于位置协同过滤方法(location-based collaborative filtering,LCF)的稀疏性问题; 3、通过作者主题模型从标签图片中抽取出主题类别; 4、提出一种由粗到精的方法来确定城市级POIs,并匹配用户旅行历史,首先,粗略地通过地理位置标签为城市范围图片进行聚类,然后,精细地利用可视化特征从聚类中确定POIs。 ### **一、由粗到精的POIs和用户旅行历史挖掘(COARSE-TO-FINE POIs AND USER HISTORY MINING)** 数据来源于Flickr.com图片分享网站,共收集了7百万的社交图片数据,其中,79.19%图片被标注了标签,31.94%的图片有地理位置标签,28.34%的图片既有标签也有地理位置标签。但是,用户分享的图片可能存在着噪音,比如说,有的图片的标签被标注的是错误的。于是本文采取了一个简单的策略,在城市级POIs挖掘中,同时使用标签和地理位置标签。(这里的标签通常是用来挖掘用户旅行偏好,实现个性化旅行推荐的;而地理位置标签仅仅表示图片的地理位置。) l表示图片,每个l都有三个属性l={tags,geo-tags,visual}。首先,在所有标签中比较选出带有城市名(比如说,“London”)的图片;然后,使用均值聚类方法(mean-shift clustering),以一个较大的带宽(bandwidth,通常以城市半径均值0.5为标准),处理收集到的所有图片的地理位置标签(geo-tags),从而为城市获得图片集,其中存在噪音的图片被除去,并且我们仅从聚类结果中选择中心接近城市真实位置的聚类。 N
l
表示满足需求的图片数量。τ、g、v分别表示标签tags、地理位置标签geo-tags、图像可视化特征。L={l
1
、l
2
···、l
N
l
}表示一个城市的图片集,T={τ
1
、τ
2
···、τ
N
l
}表示L的所有标签集,G={g
1
、g
2
···、g
N
l
}表示L的所有地理位置标签集,V={v
1
、v
2
···、v
N
l
}表示L的可视化特征。 #### **1、由粗到精的城市级POIs挖掘**  ##### **(1)城市级粗POI聚类(City Level Coarse POI Clustering)** 一组标记了地理位置的图片集L
m
={l
1
、l
2
···、l
N
l
m
},G
m
={g
1
、g
2
···、g
N
l
(m)
}表示地理位置标签集。考虑到噪音数据的存在,本文中认为应该包含足够用户和图片的聚类更为有效,比如说,每个聚类应该包含至少20张图片且上传这些照片的人至少应该有10人,在这样的粗聚类之后,可以得到一个城市的聚类列表C
m
={c
1
,···,c
n
,···,c
N
c
(m)
},这里的N
c
(m)表示X
m
的聚类数,c
n
表示第n个聚类。如图3所示,c
1
-c
3
是POI“大本钟”的3个聚类。 ##### **(2)基于可视化匹配的城市级POIs细化(Visual Matching Based City Level POIs Refinement)** 在粗聚类之后得到的城市聚类列表C
m
={c
1
,···,c
n
,···,c
N
c
(m)
}中,可能来自一个地标的图片被分到了几个聚类结果中,于是,我们需要根据L
m
可视化特征V
m
={v
1
,···,v
l
,···,v
N
l
(m)
}来融合它们。这一细化过程分为两步: **第一步:可视化特征提取和聚类表现(Visual feature extraction and cluster representation)**。SIFT在现有研究论文(详见论文参考文献15/18/29)中被证明在地标图像描述上表现除了较好的结果,于是本文使用SIFT来实现基于可视化特征匹配的聚类融合。首先,为每个图像l
k
抽取128D的SIFT特征;然后,使用词袋(bag-of-words,BoW),通过分层量化,来呈现SIFT描述;最后,每个图像l
k
都通过其BoW直方图h
k
来呈现。 **第二步:聚类融合(Cluster merging)**。假定POIs的总数是N
p
(m),则相应的POIs列表被表示成P
m
={p
1
,···,p
j
,···,p
N
p
(m)
},N
p
(m)≤N
c
(m)。对于每一个p
j
,其位置中心被σ
x
(j)
和σ
y
(j)
表示。为了简化,引入二元矩阵Γ
c,p
(n,j)来表示从c
n
到p
j
的匹配过程,如果c
n
与p
j
匹配,那么Γ
c,p
(n,j)=1,反之为0。 对于每一个p
k
,首先随机抽取一个聚类c
k
来初始化p
k
,然后通过计算p
k
与c
n
的地理距离:,选择其中距离最小的作为p
k
的最佳聚类c
0
:,其中,σ
x
(j)
和σ
y
(j)
是被不断迭代更新的p
k
的中心,ξ
x
(n)
和ξ
y
(n)
是c
n
中心的经度和纬度。 接着,再计算p
k
与c
n
间的可视化相似度:,其中,h
k
和h
n
是在p
k
和c
n
中BoW直方图的平均值。如果, < v
v
,,则更新p
k
={p
k
,c
0
},否则就从剩下的聚类中找到其他的c
0
。 正如在图3中,通过粗聚类得到了6个类C={c
1
,c
2
,···,c
6
},然后,在基于可视化相似性的融合后得到了3个POIs,P={p
1
,p
2
,p
3
},因为根据融合,c
1
-c
3
属于p
1
并描述了“Big Ben”,c
4
-c
5
属于p
2
并描述了“St Paul’s Cathedral”,只有c
6
一个表示“London Tower”并被归为p
3
。 #### **2、由粗到精的用户旅行历史挖掘** N
u
(m)表示在城市X
m
中的用户数,每个用户有一组图像L
i
={l
1
···l
k
···l
N
u
(k)
}。通过大量的观察,我们发现有较大半径的POIs边界上的照片往往会被分到其相邻POI中,为了解决这一问题,本文为了得到准确的旅行历史,充分利用了粗聚类C和分配向量Γ
c,p
,并提出一个由粗到精的匹配方法来挖掘用户旅行历史,主要分为以下两个步骤: **第一步:用户旅行历史粗匹配(Coarse User’s Travel History mapping)** 假定在城市X
m
中有N
p
(m)
个POIs,P
m
={p
1
,···,p
j
,···,p
N
p
(m)
},有N
c
(m)
个聚类,C
m
={c
1
,···,c
n
,···,c
N
c
(m)
}。本文定义了一个二元分配矩阵Γ
u,c
来记录从用户图片到聚类的匹配,如果Γ
u,c
(i,n)=1,则表示至少有一个图像L
i
属于C
n
:  γ(k,n)=1表示第k个图像l
k
属于c
n
。γ(k,n)是被图像l
k
和粗聚类之间的地理位置距离所决定的:   其中,g
x
(k)
和g
y
(k)
是l
k
的经度和纬度,ξ
x
(t)
和ξ
y
(t)
是c
t
中心的经度和纬度。 本文中引入一种基于ε-ball的如式(7)所示的约束,以此来确保只有当图片属于特定POI时才被应用于旅行推荐。当l
k
和C
m
之间的所有距离d(k,t)都大于ε时,我们认为l
k
是与这个城市的任何POI都是不相关的。然后,我们再通过设定距离为∞,将l
k
从旅行历史中移除:  **第二步:用户旅行历史细匹配(Refined User’s Travel History Mapping)** 假定在城市X
m
中有N
p
(m)
个POIs,P>(m)个POIs,P
m
={p
1
,···,p
j
,···,p
N
p
(m)
},有N
c
(m)
个聚类,C
m
={c
1
,···,c
n
,···,c
N
c
(m)
}。用户旅行历史细匹配的基本观点就是属于一个POI的所有聚类中,如果用户至少有一个图像是来自于这些聚类中,那么就认为用户到访过这个POI。于是,本文定义Q
m
(i)
={q
1
(i)
,···,q
j
(i)
,···,q
N
q
(m)
(i)
},表示用户u
i
的旅行历史。当q
j
(i)
=1时表示用户u
i
到访过p
j
,q
j
(i)
=0时表示用户u
i
不曾到访过p
j
。 对于每一个p
j
,q
j
(i)
计算如下:  其中,Γ
u,c
(i,n)表示从u
i
到c
n
的匹配,Γ
c,p
(n,j)表示从c
n
到p
j
的匹配。 ### **二、作者主题模型学习(AUTHOR TOPIC MODEL LEARNING)** ATM(AUTHOR TOPIC MODEL,作者主题模型)LDA(latent Dirichlet allocation,隐狄利克雷分布)的扩展,通过考虑作者信息来建立文档。LDA和ATM的图模型如下:  其中,阴影变量表示观测变量,未被阴影的变量表示隐变量,箭头表示变量与面板间的条件依赖。LDA模型仅仅发现文档表达了什么主题,而ATM模型w
i
与作者x
i
和主题z
i
这两个隐变量有关。 **1、ATM术语(Terminologies of ATM)** @**词库V**表示N
d
个标签{1,2,···,N
d
}; @**单词w
i
**∈{1,2,···,N
d
},表示图片的一个标签,图片的每个标签都是与V中一一匹配的; @**文档d**表示一个图片的标签集τ
i
,一个用户有N
f
个图片,那么该用户就有N
f
个文档; @**作者a
d
**表示上传了文档d的某个用户。 **2、ATM数据预处理(Data Preprocessing for ATM)** 首先,构建词库V,需要先去除没用的停用词,并且过滤掉没有意义的标签,V中每个标签都有单词w
i
∈{1,2,···,N
d
}; 然后,对于每个作者a
d
,都需要将其标签集τ与词库进行匹配,从而获得每个作者标签下的注解单词w
i
,这样城市的每个标签都有相应的注解单词; 最后,使用稀疏二元矩阵Γ
d,a
、Γ
w,d
和Γ
w,a
来记录是否一个文档属于一个用户,是否一个词属于一个文档,是否一个单词属于一个用户。举列来说,Γ
w,a
(i,j)=1则表示单词w
i
属于用户u
j
。 **3、用户ATM学习(User ATM Learning)** 对于每一个城市X
m
,模型的输入包含两个部分:查询用户u
k
的包含对应标签的图片集L
k
和群用户的包含标签的图片集。 ATM的生成过程主要分为两个步骤: (1)**生成概率模型**。假定作者x与主题的关系服从一个多项式分布,作者-主题分布用θ表示,同时,每个主题z∈{1,2,···,N
z
}与单词的关系也服从于一个多项式分布,主题-单词分布用φ表示。 对于一个单词w,首先均匀的从a
d
中选一个作者x,然后从条件依赖于x的θ中选择一个主题z,接着从条件依赖与主题分布z
i
的φ中选一个单词w。不断重复如上的3个步骤N次,直到产生了文档中的所有单词。 (2)**估计作者-主题模型参数θ和主题-单词分布参数φ**。马尔科夫链蒙特卡罗算法(a Morkow chain Monte Carlo algorithm),通过吉布斯抽样(the Gibbs sampler),从后验分布中抽样θ和φ。 通过ATM,我们可以确定不同主题下每个单词的概率。我们也可以得到所有用户的作者主题矩阵A,A是一个稀疏的N
x
×N
z
的矩阵,N
x
表示作者数量,N
z
表示主题数,A(i,j)表示与作者X
i
有关且属于主题z
j
的单词的次数。 ### **三、基于作者主题模型的协同过滤(AUTHOR TOPIC MODEL BASED COLLABORATIVE FILTERING)** 本文研究的目的是当一个人到一个新城市旅行的时候,我们的推荐系统向用户推荐一些列POIs,为了简化这一描述,定义u
k
为需求用户,x
1
表示u
k
曾经到访过的城市,X
2
表示u
k
计划去旅行的新城市。那么,在传统的协同过滤方法中,首先,生成用户-POI矩阵来记录用户的旅行历史,然后,通过cosine来计算在用户-POI矩阵中两个用户u
k
和u
i
向量的相似性。而在本文研究的基于作者主题模型的协同过滤方法中(ATCF),我们用用户的作者主题模型来衡量用户之间的相似性。具体来看,ATCF主要分为以下两个步骤: #### **1、相似用户检测(Similar User Detection)** 假定U={u
1
、u
2
、···、u
N
u
}表示同时访问过x
1
和x
2
城市的N
u
个用户,A(i)表示x
1
中u
i
的主题分布(i∈{1,2,···,N
u
}),于是用户相似性计算公式如下:  根据计算所得的相似性得分,我们可以对用户进行排序,排序前N
s
个用户(N
s
≤N
u
)被选为作为旅行推荐中的相似用户。 #### **2、POI排序(POI Ranking)** 假定P
2
={p
1
、p
2
、···、p
N
p
(2)
}表示在x
2
城市中的POI集,我们根据在x
2
中N
u
个用户的旅行历史{Q
1
(2)
、···、Q
i
(2)
、···、Q
N
u
(2)
}来对用户进行排序(i∈{1,2,···,N
u
})。对于每一个u
i
,Q
i
(2)
={q
1
(i)
、···、q
j
(i)
、···、q
N
p
(2)
(i)
},如果q
j
(i)
=1则表示u
i
访问过p
j
。于是,通过综合城市中N
u
个POIs的访问信息,我们定义u
k
对p
j
的相关得分计算如下:  然后,根据相关得分S
j
的降序排序,对P
(2)
中的POIs进行排序,我们可以对用户进行排序,从而为用户u
k
推荐TOP排序的POIs。
赏
支付宝扫码打赏
如果文章对您有帮助,欢迎打赏鼓励作者
Back to Top