0Pricing
Learn AI with Python · 课时

混合系统与评估指标

结合协同过滤与基于内容的过滤、RMSE、MAE、Precision@K、Recall@K。

混合系统与评估指标 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

为什么使用混合系统

协同过滤难以处理冷启动,而基于内容的过滤容易过度专业化。混合系统将二者结合起来,让每种方法弥补另一种方法的不足,通常比单独使用任何一种方法都更好。

加权组合

最简单的混合方法是使用权重混合得分,并让权重之和为 1。例如,0.6 * CF + 0.4 * CB 更依赖协同信号,同时保留内容信号作为后备方案和多样化来源。

final_score = 0.6 * cf_score + 0.4 * cb_score

调节权重

0.6 / 0.4 的分配只是起点。请在验证集上调节权重:当用户拥有丰富的历史记录时,提高 CF 权重;对于新项目,提高 CB 权重。您甚至可以针对不同用户使用不同的权重。

其他混合策略

  • 加权:混合得分(如上所示)。
  • 切换:根据数据可用性选择 CF 或 CB。
  • 特征组合:将两种信号输入同一个模型。

加权混合最常见,也最容易理解。

评估:两类问题

评估可以分为两个问题:

  • 评分预测:预测评分与实际评分有多接近?使用 RMSE/MAE。
  • 排序质量:正确的项目是否排在前面?使用 Precision@K、Recall@K、NDCG@K。

评分预测的 RMSE

RMSE 衡量预测评分与实际评分之间的平均平方误差,然后对结果开平方。它会重罚较大的预测偏差,是评分准确度的标准指标。

import numpy as np

def rmse(pred, actual):
    return np.sqrt(np.mean((np.array(pred) - np.array(actual)) ** 2))

精确率@K

精确率@K =(前 K 个项目中的相关项目数)/ K。它回答的是:我推荐的 K 个项目中,用户实际喜欢的比例是多少?数值越高,浪费的推荐位置就越少。

def precision_at_k(recommended, relevant, k):
    top_k = recommended[:k]
    hits = len(set(top_k) & set(relevant))
    return hits / k

召回率@K

召回率@K =(前 K 个项目中的相关项目数)/(相关项目总数)。它回答的是:用户会喜欢的所有项目中,我有多少比例展示在了前 K 个位置?

def recall_at_k(recommended, relevant, k):
    top_k = recommended[:k]
    hits = len(set(top_k) & set(relevant))
    return hits / len(relevant) if relevant else 0.0

精确率与召回率的权衡

精确率侧重于确保展示的内容是正确的;召回率侧重于覆盖所有相关内容。推荐系统通常更重视精确率@K,因为用户只能看到较短的列表,所以最前面的几个位置最重要。

用于衡量排序质量的 NDCG@K

NDCG@K(归一化折损累计增益)会奖励将高度相关的项目放在顶部。相关项目排在第 1 位比排在第 10 位的计分更高,因为增益会根据位置进行折损。

NDCG 的工作原理

DCG 将每个项目的相关性除以其排名的对数后求和。NDCG 再将 DCG 除以理想 DCG(完美排序下的 DCG),得到一个 0 到 1 之间的分数,其中 1 表示排序完美的列表。

import numpy as np

def dcg(rels):
    return sum(r / np.log2(i + 2) for i, r in enumerate(rels))

def ndcg_at_k(rels, k):
    ideal = sorted(rels, reverse=True)
    return dcg(rels[:k]) / dcg(ideal[:k]) if dcg(ideal[:k]) else 0.0

快速检查

测试您对评估指标的掌握情况。

回顾

您构建了一个混合推荐系统(例如 0.6 * CF + 0.4 * CB),并学习了它的评估工具集:用于评分准确度的 RMSE、用于检索的精确率@K和召回率@K,以及用于排序质量的 NDCG@K。至此,推荐系统课程结束。下一门课程:MLOps 基础。

常见问题解答

「混合系统与评估指标」课时是免费的吗?

是的 — 「混合系统与评估指标」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「混合系统与评估指标」这节课中我会学到什么?

结合协同过滤与基于内容的过滤、RMSE、MAE、Precision@K、Recall@K。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「混合系统与评估指标」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 协同过滤:基于用户与基于物品
  2. 使用 SVD 进行矩阵分解
  3. 基于内容的过滤
  4. 混合系统与评估指标
← 返回 Learn AI with Python