推荐算法评价指标(ACC、查全率、查准率、F1-Score、ROC、AUC,P-R)

本文详细介绍了推荐系统中常用的评价指标,如准确率、查准率、查全率、F1-Score、ROC曲线和PR曲线,以及它们与混淆矩阵的关系。通过混淆矩阵展示各类指标的计算方法,并讨论了二级指标和三级指标在模型评估中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


推荐系统的评价指标很多,今天介绍:准确率(ACC)、查准率(P精确率)、查全率(R召回率)、F1-score、AUC值,ROC曲线、PR曲线

以上的所有指标都是依托于混淆矩阵的,所以下面简单贴一张混淆矩阵的图吐出来

混淆矩阵

在这里插入图片描述

  以上就是混淆矩阵,其中挨个解释一下表中内容。列表示的是真实值,而行表示预测值,所以列和行的Positive和Negative所表示的含义是不一样的,列的Positive和Negative表示的是真实的正样本和负样本;而行的Positive和Negative表示的是预测出来的是正样本还是负样本

那么TP就很好理解了,其表示的就是本身就是正样本,预测的时候也预测为正样本,从英文表示是True Positive上也是可以明白的。

TP:英文True Positive ,表示本身是正样本,预测也是正样本,预测正确
TN:英文True Negative,表示本身是负样本,预测也是负样本,预测正确
FP:英文False Positive,表示本身负样本,但是预测为正样本,预测错误
FN:英文False Negative,表示本身是正样本,但是预测为负样本,预测错误

总结一下:结合图中也可以看出,绿色对角线表示预测正确的样本,红色表示预测错误的样本。

通常模型的好坏就往往就是从模型的预测结果来判断的,但是由于混淆矩阵里面的都是具体的个数,不够直观,所以一般会考虑对齐的量纲进行一些约束,通过一些方式把他约束到0-1之间这样,所以也就在混淆矩阵的基础上衍生出了,二级指标、三级指标

二级指标

指标名数学表示含义
准确率(ACC) A c c u r a c y ( 准确率 ) = T P + T N T P + T N + F P + F N Accuracy(准确率)=\frac {TP+TN} {TP+TN+FP+FN} Accuracy(准确率)=TP+TN+FP+FNTP+TN预测正确的样本占所有样本的比例,其中预测正确的可能有正样本也可能有负样本。
查全率(精确率Precision) P r e c i s i o n ( 查全率 P ) = T P T P + F P Precision(查全率P)=\frac {TP} {TP+FP} Precision(查全率P)=TP+FPTP预测出的正样本中,真正的正样本占了多少比例。
查准率(召回率Rcall) 查准率 ( 召回率 R ) = T P T P + F N 查准率(召回率R)=\frac {TP} {TP+FN} 查准率(召回率R)=TP+FNTP预测出的真正的正样本占据所有真实正样本的比例。
特异度TNR T N R = T N T N + F P TNR=\frac {TN} {TN+FP} TNR=TN+FPTN预测出的负样本中,真正的负样本占了多少比重

通过二级指标的转换,混淆矩阵的指标就成功转到0-1之间了。但是有一个新的问题出现了,这些二级指标某种意义上有些独立,就好比说查全率P和查准率R来说,当要追求一个较高时,另一个就会降低。所以需要出现三级指标,来通过某种方式,让二级指标中的某几个指标尽量整体最优。

三级指标

F1-Score

F 1 − S c o r e = 2 P R P + R F1-Score=\frac {2PR} {P+R} F1Score=P+R2PR
P就是查全率,R就是查准率。F1-Score综合考虑了这两个指标,输出1表示模型表示最好,0则表示最差。

ROC(AUC)

  首先要知道ROC曲线的横纵坐标是什么
在这里插入图片描述
其中坐标说明如下:

TPR(真正样本率) T P R = T P T P + F N TPR=\frac {TP} {TP+FN} TPR=TP+FNTP
FPR(假正样本率) F P R = F P F P + T N FPR=\frac {FP} {FP+TN} FPR=FP+TNFP

如何理解这两个指标的含义呢?先看个图。
在这里插入图片描述

蓝色的区域是负样本所在的区域,而红色的区域是正样本所在的区域。横坐标可以认为是一些概率值
当我们在做样本预测的时候,会得到一个概率值,我们就是通过这个概率值去判定是否是正样本的。

在判定正负样本的前提是我们需要事先设定一个阈值,只有当预测值大于阈值时,才是正样本
在这里插入图片描述

假设黑色的这条竖线就是我们划定的阈值,那么大于黑色的部分才是正样本,而小于黑色的部分才是负样本,所以我箭头标出的两个实际样本分布重叠的那部分因为大于阈值,所以预测时候被判定为正样本,而实际上他是负样本,这就是FPR假正样本率,而右侧不重叠的地方才是真正样本率。

那么当我们设定一个阈值时就得到一对TPR,FPR,设定不同的阈值就会得到不同的FPR,TPR。然后把素有的点(FPR,TPR)绘制出来,就得到了ROC(下图左上角就是ROC曲线)。
在这里插入图片描述

也可以看下图
在这里插入图片描述
  绿色线就是ROC曲线,ROC曲线和横坐标围成的面积就是AUC。
AUC的物理意义可以理解为不管是以什么阈值划分正负样本,模型对真实样本的整体的区分能力,当为0.5时,表示模型没啥作用,当为1时,表示最好。
在这里插入图片描述

PR曲线

献上图
在这里插入图片描述

横坐标为查准率(Recall),
查全率(精确率Precision)

这是从另一个角度去决定模型的能力,

  1. 查全率决定了模型要尽可能的召回真正的正样本
  2. 而查准率则表示召回的样本不要太多.但是要足够准确.
    所以综合来看,PR曲线就是综合考虑了,模型要尽可能的召回所有的正样本,但又不能预判错误得太多.

通俗的说,有的人捞鱼的时候,为了尽可能的捞到自己想要的小于,这时候就把渔网孔调小,自然小于就会被打上来(Recall变大),但是同时不想要的大鱼也会被打上来(Precision变小).所以P-R曲线就是在综合考虑这个问题.

03-21
### 关于ACC在IT或编程中的含义 #### ACC SUPER标志位 在Java编译器和虚拟机的上下文中,`ACC_SUPER` 是一个重要的标志位。它被引入以解决调用超类方法时语义变化的问题[^3]。具体来说,`ACC_SUPER` 标志用于标记某个类是否按照新的操作码指令 `183` 的语义进行了编译。这使得JVM能够区分该类是在旧版本还是新版本下编译的。 - **历史背景**: 在Java 1.0.2中,`ACC_SUPER` 并未设置也未被识别;而从Java 1.1开始,这个标志始终会被设置并由JVM解析。 - **作用**: 它的主要目的是帮助JVM检测到类文件是否遵循更新后的语义规则,从而确保兼容性和正确执行程序逻辑。 #### 数据结构与算法领域中的潜在关联 虽然上述解释主要涉及Java字节码层面的技术细节,在更广泛的数据结构和算法范畴内,“ACC”可能并不特指某一固定术语。然而如果考虑其他可能性,则可以联想到一些高级编程技巧或者特定场景下的优化策略[^1]。 #### 应用机器学习中的ACC目标筛选 另外值得注意的是,在某些应用场景比如利用共享LSTM网络构建预测模型的过程中提到过“ACC目标”。这里指的是通过应用机器学习技术来实现的目标选取过程[^4]。尽管这里的描述偏向实际工程实践而非理论基础部分,但它展示了另一个维度上关于如何定义以及达成预期成果的例子。 ```python # 示例代码片段展示了一个简单的LSTM模型架构 import tensorflow as tf model = tf.keras.Sequential([ tf.keras.layers.LSTM(64, input_shape=(None, 5), return_sequences=True), tf.keras.layers.Dense(1) ]) ``` 以上Python脚本演示了创建基于TensorFlow框架的一个序列化处理单元(LSTM),其中包含了密集层(Dense Layer)作为输出组件之一。此案例虽不直接提及ACC概念,但体现了现代软件开发过程中融合多种前沿科技的趋势。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值