precision_at_k

假设输出节点是三个, 即对应的是一个三分类问题。假设有10条数据,输出层的结果如下表所示

预测 0 1 2 实际标签
1 3.2901842e-04 6.2009683e-05 9.9960905e-01 2
2 9.3300034e-05 6.3389372e-05 9.9984324e-01 2
3 1.8921893e-04 1.3000969e-04 9.9968076e-01] 0
4 7.2724116e-04 3.1397035e-04 9.9895883e-01 0
5 1.7774174e-03 5.5241789e-04 9.9767011e-01 0
6 1.5353756e-03 3.8222148e-04 9.9808240e-01 2
7 5.0105453e-03 8.7840611e-04 9.9411100e-01 2
8 1.1946440e-04 1.0893926e-04 9.9977165e-01 0
9 4.0907355e-04 2.3722800e-04 9.9935371e-01 0
10 5.0522230e-04 3.5394888e-04 9.9914086e-01 2

来看下k取不同值时,percision_at_k()的结果

tf.metrics.precision_at_k(labels=label_ids, predictions=logits,k=?) k=1 k =2 k=3
结果 0.50 0.45 0.33
计算 第1,2,6,7,10概率最大的标签是2与真实标签一致,所以tp=5.其他的几条虽然最大标签也为2,但与真实标签不一致, fp=5 1-10每一条的数据取概率最大的两个标签,正确的只有一个,另一个是不正确的。tp=10, fp=10。 同k=2, 每条数据的预测值都是正确的只有一个标签, 错误的是两个。故tp=10, fp=20
最终 pk=1=tptp+fp=55+5 p_{k=1}=\frac{tp}{tp+fp}=\frac5{5+5} pk=2=tptp+fp=1010+10p_{k=2}=\frac{tp}{tp+fp}=\frac{10}{10+10} pk=3=tptp+fp=1010+20p_{k=3}=\frac{tp}{tp+fp}=\frac{10}{10+20}

其实吧, 这个指标不太适合来衡量多分类结果(个人愚见, 欢迎指正)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章