引言
推荐系统领域中,矩阵分解技术是协同过滤算法的重要分支。传统的矩阵分解方法通常只考虑用户和物品之间的交互信息,而忽略了用户和物品本身的特征。GeoIMC 算法将用户和物品的特征信息融入到矩阵分解过程中,并利用黎曼优化方法求解模型参数,从而提升推荐效果。
GeoIMC 算法原理
GeoIMC 算法基于 Jawanpuria 等人 (2019) 的研究成果,将用户和物品的特征信息融入到矩阵分解过程中。以 MovieLens-100K (ML100K) 数据集为例,假设 $X \in R^{m \times d_1}$ 和 $Z \in R^{n \times d_2}$ 分别表示用户和电影的特征矩阵,$M \in R^{m \times n}$ 表示用户对电影的评分矩阵。GeoIMC 算法将评分矩阵建模为 $M = XUBV^TZ^T$,其中 $U \in R^{d_1 \times k}$、$V \in R^{d_2 \times k}$ 和 $B \in R^{k \times k}$ 分别为正交矩阵、正交矩阵和对称正定矩阵。模型参数通过 Pymanopt 工具包进行黎曼优化求解。
数据准备
本示例使用 MovieLens 100K 数据集,并使用与 Xin Dong 等人 (2017) 相同的方法生成用户和电影的特征向量。
# 创建临时目录下载 ML100K 数据集
dp = tempfile.mkdtemp(suffix='-geoimc')
movielens.download_movielens(MOVIELENS_DATA_SIZE, f"{dp}/ml-100k.zip")
with zipfile.ZipFile(f"{dp}/ml-100k.zip", 'r') as z:
z.extractall(dp)
# 加载数据集和特征
dataset = ML_100K(
normalize=normalize,
target_transform='binarize'
)
dataset.load_data(f"{dp}/ml-100k/")
模型训练
使用 IMCProblem
类初始化 GeoIMC 问题,并设置正则化参数和模型秩。
np.random.seed(10)
prblm = IMCProblem(
dataset.training_data,
lambda1=regularizer,
rank=rank
)
# 求解优化问题
prblm.solve(
max_time,
max_iters,
verbosity
)
生成推荐结果
使用 Inferer
类初始化推理器,并使用训练得到的模型参数预测用户对电影的评分。
# 初始化推理器
inferer = Inferer(
method='dot'
)
# 预测评分
predictions = inferer.infer(
dataset.test_data,
prblm.W
)
模型评估
使用 rmse
和 mae
函数计算模型的均方根误差 (RMSE) 和平均绝对误差 (MAE)。
# 准备测试集和预测结果数据框
user_ids = dataset.test_data.get_data().tocoo().row
item_ids = dataset.test_data.get_data().tocoo().col
test_df = pd.DataFrame(
data={
"userID": user_ids,
"itemID": item_ids,
"rating": dataset.test_data.get_data().data
}
)
predictions_df = pd.DataFrame(
data={
"userID": user_ids,
"itemID": item_ids,
"prediction": [predictions[uid, iid] for uid, iid in list(zip(user_ids, item_ids))]
}
)
# 计算 RMSE 和 MAE
RMSE = rmse(
test_df,
predictions_df
)
MAE = mae(
test_df,
predictions_df
)
print(f"""
RMSE: {RMSE}
MAE: {MAE}
""")
总结
GeoIMC 算法通过将用户和物品的特征信息融入到矩阵分解过程中,并利用黎曼优化方法求解模型参数,能够有效提升推荐效果。本示例展示了如何使用 Recommenders 工具包实现 GeoIMC 算法,并对模型性能进行了评估。
参考文献
[1] Pratik Jawanpuria, Arjun Balgovind, Anoop Kunchukuttan, Bamdev Mishra. Learning Multilingual Word Embeddings in Latent Metric Space: A Geometric Approach. Transaction of the Association for Computational Linguistics (TACL), Volume 7, p.107-120, 2019.
[2] Xin Dong, Lei Yu, Zhonghuo Wu, Yuxia Sun, Lingfeng Yuan, Fangxi Zhang. A Hybrid Collaborative Filtering Model withDeep Structure for Recommender Systems.
Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence (AAAI-17), p.1309-1315, 2017.