算法面经总结(3)评价指标

1、常见

实正实负
判正TPFP
判负FNTN

(1)精确率(查准率)

        正确预测为正占全部预测为正的比率

        P=TP/(TP+FP)

(2)召回率(查全率)

        正确预测为正占全部实际为正的比率

        R=TP/(TP+FN)

(3)准确率

        预测正确的占所有样本的比率

       准确率= (TP+TN)/(TP+FN+FP+TN)

(4)Fp分数

        当p=1时候为F1分数,用来平衡P和R之间的关系

        F1=(2*P*R)/(P+R)

(5)假正率(假阳率)

        预测为正例的负例占实际负例样本数量的比例

        假阳率=FP/(FP+TN)

2、评估曲线

(1)ROC曲线

        接收者操作特征曲线(receiver operating characteristic curve),反映了召回率(灵敏度)纵轴和假阳性率(1-特异度)横轴之间的变化关系。Roc曲线越趋近于左上角,预测结果越准确。ROC曲线表现了一般情况下模型泛化能力的好坏。

        如何画曲线:

(2)AUC

        是ROC曲线下面积,越大意味着效果越好。

        原理:给定正样本M个,负样本N个,以及他们的预测概率(0-1)之间,那么AUC的含义就是所有穷举所有的正负样本对,如果正样本的预测概率大于负样本的预测概率,那么就+1;如果如果正样本的预测概率等于负样本的预测概率,那么就+0.5, 如果正样本的预测概率小于负样本的预测概率,那么就+0;最后把统计处理的个数除以M×N就得到我们的AUC

        计算公式

def AUC(label, pre):
  """
  适用于python3.0以上版本
   """
  #计算正样本和负样本的索引,以便索引出之后的概率值
    pos = [i for i in range(len(label)) if label[i] == 1]
    neg = [i for i in range(len(label)) if label[i] == 0]
 
    auc = 0
    for i in pos:
        for j in neg:
            if pre[i] > pre[j]:
                auc += 1
            elif pre[i] == pre[j]:
                auc += 0.5
 
    return auc / (len(pos)*len(neg))



import numpy as np
from sklearn.metrics import roc_auc_score
 
 
def calc_auc(y_labels, y_scores):
    f = list(zip(y_scores, y_labels))
    rank = [values2 for values1, values2 in sorted(f, key=lambda x:x[0])]
    rankList = [i+1 for i in range(len(rank)) if rank[i] == 1]
    pos_cnt = np.sum(y_labels == 1)
    neg_cnt = np.sum(y_labels == 0)
    auc = (np.sum(rankList) - pos_cnt*(pos_cnt+1)/2) / (pos_cnt*neg_cnt)
    print(auc)
 
def get_score():
    # 随机生成100组label和score
    y_labels = np.zeros(100)
    y_scores = np.zeros(100)
    for i in range(100):
        y_labels[i] = np.random.choice([0, 1])
        y_scores[i] = np.random.random()
    return y_labels, y_scores
 
if __name__ == '__main__':
    y_labels, y_scores = get_score()
    # 调用sklearn中的方法计算AUC,与后面自己写的方法作对比
    print('sklearn AUC:', roc_auc_score(y_labels, y_scores))
    calc_auc(y_labels, y_scores)

 (1)AUC为什么对正负样本比率不敏感

         AUC可以看作随机从正负样本中选取一对正负样本中,其中正样本得分大于负样本的概率。计算AUC只需要沿着ROC横轴做积分就可以,由于ROC曲线一般都位于y=x上方(不是,就用1-p反转一下)

 3、时序动作检测

(1)AR-AN曲线

        判断找的temporal proposals全不全

        AR(平均召回)=(所有视频的召回之和)/视频数

        AN(平均每段视频找到的proposal数目)=proposals数目/视频数

(2)mAP,各类别AP的平均值

        tIOU时间上的交并比

        mAP=所有类别的平均精度之和/所有类别的视频数目

 以上内容均来源于各个版主、牛客网总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值