• 机器学习中的F1-score


    一、什么是F1-score

    F1分数(F1-score)是分类问题的一个衡量指标。一些多分类问题的机器学习竞赛,常常将F1-score作为最终测评的方法。它是精确率和召回率的调和平均数,最大为1,最小为0。

    F_{1}=2cdot frac{precisioncdot recall}{precision+recall}

    此外还有F2分数和F0.5分数。F1分数认为召回率和精确率同等重要,F2分数认为召回率的重要程度是精确率的2倍,而F0.5分数认为召回率的重要程度是精确率的一半。计算公式为:

    F_{eta }=left (1+eta ^{2} 
ight )cdot frac{precisioncdot recall}{left (eta ^{2}cdot precision 
ight )+recall}

    G分数是另一种统一精确率和的召回率系统性能评估标准,G分数被定义为召回率和精确率的几何平均数。

    G=sqrt{precisioncdot recall}


    二、计算过程

    1. 首先定义以下几个概念:

    TP(True Positive):预测答案正确

    FP(False Positive):错将其他类预测为本类

    FN(False Negative):本类标签预测为其他类标

    2. 通过第一步的统计值计算每个类别下的precision和recall

    精准度(precision):指被分类器判定正例中的正样本的比重

    precision_{k}=frac{TP}{TP+FP}

    召回率(recall):指的是被预测为正例的占总的正例的比重

    recall_{k}=frac{TP}{TP+FN}

    另外,介绍一下常用的准确率(accuracy)的概念,代表分类器对整个样本判断正确的比重。

    accuracy=frac{TP+TN}{TP+TN+FP+FN}

    3. 通过第二步计算结果计算每个类别下的f1-score,计算方式如下:

    f1_{k}=frac{2cdot precision_{k}cdot recall_{k} }{precision_{k}+recall_{k}}

    4. 通过对第三步求得的各个类别下的F1-score求均值,得到最后的评测结果,计算方式如下:

    score=(frac{1}{n}sum f1_{k})^{2}


    三、python实现

    可通过加载sklearn包,方便的使用f1_score函数。

    函数原型:

    sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)

    参数:

    y_true : 1d array-like, or label indicator array / sparse matrix.

    目标的真实类别。

    y_pred : 1d array-like, or label indicator array / sparse matrix.

    分类器预测得到的类别。

    average : string,[None, ‘binary’(default), ‘micro’, ‘macro’, ‘samples’, ‘weighted’]

    这里需要注意,如果是二分类问题则选择参数‘binary’;如果考虑类别的不平衡性,需要计算类别的加权平均,则使用‘weighted’;如果不考虑类别的不平衡性,计算宏平均,则使用‘macro’。

    示例程序:

    from sklearn.metrics import f1_score
    
    y_pred = [0, 1, 1, 1, 2, 2]
    y_true = [0, 1, 0, 2, 1, 1]
    
    print(f1_score(y_true, y_pred, average='macro'))  
    print(f1_score(y_true, y_pred, average='weighted'))  

    分析上述代码,

    对于类0:TP=1,FP=1,FN=0,precision=1/2,recall=1,F1-score=2/3,Weights=1/3

    对于类1:TP=1,FP=2,FN=2,precision=1/3,recall=1/3,F1-score=1/3,Weights=1/2

    对于类2:TP=0,FP=1,FN=2,precision=0,recall=0,F1-score=0,Weights=1/6

    宏平均分数为:0.333;加权平均分数为:0.389

  • 相关阅读:
    随机变量数学期望的一个实例
    Form 对象的集合
    并排两个对象对不齐如何解决
    打开PPT 提示安装,非要取消才能显示PPT
    ATL 工程下添加右击菜单
    uva 10273 Eat or Not to Eat?
    python3根据地址批量获取百度地图经纬度
    <数据挖掘导论>读书笔记4--其他分类技术
    <数据挖掘导论>读书笔记6关联分析的高级概念
    <数据挖掘导论>读书笔记5关联分析的基本概念和算法
  • 原文地址:https://www.cnblogs.com/yucen/p/9912063.html
Copyright © 2020-2023  润新知