机器学习评测标准:AUC

机器学习评测标准:AUC

AUC的解释:

  1. 正样本排在负样本之前的概率
  2. ROC曲线与FP_rate围成的面积【ROC曲线:横坐标是FP_rate(假正率),纵坐标是TP_rate(假负率)】
  3. 仅用于二分类

要求解AUC避免不了要画ROC,实质上只是求出ROC各点的坐标,那如何画ROC曲线呢?

将样本按照预测分数从大到小排列:

sample label predict
1 1 0.9
3 1 0.8
2 0 0.7

1:正样本,0:负样本,predict:属于正样本的概率

从高到低,依次将predict作为阈值threshold,当测试样本的predict>=threshold,则认为是正样本P_ image,反之则认为是负样本N_image。如threshold=0.8时,sample1和sample2是P_image,sample3是N_image;此时,有

对于每个threshold都可得到一个(FP_rate,TP_rate),将这些点连线即可。 

伪代码:

def sort_by_predict():
    return [label, predict]

def get_rate_points():
    # 返回所有的 rate_points
    return (FP_rate, TP_rate)

def get_auc():
    sample_sorted = sort_by_predict()
    rate_points = get_rate_points(sample_sorted)

    (FP_rate, TP_rate) = (0, 0) # 初始化,(FP_rate, TP_rate)为前一个点的值
    for (cur_FP_rate, cur_TP_rate) in rate_points:
        area = (cur_FP_rate - FP_rate) * cur_TP_rate # 当前点和前一个点与横坐标为成的小矩形的面积
        auc += area
        FP_rate = cur_FP_rate
        TP_rate = cur_TP_rate

    return auc

欢迎转载,转载请标明出处。

发布了6 篇原创文章 · 获赞 1 · 访问量 5744

猜你喜欢

转载自blog.csdn.net/langka9/article/details/105050513