趋近智
将不同推荐器组合在一起最直接且有效的方法之一就是加权混合。其主要原理是独立计算多个模型的预测得分,然后使用线性公式将它们组合成一个统一的得分。这种方法允许你平衡每个底层推荐器的影响,从而利用各自的长处。
假设我们构建了两个独立的推荐器:一个基于内容的过滤模型和一个协同过滤模型。对于任何给定的“用户-物品”对,基于内容的模型会产生一个得分,我们称之为 ,而协同模型会产生另一个得分,。加权混合通过简单的加权平均来组合这些得分。
最终混合得分的公式为:
在这个等式中:
通过调整 ,你可以微调 (fine-tuning)系统以偏向其中一个模型,具体取决于哪种模型在你的特定数据集和目标下表现更好。
这项技术的一个前提是得分归一化。不同模型产生的得分往往处于完全不同的量级。例如,使用余弦相似度的基于内容的模型输出的得分在 -1 到 1 之间(或根据向量 (vector)空间在 0 到 1 之间),而像 SVD 这样的矩阵分解模型预测的评分可能在 1 到 5 之间。
直接组合这些未归一化的得分会使得分范围较大的模型占据不合理的权重 (weight),从而导致 参数 (parameter)失效。为了解决这个问题,必须先将所有模型的得分缩放到一个公共范围,例如 0 到 1。常用的技术是最大最小缩放(Min-Max scaling):
在对基于内容和协同过滤模型的得分进行归一化后,你就可以应用加权混合公式来有效地组合它们。
该图展示了加权混合系统的流程。来自独立内容模型和协同模型的得分首先被归一化到统一量级,然后结合权重参数 生成最终的推荐集。
权重参数 (parameter) 是一个超参数 (hyperparameter),其最优值取决于你的数据和组合的具体模型。不能盲目假设等权重()就是最好的,理想的方法是通过实验来调整这个参数。
为此,你可以从训练数据中留出一部分作为验证集。然后,遍历 的不同取值(例如,从 0.0 到 1.0,步长为 0.1),用每个值构建混合推荐器,并使用 NDCG 或 Precision@k 等指标在验证集上衡量其表现。表现最好的 值就是你应该为最终模型选择的值。
随着权重参数 的变化,验证集上的表现也随之变化。在这个例子中,当 约为 0.6 时,达到了最优表现(最高 NDCG@10),这表明该场景下更偏向基于内容的模型。
假设你已经生成并归一化 (normalization)了两个模型的得分,并将其存储在两个 pandas DataFrame 中:content_scores 和 collab_scores。每个 DataFrame 都有 user_id、item_id 和归一化后的 score 列。
加权组合的一个简单实现如下:
import pandas as pd
# 假设 content_scores 和 collab_scores 已经预先计算并归一化
# DataFrame 示例:
# content_scores = pd.DataFrame({'user_id': [...], 'item_id': [...], 'score': [...]})
# collab_scores = pd.DataFrame({'user_id': [...], 'item_id': [...], 'score': [...]})
# 设置权重
alpha = 0.6
# 合并两个模型的得分
hybrid_scores = pd.merge(content_scores, collab_scores, on=['user_id', 'item_id'], suffixes=('_content', '_collab'))
# 计算加权混合得分
hybrid_scores['hybrid_score'] = alpha * hybrid_scores['score_content'] + (1 - alpha) * hybrid_scores['score_collab']
# 排序以获取针对特定用户的热门推荐
user_id_to_recommend = 101
recommendations = hybrid_scores[hybrid_scores['user_id'] == user_id_to_recommend].sort_values(by='hybrid_score', ascending=False)
print(recommendations.head(10))
这段代码展示了合并和组合得分的简便性。pd.merge 函数对齐 (alignment)了每个“用户-物品”对的得分,使加权求和计算变得非常直观。
加权混合是构建混合系统的有力起点。它实现简单、计算高效,并且通常比单一模型能带来显著的推荐质量提升。然而,它对所有预测都使用单一的静态权重 (weight),这可能并不适用于所有情况。在下一节中,我们将研究可以根据上下文 (context)调整混合策略的动态技术。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•