引言
想要快速体验不同推荐算法的魅力,并构建自己的推荐系统原型?微软 Recommenders 工具的 00_quick_start
目录提供了一系列开箱即用的 Jupyter Notebook 示例,涵盖了从数据准备、模型构建到模型评估的完整流程。
示例概览
00_quick_start
目录下的示例 Notebook 涵盖了多种经典和先进的推荐算法,并使用了不同的数据集和运行环境,具体如下表所示:
示例 | 数据集 | 运行环境 | 描述 |
---|---|---|---|
als | MovieLens | PySpark | 使用交替最小二乘法 (ALS) 预测电影评分,在 PySpark 环境中运行。 |
dkn | MIND | Python CPU, GPU | 使用深度知识感知网络 (DKN) 进行新闻推荐,利用知识图谱信息,在 Python+GPU (TensorFlow) 环境中运行。 |
fastai | MovieLens | Python CPU, GPU | 使用 FastAI 推荐系统预测电影评分,在 Python+GPU (PyTorch) 环境中运行。 |
… | … | … | … |
注意: 表格中只列举了部分示例,完整列表请参考 README.md。
示例详解
下面以 sar_movielens.ipynb
为例,介绍如何使用 Recommenders 快速构建一个简单的推荐系统。
1. 数据准备
该示例使用了 MovieLens 数据集,其中包含用户对电影的评分信息。首先,需要使用 recommenders.datasets.movielens
模块加载数据集。
from recommenders.datasets.movielens import load_pandas_dataframe
# 加载 MovieLens 100k 数据集
df = load_pandas_dataframe(size='100k')
2. 模型构建
该示例使用了简单的推荐算法 (SAR),该算法基于用户历史行为计算物品之间的相似度,并根据相似度进行推荐。
from recommenders.models.sar import SAR
# 创建 SAR 模型
model = SAR(
col_user="userID",
col_item="itemID",
col_rating="rating",
similarity_type="cosine",
time_decay_coefficient=1.0,
time_unit="week",
)
# 训练模型
model.fit(df)
3. 模型评估
模型训练完成后,可以使用 recommenders.evaluation.python_evaluation
模块中的评估指标对模型进行评估。
from recommenders.evaluation.python_evaluation import map_at_k, ndcg_at_k
# 生成推荐结果
top_k = 10
user_ids = df["userID"].unique()
recommendations = model.recommend_k_items(df, user_ids, top_k=top_k)
# 计算评估指标
map_value = map_at_k(df, recommendations, col_user="userID", col_item="itemID", col_rating="rating", k=top_k)
ndcg_value = ndcg_at_k(df, recommendations, col_user="userID", col_item="itemID", col_rating="rating", k=top_k)
print(f"MAP@{top_k}: {map_value:.4f}")
print(f"NDCG@{top_k}: {ndcg_value:.4f}")
总结
微软 Recommenders 提供的快速入门示例可以帮助您快速了解不同推荐算法的原理和使用方法,并构建自己的推荐系统原型。