准确率Accuracy,精确度Precision,召回率Recall,F1值

1.什么是分类准确率?

评价分类器性能的指标一般是分类准确率(Accuracy),其定义是:对于给定的测试数据集,分类器正确分类的样本数和总样本数之比。

对于二分类问题常见的评价指标是精确率(precision)与召回率(recall)。
通常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不正确,四种情况出现的总数分别记作:


  • TP ——将正类预测为正类数(True Positive)
    FN ——将正类预测为负类数(False Negative)
    FP ——-将负类预测为正类
    TN ——-将负类预测为负类数

2.什么是精确率?


精确率定义为:


                      这里写图片描述


3.什么是召回率?

召回率定义为:


                      这里写图片描述


4.什么是F1值?

F1值:是精确率和召回率的调和均值

这里写图片描述


精确率和召回率都高时,F1值也会高。


预测值与实际值的差别:



这里写图片描述

假设原始样本中有两类,其中:

1:总共有 P个类别为1的样本,假设类别1为正例。

2:总共有N个类别为0 的样本,假设类别0为负例。

经过分类后:

3:有 TP个类别为1 的样本被系统正确判定为类别1,FN 个类别为1 的样本被系统误判定为类别 0,显然有P=TP+FN;

4:有 FP 个类别为0 的样本被系统误判断定为类别1,TN 个类别为0 的样本被系统正确判为类别 0,显然有N=FP+TN;



注意:准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低,召回率低、准确率高,当然如果两者都低,那是什么地方出问题了 。一般情况,用不同的阀值,统计出一组不同阀值下的精确率和召回率,如下图:


这里写图片描述

在两者都要求高的情况下,可以用F1来衡量。

### 机器学习评估指标的意义及理想数 #### Accuracy 的意义及其理想 Accuracy 表示分类正确的样本数占总样本的比例。当数据集类别分布较为均衡时,该度量能较好反映模型的整体性能[^1]。然而,在处理不平衡的数据集时,高 Accuracy 并不一定意味着良好的分类效果。 理想的 Accuracy取决于具体应用场景以及业务需求。通常情况下,越接近于 1 越好;但在某些领域(如医疗诊断),即使较低的 Accuracy 如果能够有效识别少数关键案例也可能被认为是可接受的结果。 #### Precision 的意义及其理想 Precision 描述的是被预测为正类别的实例中有多少确实是真正的正例。对于那些误报成本较高的场景来说非常重要,比如垃圾邮件过滤器应该尽量减少正常邮件被错误地标记为垃圾的情况发生[^2]。 同样地,Precision 的最佳取范围也视具体情况而定。一般而言,更高的 Precision 更受欢迎,因为它表明较少数量的真实负例被错判为正例。不过需要注意的是,追求极致高的 Precision 可能会牺牲 Recall 性能。 #### Recall 的意义及其理想 Recall 是指实际属于某类别的对象中有多大比例被成功检测出来。这在漏检代价高昂的任务里尤为关键,例如疾病筛查系统应尽可能多地发现患病个体以避免错过治疗时机[^3]。 理论上讲,完美的 Recall 应等于 1 或者说达到百分之百覆盖所有目标实体。但实际上往往很难做到这一点,因为提高 Recall 往往伴随着 Precision 下降的风险——即更多无关项也会被判别成感兴趣的对象。 #### F1 Score 的意义及其理想 F1 Score 综合考虑了 Precision Recall 两个方面的影响因素,通过调平均的方式给出一个综合评价标准。它特别适用于类别不均匀的情形下衡量二元分类算法的效果[^4]。 由于 F1 Score 同时兼顾到了精确性召回率之间的平衡关系,因此其最大可能也是 1 。这意味着既没有任何假阳性也没有任何假阴性的完美状态。实践中很少见到如此理想化的状况出现,所以应当依据项目特点设定合理的预期水平。 ```python from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score y_true = [0, 1, 1, 0, 1] y_pred = [0, 1, 0, 0, 1] print(f'Accuracy: {accuracy_score(y_true, y_pred):.2f}') print(f'Precision: {precision_score(y_true, y_pred):.2f}') print(f'Recall: {recall_score(y_true, y_pred):.2f}') print(f'F1 Score: {f1_score(y_true, y_pred):.2f}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值