当前位置: 首页 > news >正文

别再死记硬背了!用Python实战案例,5分钟搞懂推荐算法的ACC、F1-Score和AUC

用Python实战案例5分钟搞懂推荐算法的核心评估指标刚接触推荐算法的开发者常被各种评估指标搞得晕头转向——ACC、F1-Score、AUC这些术语听起来抽象难懂公式推导更让人望而生畏。但理解这些指标对优化推荐系统至关重要。本文将带您通过一个电影推荐案例用Python代码直观演示这些指标的计算过程让抽象概念变得触手可及。1. 环境准备与数据加载首先确保安装了必要的Python库pip install scikit-learn pandas matplotlib numpy我们将使用经典的MovieLens数据集来构建一个简单的电影推荐模型。这个数据集包含用户对电影的评分非常适合演示推荐算法的评估指标。import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, f1_score, roc_auc_score, precision_recall_curve # 加载数据这里使用简化版数据集 ratings pd.read_csv(movie_ratings.csv) # 将评分转换为二分类问题喜欢(1)或不喜欢(0) ratings[liked] ratings[rating].apply(lambda x: 1 if x 4 else 0) # 特征工程简单使用用户和电影ID作为特征 X ratings[[user_id, movie_id]] y ratings[liked] # 划分训练集和测试集 X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42) # 训练一个简单的逻辑回归模型 model LogisticRegression() model.fit(X_train, y_train)2. 基础指标准确率(ACC)与混淆矩阵准确率是最直观的评估指标表示模型预测正确的比例。我们先计算模型的准确率y_pred model.predict(X_test) acc accuracy_score(y_test, y_pred) print(f模型准确率: {acc:.2f})但准确率有时会误导我们特别是在数据不平衡时。更全面的评估需要查看混淆矩阵真实\预测正类(1)负类(0)正类(1)TPFN负类(0)FPTNfrom sklearn.metrics import confusion_matrix import seaborn as sns import matplotlib.pyplot as plt cm confusion_matrix(y_test, y_pred) sns.heatmap(cm, annotTrue, fmtd) plt.xlabel(预测值) plt.ylabel(真实值) plt.show()从混淆矩阵可以计算出更多有意义的指标查准率(Precision): 预测为正类的样本中实际为正类的比例查全率(Recall): 实际为正类的样本中被正确预测的比例from sklearn.metrics import precision_score, recall_score precision precision_score(y_test, y_pred) recall recall_score(y_test, y_pred) print(f查准率: {precision:.2f}) print(f查全率: {recall:.2f})3. 综合指标F1-Score与PR曲线查准率和查全率往往此消彼长。F1-Score是两者的调和平均数能更好地评估模型整体表现f1 f1_score(y_test, y_pred) print(fF1-Score: {f1:.2f})PR曲线展示了不同阈值下查准率和查全率的变化关系from sklearn.metrics import precision_recall_curve # 获取预测概率而非硬分类 y_scores model.predict_proba(X_test)[:, 1] precisions, recalls, thresholds precision_recall_curve(y_test, y_scores) plt.plot(recalls, precisions) plt.xlabel(查全率(Recall)) plt.ylabel(查准率(Precision)) plt.title(PR曲线) plt.show()PR曲线越靠近右上角模型性能越好。曲线下面积(AUC-PR)也是一个重要指标。4. ROC曲线与AUC值ROC曲线是评估分类器性能的另一个重要工具展示了不同阈值下真正类率(TPR)和假正类率(FPR)的关系from sklearn.metrics import roc_curve fpr, tpr, thresholds roc_curve(y_test, y_scores) plt.plot(fpr, tpr) plt.plot([0, 1], [0, 1], k--) # 随机猜测的基准线 plt.xlabel(假正类率(FPR)) plt.ylabel(真正类率(TPR)) plt.title(ROC曲线) plt.show() auc roc_auc_score(y_test, y_scores) print(fAUC值: {auc:.2f})AUC值衡量了ROC曲线下的面积完美分类器的AUC为1随机猜测的AUC为0.5。一般来说AUC 0.9: 优秀0.8 AUC ≤ 0.9: 良好0.7 AUC ≤ 0.8: 一般AUC ≤ 0.7: 较差5. 指标选择与模型优化不同的业务场景需要关注不同的指标电商推荐: 更关注查准率(Precision)减少不相关推荐内容推荐: 更关注查全率(Recall)尽量不遗漏用户可能喜欢的内容医疗诊断: 需要平衡查准率和查全率F1-Score更重要优化模型时可以针对性地调整阈值# 找到使F1-Score最大的阈值 f1_scores [] for threshold in thresholds: y_pred_thresh (y_scores threshold).astype(int) f1_scores.append(f1_score(y_test, y_pred_thresh)) best_threshold thresholds[np.argmax(f1_scores)] print(f最佳阈值: {best_threshold:.2f})实际项目中还可以尝试以下优化方法特征工程:加入用户历史行为特征加入电影类型、流行度等特征使用嵌入(Embedding)表示用户和电影模型选择:尝试协同过滤算法使用矩阵分解集成学习方法评估策略:使用交叉验证加入业务指标如点击率(CTR)A/B测试线上表现理解这些评估指标后您就能更有针对性地优化推荐系统而不再盲目调整参数。记住没有放之四海而皆准的最佳指标关键是根据业务需求选择合适的评估标准。
http://www.gsyq.cn/news/1382720.html

相关文章:

  • 别再死记硬背了!用Python+PyTorch从零复现一个感知机,帮你彻底搞懂神经网络基础
  • 别怕梯度消失!用NumPy手搓LSTM反向传播,彻底搞懂门控机制
  • PPG信号分析:时间序列、特征工程与图像表示模型对比与选型指南
  • Unity VR调试三原色:眩晕、漂移、延迟的根因定位与量化修复
  • 用数据说话!盘点2026年冠绝行业的的AI论文工具
  • AI写作辅助平台的合规指南:从文献整理到成稿的合规流程解析?
  • Godot+本地LLM打造轻量级智能桌宠:桌面AI的在场感实践
  • 2026破局信息差!淮北黄金回收到底哪家靠谱?答案更新 - 天天生活分享日志
  • GitHub狂揽23万Stars的OpenClaw:Windows一键部署,30分钟搭建你的私人AI助手
  • 使用Taotoken CLI工具一键配置开发环境,提升团队协作效率
  • Ubuntu CVE漏洞修复实战:从识别到验证的完整链路
  • Claude Code用户如何通过Taotoken解决API调用不稳定与Token不足问题
  • 从状态机到动画切换:用Godot 4.2.2给你的桌宠注入‘灵魂’(附完整项目源码)
  • AMD GPU驱动里,你的3D渲染命令是怎么被Linux内核“排队”执行的?
  • Godot PCK文件解析原理与实战:从结构拆解到解包工具开发
  • Taotoken API Key管理与访问控制功能实践分享
  • Unity Localization插件深度实践:避坑指南与工程化落地
  • 滤芯焊接设备怎么选?行业老司机分享选型技巧+靠谱厂家推荐(上海君奥自动化) - 宁夏壹山网络
  • Unity开发者能力地图:插件选型的工程化决策指南
  • 舰载机牵引车行驶稳定性控制方法【附方案】
  • 迁移旧项目至Taotoken平台时关于接口兼容性与稳定性的体会
  • UE5崩溃根源解析:驱动、Windows图形栈与内存契约失效
  • 单机自动化系统工程:从单台设备升级到稳定自动运行的完整解析
  • 像素风射击游戏的整数物理与帧锁定设计
  • 3个步骤快速上手:RPFM游戏模组开发完全指南
  • 鞍山本地黄金回收公司实测对比:谁更值得信赖? - 奔跑123
  • 基于被动式FPVS-EEG与轻量级CNN的老年认知障碍早期筛查技术
  • Unity图片优化与UI比例控制实战指南
  • 等保2.0三级Linux服务器整改实战:CentOS与Ubuntu合规配置指南
  • 认准这六家!2026年日照黄金回收本地严选靠谱清单 - 生活测评君