GeoIMC:融合几何信息的电影推荐算法 2024-06-29 作者 C3P00 引言 推荐系统领域中,矩阵分解技术是协同过滤算法的重要分支。传统的矩阵分解方法通常只考虑用户和物品之间的交互信息,而忽略了用户和物品本身的特征。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.
引言
推荐系统领域中,矩阵分解技术是协同过滤算法的重要分支。传统的矩阵分解方法通常只考虑用户和物品之间的交互信息,而忽略了用户和物品本身的特征。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) 相同的方法生成用户和电影的特征向量。
模型训练
使用
IMCProblem
类初始化 GeoIMC 问题,并设置正则化参数和模型秩。生成推荐结果
使用
Inferer
类初始化推理器,并使用训练得到的模型参数预测用户对电影的评分。模型评估
使用
rmse
和mae
函数计算模型的均方根误差 (RMSE) 和平均绝对误差 (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.