该代码库提供了一系列经典的传统推荐方法,这些方法仅使用评分数据进行预测,以及社交推荐方法,这些方法利用信任/社交信息来缓解评分数据的稀疏性问题。此外,我们还收集了一些其他人实现的经典方法,以方便您使用。
Resnick, Paul等人。"GroupLens:协作过滤网络新闻的开放架构"。1994年ACM计算机支持的协作工作会议论文集。ACM,1994。
Sarwar, Badrul等人。"基于项目的协作过滤推荐算法"。第10届国际万维网会议论文集。ACM,2001。
http://sifter.org/~simon/journal/20061211.html
Mnih, Andriy和Ruslan R. Salakhutdinov。"概率矩阵分解"。神经信息处理系统进展(2008):1257-1264。
Koren, Yehuda。"因子化遇上邻域:多面协作过滤模型"。第14届ACM SIGKDD知识发现和数据挖掘国际会议论文集。ACM,2008。
Koren, Yehuda、Robert Bell和Chris Volinsky。"推荐系统的矩阵分解技术"。计算机42.8(2009)。
Koren, Yehuda。"考虑邻居因素:可扩展且准确的协作过滤"。ACM知识发现和数据交易(TKDD)4.1(2010):1。
Ma, Hao等人。"Sorec:使用概率矩阵分解的社 交推荐"。第17届ACM信息和知识管理会议论文集。ACM,2008。
Ma, Hao、Irwin King和Michael R. Lyu。"学习使用社交信任集成进行推荐"。第32届ACM SIGIR信息检索研究与开发国际会议论文集。ACM,2009。
Jamali, Mohsen和Martin Ester。"Trustwalker:结合基于信任和基于项目推荐的随机游走模型"。第15届ACM SIGKDD知识发现和数据挖掘国际会议论文集。ACM,2009。
Jamali, Mohsen和Martin Ester。"一种用于社交网络推荐的信任传播矩阵分解技术"。第四届ACM推荐系统会议论文集。ACM,2010。
Ma, Hao等人。"具有社交正则化的推荐系统"。第四届ACM国际网络搜索和数据挖掘会议论文集。ACM,2011。
Guo, Guibing、Jie Zhang和Neil Yorke-Smith。"TrustSVD:同时考虑用户信任的显式和隐式影响以及项目评分的协作过滤"。AAAI。第15卷。2015。
Chuxu Zhang、Lu Yu、Yan Wang、Chirag Shah、Xiangliang Zhang。"社交推荐系统的协作用户网络嵌入"。SDM,2017。
Sedhain等人。"Autorec:自编码器遇上协作过滤"。WWW,2015。代码
Kim等人。"用于文档上下文感知推荐的卷积矩阵分解"。RecSys,2016。代码
Liang等人。"因子化遇上项目嵌入:使用项目共现正则化矩阵分解"。RecSys,2016。代码
He等人。"用于具有隐式反馈的在线推荐的快速矩阵分解"。SIGIR,2016。代码
Quadrana等人。"使用分层递归神经网络个性化会话推荐"。RecSys,2017。代码
He等人。"神经协作过滤"。WWW,2017。代码
Ebesu等人。"推荐系统的协作记忆网络"。SIGIR,2018。代码
Fan等人。"社交推荐的图神经网络"。WWW,2019。代码
Chong等人。"用于推荐的高效异构协作过滤无需负采样"。AAAI,2020。代码
我们项目的结构以树形式呈现如下:
推荐系统 # 项目根目录
│ README.md
│ __init__.py
│ .gitignore
|
└───configx # 配置全局参数和超参数
│ │ configx.py
| │
└───data # 存储评分和社交数据
│ │ ft_ratings.txt
| │ ft_trust.txt
| |
│ └───cv # 交叉验证数据
│ │ ft-0.txt
│ │ ft-1.txt
│ │ ft-2.txt
│ │ ft-3.txt
│ │ ft-4.txt
| |
└───metrics # 用于衡量评分预测任务预测准确性的指标
│ │ metric.py
| |
└───model # 传统和社交推荐方法集
│ │ bias_svd.py
│ │ funk_svd.py
│ │ pmf.py
│ │ integ_svd.py
| | item_cf.py
| | item_cf_big.py
| | mf.py
| | social_mf.py
| | social_rec.py
| | social_reg.py
| | social_rste.py
| | svd++.py
| | trust_svd.py
| | trust_walker.py
| | user_cf.py
| |
└───reader # 评分和社交数据的数据生成器
│ │ rating.py
│ │ trust.py
| |
└───utility # 其他常用工具
│ cross_validation.py
│ data_prepro.py
│ data_statistics.py
│ draw_figure.py
│ matrix.py
│ similarity.py
│ tools.py
│ util.py
如果您想更改默认超参数,可以在configx.py
中进行设置。超参数的含义如下:
dataset_name
:数据集的简称,默认值为ft
。
k_fold_num
:交叉验证的折数,默认值为5
。
rating_path
:原始评分数据文件的路径,默认值为../data/ft_ratings.txt
。
rating_cv_path
:评分数据的交叉验证路径,默认值为../data/cv/
。
trust_path
:原始信任数据文件的路径,默认值为../data/ft_trust.txt
。
sep
:三元组中评分和信任数据的分隔符,默认值为
。
random_state
:随机数种子,默认值为0
。
size
:训练集的比例,默认值为0.8
。
min_val
:最小评分值,默认值为0.5
。
max_val
:最大评分值,默认值为4.0
。
coldUserRating
:冷启动用户对项目的评分数量,默认值为5
。
factor
:用户和项目的潜在维度大小,默认值为10
。
threshold
:模型训练的阈值,默认值为1e-4
。
lr
:学习率,默认值为0.01
。
maxIter
:最大迭代次数,默认值为100
。
lambdaP
:用户正则化参数,默认值为0.001
。
lambdaQ
:项目正则化参数,默认值为0.001
。
gamma
:动量系数,默认值为0.9
。
isEarlyStopping
:早停标志,默认值为false
。
result_path
:结果主目录,默认值为../results/