现在的用来做二元分类的数据集是严重非平衡的,我想知道在这种情况下,F1值还适不适用?数据非平衡对F1值有什么样的影响?
2个回答
当然有影响的。
看下图,横坐标是数据中阳性样本的比重,纵坐标是一个随机预测结果对应的F1值,可以看作是baseline。阳性样本的比重不同,baseline变化很大,所以数据的平衡性对F1值影响还是很大的。
代码如下
from sklearn.metrics import f1_score
import numpy as np
import matplotlib.pyplot as plt
fracs, f1s = [], []
for frac in np.linspace(0.01, 0.99, 20):
n = 1000000
n1 = int(n * frac)
n0 = n - n1
true = [1] * n1 + [0] * n0
pred = np.random.randint(0, 2, n)
fracs.append(frac)
f1s.append(f1_score(true, pred))
plt.plot(fracs, f1s)
plt.xlabel('% of positive labels')
plt.ylabel('F1 score of random guess')
plt.show()
谢谢!
-
yangyang
2018-06-26 22:44
关于非平衡数据以及各种metric对应的表现可以看看这篇Facing Imbalanced Data
谢谢!
-
yangyang
2018-06-26 22:45